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ést biztosít. A modell lehetővé teszi a fürt állapotának és az abban 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ádolást okoznának, és jelentős kimaradásokat okoznának. A tipikus modellben a szolgáltatások a helyi nézeteik 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 ezzel a gazdag állapotmodellel jelentik aktuális állapotukat. 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.
Feljegyzés
Az állapot-alrendszert úgy indítottuk el, hogy elhárítsuk a figyelt frissítések szükségességét. A Service Fabric figyelt alkalmazás- és fürtfrissítéseket biztosít, amelyek biztosítják a teljes rendelkezésre állást, az állásidőt és a minimális felhasználói beavatkozást. E célok elérése érdekében 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 megfelel a kívánt küszöbértékeknek. 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 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ában vannak rendszerezve, amely rögzíti a különböző entitások közötti interakciókat és függőségeket. 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ás például megfelel a fürtben üzembe helyezett alkalmazáspéldánynak, az állapotcsomópont-entitás pedig egy Service Fabric-fürtcsomópontnak.) Az állapothierarchia rögzíti a rendszerentitások interakcióit, és ez a speciális állapotértékelés alapja. A Service Fabric legfontosabb 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 jelentését, hibakeresését és monitorozását. Az állapotmodell pontos, részletes képet ad a fürt számos mozgó darabjának állapotáról.
A szülő-gyermek kapcsolatokon alapuló hierarchiában rendezett állapotentitások.
Az állapotentitások a következők:
- Fürt. Egy Service Fabric-fürt állapotát jelöli. A fürt állapotjelentései a teljes fürtöt érintő feltételeket ismertetik. Ezek a feltételek a fürt több entitását vagy magát a fürtöt is érintik. A feltétel alapján a riporter nem tudja szűkíteni a problémát egy vagy több nem megfelelő gyermekre. Ilyen például a fürt felosztásának agya hálózati particionálás vagy kommunikációs problémák miatt.
- Csomópont. Egy Service Fabric-csomópont állapotát jelöli. A csomópont állapotjelentései a csomópont működését befolyásoló feltételeket ismertetik. 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épszintű tulajdonságok, például memória, kapcsolatok) és a csomópont leállása. A csomópont-entitást 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 az alkalmazás általános állapotát befolyásoló feltételeket ismertetik. 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ásentitást 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 a szolgáltatás általános állapotát befolyásoló feltételeket ismertetik. A riporter nem tudja a problémát nem megfelelő partícióra vagy replikára szűkíteni. 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ásentitást 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órumveszteségben 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 a legkisebb egység, amelyről a watchdogok és a rendszerösszetevők jelentést tehetnek 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 jelentéskészítésre is képesek, 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ó (hosszú) azonosítja.
- DeployedApplication. Egy csomóponton futó alkalmazás állapotát jelöli. Az üzembe helyezett alkalmazásállapot-jelentések a csomóponton lévő alkalmazásra jellemző feltételeket ismertetik, 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 olyan 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 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 azt jelenteni, hogy az alkalmazáspéldány nem megfelelő. Az ilyen szintű jelentéskészítés azonban nem ideális, mert előfordulhat, hogy a probléma nem érinti az alkalmazás összes szolgáltatását. A jelentést a nem megfelelő 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 a hierarchián keresztül jelennek meg, és egy nem megfelelő 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 felismerésében és megoldásában.
Az állapothierarchia szülő-gyermek kapcsolatokból áll. A fürtök csomópontokból és alkalmazásokból állnak. Az alkalmazások szolgáltatásokkal és üzembe helyezett alkalmazásokkal rendelkeznek. 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. A csomópontok és az üzembe helyezett entitások között különleges kapcsolat áll fenn. A felügyeleti rendszer összetevője, a Feladatátvétel-kezelő szolgáltatás által jelentett nem kifogástalan csomópont hatással van a telepített alkalmazásokra, szolgáltatáscsomagokra és a rajta üzembe helyezett 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 jelentéskészítést végezhetnek alkalmazásspecifikus logikák 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árba küldött jelentéseknek meg kell adniuk az állapotok egyikét. Az állapotértékelés eredménye ezen állapotok egyike.
A lehetséges állapotok a következők:
- RENDBEN. Az entitás kifogástalan állapotú. Nincsenek ismert problémák arról, hogy vagy gyermekei (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 helyrehozhatja 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.
- Error. Az entitás nem kifogástalan. Műveletet kell végezni az entitás állapotának javítása érdekében, mert az nem működik megfelelően.
- Ismeretlen. Az entitás nem létezik az állapottárolóban. Ez az eredmény olyan elosztott lekérdezésekből érhető el, amelyek több összetevő eredményeit egyesítik. A csomópontlista lekérdezésének lekérése például a FailoverManager, a ClusterManager és a HealthManager lesz, az alkalmazáslista lekérdezése pedig a ClusterManager és a HealthManager lesz. Ezek a lekérdezések több rendszerösszetevő eredményeinek egyesítése. Ha egy másik rendszerösszetevő olyan entitást ad vissza, amely nincs jelen 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örölve lett.
Állapotszabályzatok
Az állapottároló állapotszabályzatokat alkalmaz annak meghatározására, hogy egy entitás megfelelő-e a jelentései és gyermekei alapján.
Feljegyzés
Az állapotszabályzatok megadhatók a fürtjegyzékben (a fürt és a csomópont állapotának kiértékelése esetén) 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 kapcsolatra. Ha még az egyik gyermeknek is van egy sérült eseménye, a szülő nem megfelelőnek minősül.
Fürtállapot-szabályzat
A fürtállapot-házirend 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 nincs jelen, a rendszer az alapértelmezett házirendet (nulla tolerált hibákat) használja.
A fürt állapotszabályzata a következőket tartalmazza:
Fontolja meg aWarningAsErrort. Meghatározza, hogy az állapotértékelés során hibaként kezelje-e a figyelmeztetési állapotjelentéseket. Alapértelmezett érték: false (hamis).
MaxPercentUnhealthyApplications. Meghatározza azoknak az alkalmazásoknak a maximálisan tolerálható százalékát, amelyek nem kifogástalanok lehetnek, mielőtt a fürt hibásnak minősül.
MaxPercentUnhealthyNodes. Meghatározza a csomópontok maximálisan tolerálható százalékos értékét, amely nem kifogástalan lehet, mielőtt a fürt hibásnak minősül. A nagy fürtökben egyes csomópontok mindig leállnak vagy ki vannak állítva a javításhoz, ezért ezt a százalékot úgy kell konfigurálni, hogy ezt eltűrje.
ApplicationTypeHealthPolicyMap. Az alkalmazástípus állapotházirend-térképe 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, 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ürtben 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 is megadhatja, hogy elviseljen bizonyos hibákat, de a "ControlApplicationType" alkalmazástípusnál állítsa a MaxPercentUnhealthyApplications értékét 0 értékre. Így, ha a sok alkalmazás közül néhány nem kifogástalan, de a globális egészségtelenségi százalék alatt van, a fürt figyelmeztetés értékre lesz kiértékelve. A figyelmeztetés állapota nem befolyásolja a fürtfrissítést vagy a hibaállapot által aktivált egyéb figyelést. Egy hiba esetén azonban még egy vezérlőalkalmazás is kifogástalan állapotba hozná a fürtöt, amely a frissítési konfigurációtól függően visszaállítást indít el vagy szünetelteti a fürtfrissítést. A térképen definiált alkalmazástípusok esetében a rendszer minden alkalmazáspéldányt kivesz a globális alkalmazáskészletből. Ezek kiértékelése az alkalmazástípus alkalmazásainak teljes száma alapján történik, a térkép adott 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 részlete. Az alkalmazástípus-megfeleltetés bejegyzéseinek meghatározásához az "ApplicationTypeMaxPercentUnhealthyApplications-" paraméternevet, majd az alkalmazástípus nevét kell megadnia.
<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ép csomóponttípus-nevéhez társított százalékos értékek alapján történik. Ennek az értéknek a beállítása nincs hatással a használt csomópontok globális készletéreMaxPercentUnhealthyNodes
. 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álisMaxPercentUnhealthyNodes
érték 20%-ra állítható, hogy az összes csomópont esetében eltűrjön bizonyos hibákat, de a csomóponttípusSpecialNodeType
esetében állítsa aMaxPercentUnhealthyNodes
0 értéket. Így ha a sok csomópont közül néhány nem kifogástalan, de a globálisan nem megfelelő százalékos szint alatt van, akkor 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. Egy hibaállapotban lévő típuscsomópontSpecialNodeType
azonban nem megfelelő állapotúvá tenné a fürtöt, és visszaállítaná vagy szüneteltetné a fürtfrissítést a frissítés konfigurációjától függően. Ezzel szemben a globálisMaxPercentUnhealthyNodes
érték 0 értékre állítása és aSpecialNodeType
hibás állapotú csomópontok maximális százalékos állapotának 100-ra állítása egy hibaállapotú csomóponttalSpecialNodeType
még mindig 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 részlete. A csomóponttípus-megfeleltetés bejegyzéseinek meghatározásához a paraméter nevét a "NodeTypeMaxPercentUnhealthyNodes-" előtaggal, majd a csomóponttípus nevével adhatja meg.
<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 az alkalmazásjegyzékben ( ApplicationManifest.xml) definiálható. Ha nincsenek megadva szabályzatok, a Service Fabric feltételezi, hogy az entitás nem megfelelő állapotú, ha állapotjelentéssel vagy gyermekekkel rendelkezik a figyelmeztetés vagy hibaállapot állapotában. A konfigurálható szabályzatok a következők:
- Fontolja meg aWarningAsErrort. Meghatározza, hogy az állapotértékelés során hibaként kezelje-e a figyelmeztetési állapotjelentéseket. 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ő lehet, mielőtt az alkalmazás hibásnak minősül. Ezt a százalékot úgy számítjuk ki, hogy elosztjuk a nem megfelelő á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 állapotházirendje helyébe lép.
- ServiceTypeHealthPolicyMap. Szolgáltatástípusonként megjeleníti a szolgáltatásállapot-szabályzatok térképét. Ezek a szabályzatok az egyes megadott szolgáltatástípusok alapértelmezett szolgáltatástípus-állapotszabályzatát váltják fel. 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, akkor másképpen konfigurálhatja az állapotszabályzatokat a kiértékelésükhöz. Ha szolgáltatástípusonként adja meg a 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 meghatározza 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 megfelelő partíciók maximálisan tolerálható százalékos arányát, mielőtt a szolgáltatás nem megfelelőnek 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ó nem megfelelőnek minősül. Alapértelmezett százalék: nulla.
- MaxPercentUnhealthyServices. Meghatározza a nem megfelelő szolgáltatások maximálisan tolerálható százalékos arányát, mielőtt az alkalmazás nem megfelelőnek minősül. Alapértelmezett százalék: nulla.
Az alábbi példa egy alkalmazásjegyzék 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ármelyik entitás állapotát. Az 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ési algoritmus állapotszabályzatokat használ, amelyek meghatározzák az állapotjelentések kiértékelését és a gyermekállapotok összesítését (ha vannak).
Állapotjelentés összesítése
Egy entitás több állapotjelentést is küldhet különböző riporterek (rendszerösszetevők vagy watchdogok) különböző tulajdonságairól. 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 a figyelmeztetések kiértékelésének módját határozza meg.
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.
Az egy vagy több hibaállapot-jelentéssel rendelkező állapotentitást hibaként értékeli a rendszer. Ugyanez érvényes a lejárt állapotjelentésekre is, függetlenül annak állapotától.
Ha nincsenek hibajelentések és egy vagy több figyelmeztetés, az összesített állapot figyelmeztetés vagy hiba, a ConsiderWarningAsError szabályzatjelzőtől függően.
Állapotjelentés összesítése figyelmeztető jelentéssel, és a ConsiderWarningAsError értéke hamis (alapértelmezett).
Gyermekállapot-összesítés
Az entitás összesített állapota a gyermekállapotokat tükrözi (ha van). A gyermekállapotok összesítésére szolgáló algoritmus az entitástípus alapján alkalmazandó állapotszabályzatokat használja.
Gyermekösszesítés állapotszabályzatok alapján.
Miután az állapottár kiértékelte az összes gyermek állapotát, az állapotukat a konfigurált, sérült gyermekek maximális százalékos aránya alapján összesíti. Ez a százalék az entitás és a gyermektípus alapján a szabályzatból származik.
- Ha minden gyermek rendelkezik OK állapotokkal, a gyermek összesített állapotának állapota rendben van.
- Ha a gyermekeknek ok- és figyelmeztetési állapotuk is van, a gyermek összesített állapota figyelmeztetést ad.
- Ha vannak olyan hibaállapotú gyermekek, amelyek nem tartják be az egészségtelen gyermekek maximális megengedett százalékos arányát, az összesített szülőállapot hiba.
- Ha a hibaállapotú gyermekek betartják az egészségtelen gyermekek maximálisan megengedett százalékos arányát, az összesített szülőállapot figyelmeztetést ad.
Állapotjelentés
A rendszerösszetevők, a System Fabric-alkalmazások és a belső/külső figyelők jelentést tehetnek 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ítő adatokat megvizsgálniuk. A kívánt viselkedés az, hogy egyszerű riporterek, és nem összetett szervezetek, amelyek meg kell vizsgálni 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, az objektumokon vagy CodePackageActivationContext
objektumokon közzétett jelentésállapot-API-kat, a PowerShell-parancsmagokat vagy a Partition
REST-et.
Állapotjelentések
A fürt minden entitásának á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 a jelentést alkalmazó entitást. Az entitás típusa alapján eltérő:
- Fürt. Nincs.
- 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.
- Feloszt. Partícióazonosító (GUID). A partíció egyedi azonosítójának felel meg.
- Kópia. 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ópont neve (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 állapoteseményt az entitás egy adott tulajdonságához. 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ás számára.
Leírás. Egy sztring, amely lehetővé teszi a riporter számára, hogy részletes információkat adjon meg az állapoteseményről. 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 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ának felsorolása. Az elfogadott értékek az OK, a Figyelmeztetés és a Hiba.
TimeToLive. Az állapotjelentés érvényességét jelző időbélyeg. A RemoveWhenExpired funkcióval párosítva az állapottár 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. 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árból származó jelentések törlésére is használható (például a watchdog módosul, és nem küld jelentéseket korábbi forrással és tulajdonsággal). Egy rövid TimeToLive-jelentést és a RemoveWhenExpired parancsot is elküldheti, hogy töröljön minden korábbi állapotot az állapottárból. Ha az érték hamis értékre van állítva, a lejárt jelentést a rendszer hibaként kezeli az állapotértékelés során. A hamis érték jelzi az állapottárolónak, hogy a forrásnak rendszeresen jelentenie kell ezt a tulajdonságot. Ha nem, akkor valami baj lehet a figyelővel. A watchdog állapotát úgy rögzíti a rendszer, hogy az eseményt hibaként tekinti.
SequenceNumber. Egy pozitív egész szám, amelyet folyamatosan növelni kell, 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 szolgál. 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 rendszer automatikusan létrehozza a sorszámot. A sorszámot csak az állapotáttűnésekről szóló jelentésekben kell elhelyezni. Ebben az esetben a forrásnak emlékeznie kell az elküldött jelentésekre, és meg kell őriznie a feladatátvételi helyreállítással kapcsolatos információkat.
Ez a négy információ – SourceId, entitásazonosító, tulajdonság és HealthState – minden állapotjelentéshez szükséges. A SourceId sztring nem kezdődhet a rendszerjelentésekhez fenntartott "System" előtaggal. 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 vannak kötegelve) vagy az állapottár oldalán. A csere sorszámokon alapul; újabb jelentések (nagyobb sorszámmal) helyettesítik a régebbi jelentéseket.
Állapotesemények
Az állapottároló belsőleg megőrzi az állapoteseményeket, amelyek tartalmazzák a jelentésekből származó összes információt és további metaadatokat. A metaadatok tartalmazzák a jelentésnek az állapotügyfélnek adott idejét és a módosítás időpontját a kiszolgáló oldalán. Az állapoteseményeket állapot-lekérdezések adják vissza.
A hozzáadott metaadatok a következőket tartalmazzák:
- SourceUtcTimestamp. A jelentésnek az állapotügyfélnek való átadásának időpontja (koordinált univerzális idő).
- LastModifiedUtcTimestamp. A jelentés utolsó módosításának időpontja a kiszolgáló oldalán (koordinált univerzális idő).
- IsExpired. Jelző, amely jelzi, hogy a jelentés lejárt-e, amikor a lekérdezést az állapottároló végrehajtotta. Az 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/hibaáttűnések 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. Olyan forgatókönyveket engedélyeznek, mint például:
- Riasztás, ha egy tulajdonság már 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. Például egy riasztás, ha az állapot több mint öt percig figyelmeztetést kapott, lefordítható a következőre: (HealthState == Warning and Now – LastWarningTransitionTime > 5 perc).
- Csak az utolsó X percben módosult 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 volt kifogástalan állapotú (azaz nem OK). Ha például a tulajdonság öt percnél hosszabb ideje nem kifogástalan állapotú, riasztást lehet lefordítani (HealthState != Ok és Most – LastOkTransitionTime > 5 perc).
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 tartalmaz 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égüket. Azt sem 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ételekkel kapcsolatos riasztások kiadásához.
Következő lépések
Service Fabric állapotjelentéseinek 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