A Service Fabric állapotmonitorozásának bemutatása

Az Azure Service Fabric egy olyan állapotmodellt vezet be, amely gazdag, rugalmas és bővíthető állapotértékelést és jelentéskészítést biztosít. A modell lehetővé teszi a fürt állapotának és a benne futó szolgáltatások közel valós idejű monitorozását. Könnyen beszerezheti az egészségügyi információkat, és kijavíthatja a lehetséges problémákat, mielőtt kaszkádolva lennének, és jelentős kimaradásokat okoznának. A tipikus modellben a szolgáltatások a helyi nézetük alapján küldenek jelentéseket, és ezek az információk összesítve teljes fürtszintű nézetet biztosítanak.

A Service Fabric-összetevők ezt a gazdag állapotmodellt használják az aktuális állapotuk jelentéséhez. Ugyanezt a mechanizmust használhatja az alkalmazások állapotjelentéséhez. Ha olyan kiváló minőségű állapotjelentésbe fektet be, amely rögzíti az egyéni feltételeket, sokkal könnyebben észlelheti és kijavíthatja a futó alkalmazás problémáit.

Ezen a lapon talál egy oktatóvideót, amely ismerteti a Service Fabric állapotmodelljét és használatát:

Megjegyzés

Elindítottuk az állapot-alrendszert, hogy megoldjuk a figyelt frissítések szükségességét. A Service Fabric monitorozott alkalmazás- és fürtfrissítéseket biztosít, amelyek teljes rendelkezésre állást, állásidőt és minimális felhasználói beavatkozást biztosítanak. E célok eléréséhez a frissítés konfigurált frissítési szabályzatok alapján ellenőrzi az állapotot. A frissítés csak akkor folytatható, ha az állapot figyelembe tartja a kívánt küszöbértékeket. Ellenkező esetben a rendszer automatikusan visszaállítja vagy szünetelteti a frissítést, hogy a rendszergazdák megoldják a problémákat. Az alkalmazásfrissítésekkel kapcsolatos további információkért tekintse meg ezt a cikket.

Állapottár

Az állapottároló megőrzi a fürt entitásairól szóló, az állapottal kapcsolatos információkat a könnyű lekérés és kiértékelés érdekében. Service Fabric tartós állapotalapú szolgáltatásként van implementálva a magas rendelkezésre állás és a méretezhetőség biztosítása érdekében. Az állapottároló a háló:/rendszeralkalmazás része, és akkor érhető el, ha a fürt működik.

Állapotentitások és hierarchia

Az állapotentitások logikai hierarchiába vannak rendezve, amely a különböző entitások közötti interakciókat és függőségeket rögzíti. Az állapottároló automatikusan létrehozza az állapotentitások és -hierarchiákat a Service Fabric-összetevőktől kapott jelentések alapján.

Az állapotentitások a Service Fabric-entitásokat tükrözik. (Az állapotalkalmazás entitása például megegyezik a fürtben üzembe helyezett alkalmazáspéldánysal, míg az állapotcsomópont entitása egy Service Fabric-fürtcsomóponttal.) Az állapothierarchia rögzíti a rendszerentitások interakcióit, és ez a speciális állapotértékelés alapja. A Service Fabric főbb fogalmait a Service Fabric technikai áttekintésében ismerheti meg. További információ az alkalmazásról: Service Fabric-alkalmazásmodell.

Az állapotentitások és a hierarchia lehetővé teszi a fürt és az alkalmazások hatékony bejelentését, hibakeresését és monitorozását. Az állapotmodell pontos, részletes képet ad a fürt számos mozgó elemének állapotáról.

Állapotentitások. A szülő-gyermek kapcsolatok alapján hierarchiába rendezett állapotentitások.

Az állapotentitások a következők:

  • Fürt. Egy Service Fabric-fürt állapotát jelöli. A fürtállapot-jelentések a teljes fürtöt érintő feltételeket írják le. Ezek a feltételek a fürt több entitását vagy magát a fürtöt érintik. A feltétel alapján a riporter nem tudja leszűkíteni a problémát egy vagy több nem kifogástalan állapotú gyermekre. Ilyen például a fürt felosztásának agya hálózati particionálási vagy kommunikációs problémák miatt.
  • Csomópont. Egy Service Fabric-csomópont állapotát jelöli. A csomópont állapotjelentései olyan feltételeket írnak le, amelyek befolyásolják a csomópont működését. Ezek általában a rajta futó összes üzembe helyezett entitást érintik. Ilyenek például a lemezterületen kívüli csomópontok (vagy más, gépre kiterjedő tulajdonságok, például a memória, a kapcsolatok) és a csomópont leállása. A csomópont entitását a csomópont neve (sztring) azonosítja.
  • Alkalmazás. A fürtben futó alkalmazáspéldány állapotát jelöli. Az alkalmazásállapot-jelentések olyan feltételeket írnak le, amelyek befolyásolják az alkalmazás általános állapotát. Nem szűkíthetők le az egyes gyermekekre (szolgáltatásokra vagy üzembe helyezett alkalmazásokra). Ilyen például az alkalmazás különböző szolgáltatásai közötti végpontok közötti interakció. Az alkalmazás entitását az alkalmazás neve (URI) azonosítja.
  • Szolgáltatás. A fürtben futó szolgáltatás állapotát jelöli. Szolgáltatásállapot jelentések olyan feltételeket írnak le, amelyek befolyásolják a szolgáltatás általános állapotát. A riporter nem tudja leszűkíteni a problémát egy nem kifogástalan állapotú partícióra vagy replikára. Ilyen például egy szolgáltatáskonfiguráció (például port vagy külső fájlmegosztás), amely az összes partícióval kapcsolatos problémákat okoz. A szolgáltatás entitását a szolgáltatásnév (URI) azonosítja.
  • Partíció. Egy szolgáltatáspartíció állapotát jelöli. A partícióállapot-jelentések a teljes replikakészletet érintő feltételeket ismertetik. Ilyen például, ha a replikák száma a célszám alatt van, és ha egy partíció kvórumvesztésben van. A partícióentitást a partícióazonosító (GUID) azonosítja.
  • Replika. Állapotalapú szolgáltatásreplika vagy állapot nélküli szolgáltatáspéldány állapotát jelöli. A replika az a legkisebb egység, amelyről a watchdogok és a rendszerösszetevők jelentést tudnak készíteni egy alkalmazáshoz. Az állapotalapú szolgáltatások esetében a példák közé tartozik egy elsődleges replika, amely nem tudja replikálni a műveleteket a másodpéldányokra és a lassú replikációra. Az állapot nélküli példányok jelenthetik azt is, ha elfogynak az erőforrások, vagy csatlakozási problémákat tapasztalnak. A replika entitást a partícióazonosító (GUID) és a replika vagy példányazonosító (long) azonosítja.
  • DeployedApplication. Egy csomóponton futó alkalmazás állapotát jelöli. Az üzembe helyezett alkalmazásállapot-jelentések az alkalmazásra jellemző feltételeket írják le a csomóponton, amelyek nem szűkíthetők le az ugyanazon a csomóponton üzembe helyezett szolgáltatáscsomagokra. Ilyenek például az olyan hibák, amelyek miatt az alkalmazáscsomag nem tölthető le az adott csomópontra, és problémák merülnek fel az alkalmazásbiztonsági tagok csomóponton való beállításával kapcsolatban. Az üzembe helyezett alkalmazást az alkalmazásnév (URI) és a csomópont neve (sztring) azonosítja.
  • DeployedServicePackage. A fürt egy csomópontján futó szolgáltatáscsomag állapotát jelöli. Egy szolgáltatáscsomagra vonatkozó feltételeket ír le, amelyek nem érintik ugyanazon az alkalmazás ugyanazon csomópontján található többi szolgáltatáscsomagot. Ilyen például egy olyan kódcsomag a szolgáltatáscsomagban, amely nem indítható el, és egy olyan konfigurációs csomag, amely nem olvasható. Az üzembe helyezett szolgáltatáscsomagot az alkalmazásnév (URI), a csomópont neve (sztring), a szolgáltatásjegyzék neve (sztring) és a szolgáltatáscsomag aktiválási azonosítója (sztring) azonosítja.

Az állapotmodell részletessége megkönnyíti a problémák észlelését és kijavítását. Ha például egy szolgáltatás nem válaszol, lehetséges jelenteni, hogy az alkalmazáspéldány nem kifogástalan állapotú. Az adott szinten történő jelentéskészítés azonban nem ideális, mert a probléma nem feltétlenül érinti az alkalmazás összes szolgáltatását. A jelentést a nem megfelelő állapotú szolgáltatásra vagy egy adott gyermekpartícióra kell alkalmazni, ha több információ mutat erre a partícióra. Az adatok automatikusan felszínre kerülnek a hierarchián keresztül, és egy nem kifogástalan állapotú partíció láthatóvá válik a szolgáltatás és az alkalmazás szintjén. Ez az összesítés segít a probléma kiváltó okának gyorsabb meghatározásában és megoldásában.

Az állapothierarchiát szülő-gyermek kapcsolatok alkotják. A fürtök csomópontokból és alkalmazásokból állnak. Az alkalmazások rendelkeznek szolgáltatásokkal és üzembe helyezett alkalmazásokkal. Az üzembe helyezett alkalmazások szolgáltatáscsomagokat telepítettek. A szolgáltatások partíciókkal rendelkeznek, és mindegyik partícióhoz tartozik egy vagy több replika. Különleges kapcsolat van a csomópontok és az üzembe helyezett entitások között. A szolgáltatói rendszerösszetevő, a Feladatátvétel-kezelő szolgáltatás által jelentett nem kifogástalan állapotú csomópont hatással van a telepített alkalmazásokra, szolgáltatáscsomagokra és replikákra.

Az állapothierarchia a rendszer legújabb állapotát jelöli a legújabb állapotjelentések alapján, ami szinte valós idejű információ. A belső és külső figyelők ugyanazon entitásokról jelenthetnek alkalmazásspecifikus logika vagy egyéni figyelt feltételek alapján. A felhasználói jelentések együtt élnek a rendszerjelentésekkel.

Tervezze meg, hogyan jelentheti be és válaszolhat az állapotra egy nagy felhőszolgáltatás tervezése során. Ez a befektetés megkönnyíti a szolgáltatás hibakeresését, monitorozását és működését.

Állapotok

A Service Fabric három állapotállapottal írja le, hogy egy entitás kifogástalan-e vagy sem: OK, figyelmeztetés és hiba. Az állapottárolóba küldött jelentéseknek meg kell adniuk az alábbi állapotok egyikét. Az állapotértékelés eredménye az egyik ilyen állapot.

A lehetséges állapotok a következők:

  • RENDBEN. Az entitás kifogástalan állapotú. Nem jelentek ismert problémákat a gyermekekkel kapcsolatban (ha vannak ilyenek).
  • Figyelmeztetés. Az entitásnak vannak problémái, de továbbra is megfelelően működik. Vannak például késések, de még nem okoznak funkcionális problémákat. Bizonyos esetekben a figyelmeztetési feltétel külső beavatkozás nélkül is kijavíthatja magát. Ezekben az esetekben az egészségügyi jelentések felhívják a figyelmet, és betekintést nyújtanak a folyamatban lévő dolgokba. Más esetekben a figyelmeztetési feltétel súlyos problémává válhat felhasználói beavatkozás nélkül.
  • Hiba. Az entitás állapota nem megfelelő. Meg kell oldani az entitás állapotát, mert az nem működik megfelelően.
  • Ismeretlen. Az entitás nem létezik az állapottárolóban. Ez az eredmény több összetevő eredményeit egyesítő elosztott lekérdezésekből szerezhető be. A csomópontlista lekérése lekérdezés például a FailoverManager, a ClusterManager és a HealthManager lesz; Az alkalmazáslista lekérdezésének lekérése a ClusterManager és a HealthManager szolgáltatásba kerül. Ezek a lekérdezések több rendszerösszetevő eredményeit egyesítik. Ha egy másik rendszerösszetevő olyan entitást ad vissza, amely nem található meg az állapottárolóban, az egyesített eredmény ismeretlen állapotú. Egy entitás nincs tárolva, mert az állapotjelentések feldolgozása még nem történt meg, vagy az entitás törlés után törlődött.

Állapotszabályzatok

Az állapottároló állapotszabályzatokat alkalmaz annak meghatározására, hogy egy entitás kifogástalan állapotú-e a jelentései és gyermekei alapján.

Megjegyzés

Az állapotszabályzatok megadhatók a fürtjegyzékben (fürt- és csomópontállapot-értékeléshez) vagy az alkalmazásjegyzékben (alkalmazásértékeléshez és annak gyermekeihez). Az állapotértékelési kérések egyéni állapotértékelési szabályzatokat is átadhatnak, amelyeket csak az adott értékeléshez használnak.

Alapértelmezés szerint a Service Fabric szigorú szabályokat alkalmaz (mindennek kifogástalannak kell lennie) a szülő-gyermek hierarchikus kapcsolathoz. Ha még az egyik gyermeknek is van egy nem megfelelő állapotú eseménye, a szülő nem megfelelő állapotúnak minősül.

Fürtállapot-szabályzat

A fürtállapot-szabályzat a fürt állapotának és a csomópont állapotának kiértékelésére szolgál. A szabályzat definiálható a fürtjegyzékben. Ha nem jelenik meg, a rendszer az alapértelmezett szabályzatot (nulla tolerált hibát) használja.

A fürt állapotszabályzata a következőket tartalmazza:

  • Fontolja meg aWarningAsError elemet. Meghatározza, hogy a figyelmeztetési állapotjelentéseket hibaként kell-e kezelni az állapotértékelés során. Alapértelmezett érték: false (hamis).

  • MaxPercentUnhealthyApplications. Meghatározza az alkalmazások maximálisan tolerálható százalékos arányát, amely nem kifogástalan lehet, mielőtt a fürt hibásnak minősül.

  • MaxPercentUnhealthyNodes. Meghatározza a csomópontok maximálisan tolerálható százalékos arányát, amely nem kifogástalan lehet, mielőtt a fürt hibának minősül. A nagy fürtökben egyes csomópontok mindig leállnak vagy ki vannak állítva javításra, ezért ezt a százalékos arányt úgy kell konfigurálni, hogy ezt elviselje.

  • ApplicationTypeHealthPolicyMap. Az alkalmazástípus állapotházirend-leképezése a fürt állapotának kiértékelése során használható a speciális alkalmazástípusok leírására. Alapértelmezés szerint az összes alkalmazás egy készletbe kerül, és a MaxPercentUnhealthyApplications használatával lesz kiértékelve. Ha egyes alkalmazástípusokat eltérően kell kezelni, azok kivehetők a globális készletből. Ehelyett a rendszer a térképen az alkalmazástípus nevéhez társított százalékos értékek alapján értékeli ki őket. Egy fürtön például több ezer különböző típusú alkalmazás található, és néhány speciális alkalmazástípusú vezérlőalkalmazás-példány. A vezérlőalkalmazások soha nem lehetnek hibásak. A globális MaxPercentUnhealthyApplications értéket 20%-ra adhatja meg a hibák elviseléséhez, de a "ControlApplicationType" alkalmazástípusnál állítsa a MaxPercentUnhealthyApplications értéket 0-ra. Így ha a sok alkalmazás közül néhány nem megfelelő állapotú, de a globális nem megfelelő állapotú százalék alatt van, a fürt Figyelmeztetés értékre lesz kiértékelve. A figyelmeztető állapot nem befolyásolja a fürt frissítését vagy a hibaállapot által kiváltott egyéb figyelést. De még egy hibás vezérlőalkalmazás is nem kifogástalan állapotba hozná a fürtöt, ami a frissítési konfigurációtól függően elindítja vagy szünetelteti a fürt frissítését. A térképen definiált alkalmazástípusok esetében az összes alkalmazáspéldány kivehető a globális alkalmazáskészletből. Ezek kiértékelése az alkalmazástípushoz tartozó alkalmazások teljes száma alapján történik, a térképen található konkrét MaxPercentUnhealthyApplications használatával. A többi alkalmazás a globális készletben marad, és a MaxPercentUnhealthyApplications kiértékelése történik.

    Az alábbi példa egy fürtjegyzék kivonata. Az alkalmazástípus-leképezés bejegyzéseinek definiálásához az "ApplicationTypeMaxPercentUnhealthyApplications-" paraméternevet, majd az alkalmazástípus nevét kell megadni.

    <FabricSettings>
      <Section Name="HealthManager/ClusterHealthPolicy">
        <Parameter Name="ConsiderWarningAsError" Value="False" />
        <Parameter Name="MaxPercentUnhealthyApplications" Value="20" />
        <Parameter Name="MaxPercentUnhealthyNodes" Value="20" />
        <Parameter Name="ApplicationTypeMaxPercentUnhealthyApplications-ControlApplicationType" Value="0" />
      </Section>
    </FabricSettings>
    
  • NodeTypeHealthPolicyMap. A csomóponttípus állapotházirend-leképezése a fürt állapotának kiértékelése során használható a speciális csomóponttípusok leírására. A csomóponttípusok kiértékelése a térképen a csomóponttípus nevéhez társított százalékos értékekkel történik. Ennek az értéknek a beállítása nincs hatással a számára használt csomópontok globális készletére MaxPercentUnhealthyNodes. Egy fürt például több száz különböző típusú csomópontot és néhány fontos munkát üzemeltető csomóponttípussal rendelkezik. Az ilyen típusú csomópontok nem lehetnek leállva. A globális MaxPercentUnhealthyNodes érték 20%-ra állítható, hogy az összes csomópont esetében elviseljen bizonyos hibákat, de a csomóponttípus SpecialNodeTypeesetében állítsa a MaxPercentUnhealthyNodes értéket 0 értékre. Így ha a sok csomópont közül néhány nem kifogástalan állapotú, de a globális nem megfelelő állapotú százalék alatt van, a fürt figyelmeztetési állapotúként lesz kiértékelve. A figyelmeztetés állapota nem befolyásolja a fürt frissítését vagy a hibaállapot által kiváltott egyéb figyelést. De még egy hibaállapotú típusú SpecialNodeType csomópont sem kifogástalan állapotúvá tenné a fürtöt, és a frissítési konfigurációtól függően visszaállítaná vagy szüneteltetné a fürt frissítését. Ezzel szemben, ha a globálist MaxPercentUnhealthyNodes 0-ra állítja, és a SpecialNodeType maximálisan kifogástalan állapotú csomópontokat 100-ra állítja egy hibaállapotú típusú SpecialNodeType csomóponttal, akkor is hibaállapotba helyezné a fürtöt, mert ebben az esetben a globális korlátozás szigorúbb.

    Az alábbi példa egy fürtjegyzék kivonata. A csomóponttípus-leképezés bejegyzéseinek meghatározásához a paraméter nevét a "NodeTypeMaxPercentUnhealthyNodes-" előtaggal, majd a csomóponttípus nevének előtagjával kell megadni.

    <FabricSettings>
      <Section Name="HealthManager/ClusterHealthPolicy">
        <Parameter Name="ConsiderWarningAsError" Value="False" />
        <Parameter Name="MaxPercentUnhealthyApplications" Value="20" />
        <Parameter Name="MaxPercentUnhealthyNodes" Value="20" />
        <Parameter Name="NodeTypeMaxPercentUnhealthyNodes-SpecialNodeType" Value="0" />
      </Section>
    </FabricSettings>
    

Alkalmazásállapot-szabályzat

Az alkalmazásállapot-szabályzat leírja, hogyan történik az események és a gyermekállapot-összesítés kiértékelése az alkalmazások és gyermekeik esetében. Az alkalmazáscsomagban a ApplicationManifest.xmlalkalmazásjegyzékben definiálható. Ha nincsenek megadva szabályzatok, a Service Fabric feltételezi, hogy az entitás nem kifogástalan állapotú, ha állapotjelentéssel vagy gyermekekkel rendelkezik a figyelmeztetés vagy a hibaállapot állapotában. A konfigurálható szabályzatok a következők:

  • Fontolja meg aWarningAsError elemet. Meghatározza, hogy a figyelmeztetési állapotjelentéseket hibaként kell-e kezelni az állapotértékelés során. Alapértelmezett érték: false (hamis).
  • MaxPercentUnhealthyDeployedApplications. Meghatározza az üzembe helyezett alkalmazások maximálisan tolerálható százalékos arányát, amely nem megfelelő állapotú lehet, mielőtt az alkalmazás hibásnak minősül. Ezt a százalékos arányt úgy számítjuk ki, hogy elosztjuk a nem kifogástalan állapotú üzembe helyezett alkalmazások számát a fürtön jelenleg üzembe helyezett csomópontok számával. A számítás felfelé kerekít, hogy eltűrjön egy hibát kis számú csomóponton. Alapértelmezett százalék: nulla.
  • DefaultServiceTypeHealthPolicy. Megadja az alapértelmezett szolgáltatástípus-állapotházirendet, amely az alkalmazás összes szolgáltatástípusának alapértelmezett állapotszabályzatát helyettesíti.
  • ServiceTypeHealthPolicyMap. A szolgáltatásállapot-szabályzatok szolgáltatástípusonkénti térképét tartalmazza. Ezek a szabályzatok az egyes megadott szolgáltatástípusok alapértelmezett szolgáltatástípus-állapotszabályzatát cserélik le. Ha például egy alkalmazás állapot nélküli átjárószolgáltatás-típussal és állapotalapú motorszolgáltatás-típussal rendelkezik, eltérő módon konfigurálhatja az állapotszabályzatokat a kiértékelésükhöz. Ha szolgáltatástípusonként ad meg szabályzatot, részletesebben szabályozhatja a szolgáltatás állapotát.

Szolgáltatástípus állapotszabályzata

A szolgáltatástípus állapotszabályzata határozza meg a szolgáltatások és a szolgáltatások gyermekeinek kiértékelését és összesítését. A szabályzat a következőket tartalmazza:

  • MaxPercentUnhealthyPartitionsPerService. Meghatározza a nem kifogástalan állapotú partíciók maximálisan tolerált százalékos arányát, mielőtt a szolgáltatás nem megfelelő állapotúnak minősül. Alapértelmezett százalék: nulla.
  • MaxPercentUnhealthyReplicasPerPartition. Meghatározza a nem megfelelő replikák maximálisan tolerálható százalékos arányát, mielőtt a partíciók nem megfelelő állapotúnak minősülnek. Alapértelmezett százalék: nulla.
  • MaxPercentUnhealthyServices. Meghatározza a nem megfelelő állapotú szolgáltatások maximálisan tolerált százalékos arányát, mielőtt az alkalmazás nem megfelelő állapotúnak minősül. Alapértelmezett százalék: nulla.

Az alábbi példa egy alkalmazásjegyzék egy részlete:

    <Policies>
        <HealthPolicy ConsiderWarningAsError="true" MaxPercentUnhealthyDeployedApplications="20">
            <DefaultServiceTypeHealthPolicy
                   MaxPercentUnhealthyServices="0"
                   MaxPercentUnhealthyPartitionsPerService="10"
                   MaxPercentUnhealthyReplicasPerPartition="0"/>
            <ServiceTypeHealthPolicy ServiceTypeName="FrontEndServiceType"
                   MaxPercentUnhealthyServices="0"
                   MaxPercentUnhealthyPartitionsPerService="20"
                   MaxPercentUnhealthyReplicasPerPartition="0"/>
            <ServiceTypeHealthPolicy ServiceTypeName="BackEndServiceType"
                   MaxPercentUnhealthyServices="20"
                   MaxPercentUnhealthyPartitionsPerService="0"
                   MaxPercentUnhealthyReplicasPerPartition="0">
            </ServiceTypeHealthPolicy>
        </HealthPolicy>
    </Policies>

Állapotértékelés

A felhasználók és az automatizált szolgáltatások bármikor kiértékelhetik bármely entitás állapotát. Egy entitás állapotának kiértékeléséhez az állapottároló összesíti az entitás összes állapotjelentését, és kiértékeli annak összes gyermekét (ha van). Az állapotösszesítő algoritmus állapotszabályzatokat használ, amelyek meghatározzák az állapotjelentések kiértékelésének módját és a gyermekállapotok összesítésének módját (ha vannak).

Állapotjelentés összesítése

Egy entitás különböző tulajdonságokkal rendelkező, különböző riporterek (rendszerösszetevők vagy figyelők) által küldött állapotjelentésekkel rendelkezhet. Az összesítés a társított állapotszabályzatokat használja, különösen az alkalmazás- vagy fürtállapot-szabályzat ConsiderWarningAsError tagját. A ConsiderWarningAsError meghatározza a figyelmeztetések kiértékelésének módját.

Az összesített állapotot az entitás legrosszabb állapotjelentései aktiválják. Ha van legalább egy hibaállapot-jelentés, az összesített állapot hiba.

Állapotjelentés összesítése hibajelentéssel.

Egy vagy több hibaállapot-jelentéssel rendelkező állapotentitást a rendszer Hibaként értékel ki. Ugyanez érvényes a lejárt állapotjelentések esetében is, az állapotától függetlenül.

Ha nincsenek hibajelentések és egy vagy több figyelmeztetés, az összesített állapot figyelmeztetés vagy hiba, a ConsiderWarningAsError szabályzatjelölőtől függően.

Állapotjelentés összesítése figyelmeztető jelentéssel és ConsiderWarningAsError false értékkel.

Állapotjelentés-összesítés figyelmeztető jelentéssel, a ConsiderWarningAsError pedig false (alapértelmezett) értékre van állítva.

Gyermekállapot-összesítés

Az entitás összesített állapota a gyermekállapotokat tükrözi (ha van). A gyermekállapot-állapotok összesítésére szolgáló algoritmus az entitás típusa alapján alkalmazható állapotszabályzatokat használja.

Gyermekentitások állapotösszesítése.

Gyermekösszesítés állapotszabályzatok alapján.

Miután az állapottároló kiértékelte az összes gyermeket, összesíti az állapotukat a nem megfelelő állapotú gyermekek konfigurált maximális százalékos aránya alapján. Ez a százalékos arány az entitás és a gyermektípus alapján származik a szabályzatból.

  • Ha minden gyermek RENDELKEZik OK állapotokkal, a gyermek összesített állapota rendben van.
  • Ha a gyermekek ok és figyelmeztetés állapotúak is, a gyermek összesített állapota figyelmeztetés.
  • Ha vannak olyan hibaállapotú gyermekek, amelyek nem tartják be a nem megfelelő állapotú gyermekek maximálisan megengedett százalékos arányát, az összesített szülőállapot hiba.
  • Ha a hibaállapotú gyermekek betartják a nem megfelelő állapotú gyermekek maximálisan megengedett százalékos arányát, az összesített szülőállapot figyelmeztetést jelenít meg.

Állapotjelentés

A rendszerösszetevők, a System Fabric-alkalmazások és a belső/külső figyelők jelentést készíthetnek a Service Fabric-entitásokról. A riporterek a monitorozott entitások állapotának helyi meghatározását az általuk figyelt feltételek alapján állapítják meg. Nem kell globális állapotokat vagy összesített adatokat megvizsgálniuk. A kívánt viselkedés az, hogy egyszerű riporterek, és nem összetett szervezetek, amelyek meg kell nézni sok mindent, hogy következtethessenek, milyen információt kell küldeni.

Ha állapotadatokat szeretne küldeni az állapottárolóba, a riporternek azonosítania kell az érintett entitást, és létre kell hoznia egy állapotjelentést. A jelentés elküldéséhez használja a FabricClient.HealthClient.ReportHealth API-t, a vagy objektumokon, a PowerShell-parancsmagokon vagy CodePackageActivationContext a Partition REST-en közzétett állapot-API-kat.

Állapotjelentések

A fürtben lévő entitások állapotjelentései a következő információkat tartalmazzák:

  • SourceId. Egy sztring, amely egyedileg azonosítja az állapotesemény riporterét.

  • Entitásazonosító. Azonosítja azt az entitást, ahol a jelentés alkalmazva van. Az entitástípustól függően eltérő:

    • Fürt. Nincsenek.
    • Csomópont. Csomópont neve (sztring).
    • Alkalmazás. Alkalmazás neve (URI). A fürtben üzembe helyezett alkalmazáspéldány nevét jelöli.
    • Szolgáltatás. Szolgáltatásnév (URI). A fürtben üzembe helyezett szolgáltatáspéldány nevét jelöli.
    • Partíció. Partícióazonosító (GUID). A partíció egyedi azonosítóját jelöli.
    • Replika. Az állapotalapú szolgáltatásreplika azonosítója vagy az állapot nélküli szolgáltatáspéldány azonosítója (INT64).
    • DeployedApplication. Alkalmazásnév (URI) és csomópontnév (sztring).
    • DeployedServicePackage. Alkalmazásnév (URI), csomópont neve (sztring) és szolgáltatásjegyzék neve (sztring).
  • Tulajdonság. Sztring (nem rögzített számbavétel), amely lehetővé teszi, hogy a riporter kategorizálja az entitás egy adott tulajdonságának állapoteseményét. Az A riporter például jelentheti a Node01 "Storage" tulajdonság állapotát, a B riporter pedig a Node01 "Connectivity" tulajdonság állapotát. Az állapottárolóban ezek a jelentések külön állapoteseményként lesznek kezelve a Node01 entitáshoz.

  • Leírás. Egy sztring, amely lehetővé teszi a riporter számára az állapotesemény részletes információinak megadását. A SourceId, a Property és a HealthState kifejezésnek teljes mértékben le kell írnia a jelentést. A leírás emberi olvasásra alkalmas információkat ad hozzá a jelentésről. A szöveg megkönnyíti a rendszergazdák és a felhasználók számára az állapotjelentés megértését.

  • HealthState. A jelentés állapotát leíró enumerálás . Az elfogadott értékek az OK, a Figyelmeztetés és a Hiba.

  • TimeToLive. Egy időtartomány, amely azt jelzi, hogy az állapotjelentés mennyi ideig érvényes. A RemoveWhenExpired funkcióval együtt az állapottároló is tudja, hogyan értékelheti ki a lejárt eseményeket. Alapértelmezés szerint az érték végtelen, és a jelentés örökké érvényes.

  • RemoveWhenExpired. Egy logikai érték. Ha igaz értékre van állítva, a lejárt állapotjelentés automatikusan törlődik az állapottárolóból, és a jelentés nem befolyásolja az entitás állapotának kiértékelését. Akkor használatos, ha a jelentés csak meghatározott ideig érvényes, és a riporternek nem kell explicit módon törölnie. Emellett az állapottárolóból is töröl jelentéseket (például a watchdog módosul, és leállítja a korábbi forrással és tulajdonsággal rendelkező jelentések küldését). Küldhet egy rövid TimeToLive-jelentést a RemoveWhenExpired mellett, hogy törölje a korábbi állapotokat az állapottárolóból. Ha az érték false (hamis) értékre van állítva, a rendszer a lejárt jelentést az állapotértékelés hibájaként kezeli. A hamis érték jelzi az állapottárolónak, hogy a forrásnak rendszeres időközönként jelentést kell adnia erről a tulajdonságról. Ha nem, akkor valami baj lehet a figyelővel. A figyelő állapota úgy lesz rögzítve, hogy az eseményt hibaként tekinti.

  • SequenceNumber. Egy folyamatosan növekvő pozitív egész szám, amely a jelentések sorrendjét jelöli. Az állapottároló a hálózati késések vagy egyéb problémák miatt későn fogadott elavult jelentések észlelésére használja. A rendszer elutasít egy jelentést, ha a sorszám kisebb vagy egyenlő ugyanahhoz az entitáshoz, forráshoz és tulajdonsághoz legutóbb alkalmazott számnál. Ha nincs megadva, a sorszám automatikusan létrejön. A sorszámot csak akkor kell megadni, ha állapotváltásokról van szó. Ebben az esetben a forrásnak emlékeznie kell az elküldött jelentésekre, és meg kell őriznie a helyreállításhoz szükséges információkat a feladatátvétel során.

Ez a négy információ – SourceId, entity identifier, Property és HealthState – minden állapotjelentéshez szükséges. A SourceId sztring nem kezdődhet a "System" előtaggal, amely rendszerjelentésekhez van fenntartva. Ugyanahhoz az entitáshoz csak egy jelentés tartozik ugyanahhoz a forráshoz és tulajdonsághoz. Ugyanazon forrás és tulajdonság több jelentése felülbírálja egymást az állapotügyfél oldalán (ha kötegelve vannak), vagy az állapottár oldalán. A csere sorszámokon alapul; az újabb jelentések (magasabb sorszámmal) helyettesítik a régebbi jelentéseket.

Állapotesemények

Az állapottároló belsőleg tárolja az állapoteseményeket, amelyek tartalmazzák a jelentésekből származó összes információt és további metaadatokat. A metaadatok közé tartozik a jelentés állapotügyfélnek adott ideje és a módosítás időpontja a kiszolgáló oldalán. Az állapoteseményeket állapot-lekérdezések küldik vissza.

A hozzáadott metaadatok a következőket tartalmazzák:

  • SourceUtcTimestamp. A jelentés állapotügyfélnek való beadása (koordinált egyetemes idő).
  • LastModifiedUtcTimestamp. A jelentés utolsó módosításának időpontja a kiszolgáló oldalán (koordinált egyetemes idő).
  • IsExpired. Jelző, amely jelzi, hogy a jelentés lejárt-e, amikor a lekérdezést az állapottároló végrehajtotta. Egy esemény csak akkor lehet lejárt, ha a RemoveWhenExpired értéke hamis. Ellenkező esetben a lekérdezés nem adja vissza az eseményt, és eltávolítja az áruházból.
  • LastOkTransitionAt, LastWarningTransitionAt, LastErrorTransitionAt. Az OK/figyelmeztetés/hibaváltások utolsó időpontja. Ezek a mezők az esemény állapotváltozásainak előzményeit adják meg.

Az állapotáttűnési mezők intelligensebb riasztásokhoz vagy "előzmény" állapotesemény-információkhoz használhatók. A következőkhöz hasonló forgatókönyveket engedélyeznek:

  • Riasztás, ha egy tulajdonság több mint X perce figyelmeztetésben/hibában van. A feltétel adott ideig történő ellenőrzése elkerüli az ideiglenes feltételekre vonatkozó riasztásokat. Ha például az állapotjelző több mint öt percig figyelmeztetést kapott, a következőre fordítható le: (HealthState == Figyelmeztetés és Most – LastWarningTransitionTime > 5 perc).
  • Csak az elmúlt X percben megváltozott feltételekre vonatkozó riasztás. Ha egy jelentés már a megadott időpont előtt hibás volt, figyelmen kívül hagyható, mert korábban már jelezték.
  • Ha egy tulajdonság ütközik a figyelmeztetés és a hiba között, állapítsa meg, hogy mennyi ideig nem kifogástalan állapotú (azaz nem OK). Ha például a tulajdonság öt percnél hosszabb ideje nem kifogástalan állapotú, akkor a (HealthState != Ok és Most – LastOkTransitionTime > 5 perc) értékre fordítható le.

Példa: Az alkalmazás állapotának jelentése és kiértékelése

Az alábbi példa egy állapotjelentést küld a PowerShellen keresztül az alkalmazáshálón:/WordCount a MyWatchdog forrásból. Az állapotjelentés a "rendelkezésre állás" állapottulajdonságra vonatkozó információkat tartalmazza hibaállapotban, végtelen TimeToLive értékkel. Ezután lekérdezi az alkalmazás állapotát, amely összesített állapothibákat és jelentett állapoteseményeket ad vissza az állapotesemények listájában.

PS C:\> Send-ServiceFabricApplicationHealthReport –ApplicationName fabric:/WordCount –SourceId "MyWatchdog" –HealthProperty "Availability" –HealthState Error

PS C:\> Get-ServiceFabricApplicationHealth fabric:/WordCount -ExcludeHealthStatistics


ApplicationName                 : fabric:/WordCount
AggregatedHealthState           : Error
UnhealthyEvaluations            :
                                  Error event: SourceId='MyWatchdog', Property='Availability'.

ServiceHealthStates             :
                                  ServiceName           : fabric:/WordCount/WordCountService
                                  AggregatedHealthState : Error

                                  ServiceName           : fabric:/WordCount/WordCountWebService
                                  AggregatedHealthState : Ok

DeployedApplicationHealthStates :
                                  ApplicationName       : fabric:/WordCount
                                  NodeName              : _Node_0
                                  AggregatedHealthState : Ok

                                  ApplicationName       : fabric:/WordCount
                                  NodeName              : _Node_2
                                  AggregatedHealthState : Ok

                                  ApplicationName       : fabric:/WordCount
                                  NodeName              : _Node_3
                                  AggregatedHealthState : Ok

                                  ApplicationName       : fabric:/WordCount
                                  NodeName              : _Node_4
                                  AggregatedHealthState : Ok

                                  ApplicationName       : fabric:/WordCount
                                  NodeName              : _Node_1
                                  AggregatedHealthState : Ok

HealthEvents                    :
                                  SourceId              : System.CM
                                  Property              : State
                                  HealthState           : Ok
                                  SequenceNumber        : 360
                                  SentAt                : 3/22/2016 7:56:53 PM
                                  ReceivedAt            : 3/22/2016 7:56:53 PM
                                  TTL                   : Infinite
                                  Description           : Application has been created.
                                  RemoveWhenExpired     : False
                                  IsExpired             : False
                                  Transitions           : Error->Ok = 3/22/2016 7:56:53 PM, LastWarning = 1/1/0001 12:00:00 AM

                                  SourceId              : MyWatchdog
                                  Property              : Availability
                                  HealthState           : Error
                                  SequenceNumber        : 131032204762818013
                                  SentAt                : 3/23/2016 3:27:56 PM
                                  ReceivedAt            : 3/23/2016 3:27:56 PM
                                  TTL                   : Infinite
                                  Description           :
                                  RemoveWhenExpired     : False
                                  IsExpired             : False
                                  Transitions           : Ok->Error = 3/23/2016 3:27:56 PM, LastWarning = 1/1/0001 12:00:00 AM

Állapotmodell használata

Az állapotmodell lehetővé teszi a felhőszolgáltatások és a mögöttes Service Fabric-platform skálázását, mivel a figyelési és állapotmeghatározások a fürt különböző monitorai között vannak elosztva. Más rendszerek egyetlen központosított szolgáltatással rendelkeznek a fürt szintjén, amely elemzi a szolgáltatások által kibocsátott összes potenciálisan hasznos információt. Ez a megközelítés akadályozza a méretezhetőséget. Emellett nem teszi lehetővé, hogy konkrét információkat gyűjtsenek a problémák és a lehetséges problémák azonosításához a lehető legközelebb a kiváltó okhoz.

Az állapotmodellt nagy mértékben használják a monitorozáshoz és a diagnosztizáláshoz, a fürt és az alkalmazás állapotának kiértékeléséhez, valamint a figyelt frissítésekhez. Más szolgáltatások állapotadatokat használnak az automatikus javításokhoz, a fürt állapotelőzményeinek összeállításához és bizonyos feltételekhez tartozó riasztások kiadásához.

Következő lépések

Service Fabric-állapotjelentések megtekintése

Rendszerállapot-jelentések használata hibaelhárításhoz

A szolgáltatás állapotának jelentése és ellenőrzése

Egyéni Service Fabric-állapotjelentések hozzáadása

A szolgáltatások helyi figyelése és diagnosztikája

Service Fabric-alkalmazás frissítése