Service Fabric-állapotjelentések megtekintése

Az Azure Service Fabric egy állapotmodellt vezet be, amely állapotentitással rendelkezik, amelyen a rendszerösszetevők és a watchdogok jelentést tehetnek a figyelt helyi feltételekről. Az állapottároló összesíti az összes állapotadatot annak megállapításához, hogy az entitások kifogástalanok-e.

A fürt automatikusan feltöltődik a rendszerösszetevők által küldött állapotjelentésekkel. További információ: Rendszerállapot-jelentések használata a hibaelhárításhoz.

A Service Fabric többféle módot kínál az entitások összesített állapotának lekérésére:

  • Service Fabric Explorer vagy más vizualizációs eszközök
  • Állapottal kapcsolatos lekérdezések (PowerShell, API vagy REST használatával)
  • Általános lekérdezések, amelyek a tulajdonságok egyikeként állapottal rendelkező entitások listáját adják vissza (PowerShell, API vagy REST használatával)

Ezeknek a lehetőségeknek a bemutatásához használjunk egy helyi fürtöt öt csomóponttal és a háló:/WordCount alkalmazással. A háló:/WordCount alkalmazás két alapértelmezett szolgáltatást tartalmaz, egy állapotalapú, típusú WordCountServiceTypeszolgáltatást és egy állapot nélküli szolgáltatást.WordCountWebServiceType Úgy módosítottam a ApplicationManifest.xml beállítást, hogy hét célreplikát igényeljen az állapotalapú szolgáltatáshoz és egy partícióhoz. Mivel a fürtben csak öt csomópont található, a rendszerösszetevők figyelmeztetést jelentenek a szolgáltatáspartíción, mert az nem éri el a célszámot.

<Service Name="WordCountService">
  <StatefulService ServiceTypeName="WordCountServiceType" TargetReplicaSetSize="7" MinReplicaSetSize="2">
    <UniformInt64Partition PartitionCount="[WordCountService_PartitionCount]" LowKey="1" HighKey="26" />
  </StatefulService>
</Service>

Állapot a Service Fabric Explorer

Service Fabric Explorer vizuális nézetet biztosít a fürtről. Az alábbi képen a következő látható:

  • Az application fabric:/WordCount piros (hiba esetén), mert a MyWatchdog hibaeseményt jelentett a Rendelkezésre állás tulajdonsághoz.
  • Az egyik szolgáltatása, a fabric:/WordCount/WordCountService sárga (figyelmeztetésben). A szolgáltatás hét replikával van konfigurálva, és a fürt öt csomóponttal rendelkezik, így két replika nem helyezhető el. Bár itt nem jelenik meg, a szolgáltatáspartíció sárga, mert egy rendszerjelentés ezt System.FM mondja.Partition is below target replica or instance count A sárga partíció aktiválja a sárga szolgáltatást.
  • A fürt piros, mert a piros alkalmazás.

A kiértékelés a fürtjegyzékből és az alkalmazásjegyzékből származó alapértelmezett szabályzatokat használja. Szigorú szabályzatok, és nem tolerálják a hibákat.

A fürt megtekintése Service Fabric Explorer:

A fürt megtekintése Service Fabric Explorer.

Megjegyzés

További információ a Service Fabric Explorer.

Állapottal kapcsolatos lekérdezések

A Service Fabric az egyes támogatott entitástípusok állapot-lekérdezéseit teszi elérhetővé. Ezek az API-n keresztül érhetők el a FabricClient.HealthManager, a PowerShell-parancsmagok és a REST metódusaival. Ezek a lekérdezések teljes állapotadatokat adnak vissza az entitásról: az összesített állapotot, az entitásállapot-eseményeket, a gyermekállapot-állapotokat (ha alkalmazható), a nem kifogástalan állapotú értékeléseket (ha az entitás nem kifogástalan), valamint a gyermekek állapotstatisztikáit (ha alkalmazható).

Megjegyzés

Az állapotentitást a rendszer akkor adja vissza, ha az az állapottárolóban teljes mértékben fel van töltve. Az entitásnak aktívnak (nem törölve) kell lennie, és rendelkeznie kell egy rendszerjelentéssel. A hierarchialáncban lévő szülőentitásoknak rendszerjelentésekkel is rendelkezniük kell. Ha ezen feltételek bármelyike nem teljesül, az állapottal kapcsolatos lekérdezések fabricException értéket adnak vissza a FabricErrorCode használatávalFabricHealthEntityNotFound , amely megmutatja, hogy miért nem adja vissza az entitást.

Az állapot-lekérdezéseknek meg kell adniuk az entitásazonosítót, amely az entitás típusától függ. A lekérdezések nem kötelező állapotszabályzat-paramétereket fogadnak el. Ha nincs megadva állapotszabályzat, a rendszer a fürtből vagy az alkalmazásjegyzékből származó állapotszabályzatokat használja a kiértékeléshez. Ha a jegyzékek nem tartalmaznak definíciót az állapotszabályzatokhoz, a rendszer az alapértelmezett állapotszabályzatokat használja a kiértékeléshez. Az alapértelmezett állapotszabályzatok nem tolerálják a hibákat. A lekérdezések olyan szűrőket is elfogadnak, amelyek csak részleges gyermekeket vagy eseményeket ad vissza – azokat, amelyek megfelelnek a megadott szűrőknek. Egy másik szűrő lehetővé teszi a gyermekstatisztikák kizárását.

Megjegyzés

A kimeneti szűrők a kiszolgáló oldalán vannak alkalmazva, így az üzenet válaszmérete csökken. Azt javasoljuk, hogy a kimeneti szűrőkkel korlátozza a visszaadott adatokat, és ne alkalmazzon szűrőket az ügyféloldalon.

Az entitás állapota a következőket tartalmazza:

  • Az entitás összesített állapota. Az állapottároló kiszámítja az entitásállapot-jelentések, a gyermekállapotok (adott esetben) és az állapotszabályzatok alapján. További információ az entitás állapotának kiértékeléséről.
  • Az entitás állapoteseményei.
  • Az összes gyermek egészségügyi állapotának gyűjtése a gyermekvállalásra képes entitások számára. Az állapotállapotok entitásazonosítókat és összesített állapotot tartalmaznak. A gyermek teljes állapotának lekéréséhez hívja meg a gyermek entitástípus lekérdezési állapotát, és adja meg a gyermekazonosítót.
  • Az entitás állapotát aktiváló jelentésre mutató, nem kifogástalan állapotú értékelések, ha az entitás nem kifogástalan állapotú. Az értékelések rekurzívak, és tartalmazzák az aktuális állapotot kiváltó gyermekállapot-értékeléseket. Egy figyelőkutya például hibát jelentett egy replika ellen. Az alkalmazás állapota egy nem kifogástalan állapotú szolgáltatás miatt nem megfelelő értékelést jelenít meg; a szolgáltatás hibás partíció miatt nem kifogástalan állapotú; a partíció egy hibás replika miatt nem kifogástalan állapotú; A replika nem kifogástalan állapotú a watchdog hibaállapot-jelentése miatt.
  • A gyermekkel rendelkező entitások összes gyermektípusának állapotstatisztikája. A fürt állapota például a fürtben található alkalmazások, szolgáltatások, partíciók, replikák és üzembe helyezett entitások teljes számát mutatja. Szolgáltatásállapot a megadott szolgáltatásban lévő partíciók és replikák teljes számát jeleníti meg.

Fürt állapotának lekérése

Visszaadja a fürt entitásának állapotát, és tartalmazza az alkalmazások és csomópontok állapotállapotait (a fürt gyermekeit). Bemenet:

  • [Nem kötelező] A csomópontok és a fürtesemények kiértékeléséhez használt fürtállapot-szabályzat.
  • [Nem kötelező] Az alkalmazásállapot-szabályzat térképe az alkalmazásjegyzék-szabályzatok felülbírálásához használt állapotszabályzatokkal.
  • [Nem kötelező] Olyan események, csomópontok és alkalmazások szűrői, amelyek meghatározzák, hogy mely bejegyzések fontosak, és az eredményben kell visszaadni (például csak hibák, vagy figyelmeztetések és hibák). Az összes esemény, csomópont és alkalmazás az entitás összesített állapotának kiértékelésére szolgál, a szűrőtől függetlenül.
  • [Nem kötelező] Szűrő az állapotstatisztikák kizárásához.
  • [Nem kötelező] Szűrés a háló:/Rendszerállapot statisztikáinak az állapotstatisztikákba való belefoglalásához. Csak akkor alkalmazható, ha az állapotstatisztikák nincsenek kizárva. Alapértelmezés szerint az állapotstatisztikák csak a felhasználói alkalmazásokra vonatkozó statisztikákat tartalmazzák, a rendszeralkalmazást nem.

API

A fürt állapotának lekéréséhez hozzon létre egy FabricClient elemet, és hívja meg a GetClusterHealthAsync metódust a HealthManagerben.

A következő hívás lekéri a fürt állapotát:

ClusterHealth clusterHealth = await fabricClient.HealthManager.GetClusterHealthAsync();

Az alábbi kód egy egyéni fürtállapot-szabályzat és a csomópontok és alkalmazások szűrőinek használatával szerzi be a fürt állapotát. Meghatározza, hogy az állapotstatisztikák tartalmazzák a háló:/rendszerstatisztikát. Létrehozza a ClusterHealthQueryDescription parancsot, amely tartalmazza a bemeneti adatokat.

var policy = new ClusterHealthPolicy()
{
    MaxPercentUnhealthyNodes = 20
};
var nodesFilter = new NodeHealthStatesFilter()
{
    HealthStateFilterValue = HealthStateFilter.Error | HealthStateFilter.Warning
};
var applicationsFilter = new ApplicationHealthStatesFilter()
{
    HealthStateFilterValue = HealthStateFilter.Error
};
var healthStatisticsFilter = new ClusterHealthStatisticsFilter()
{
    ExcludeHealthStatistics = false,
    IncludeSystemApplicationHealthStatistics = true
};
var queryDescription = new ClusterHealthQueryDescription()
{
    HealthPolicy = policy,
    ApplicationsFilter = applicationsFilter,
    NodesFilter = nodesFilter,
    HealthStatisticsFilter = healthStatisticsFilter
};

ClusterHealth clusterHealth = await fabricClient.HealthManager.GetClusterHealthAsync(queryDescription);

PowerShell

A fürt állapotának lekéréséhez szükséges parancsmag a Get-ServiceFabricClusterHealth. Először csatlakozzon a fürthöz a Connect-ServiceFabricCluster parancsmaggal.

A fürt állapota öt csomópont, a rendszeralkalmazás és a háló:/WordCount a leírtak szerint van konfigurálva.

Az alábbi parancsmag az alapértelmezett állapotszabályzatok használatával lekéri a fürt állapotát. Az összesített állapot figyelmeztetés, mert a háló:/WordCount alkalmazás figyelmeztetésben van. Figyelje meg, hogy a nem megfelelő állapotú értékelések hogyan adnak meg részleteket az összesített állapotot kiváltó feltételekről.

PS D:\ServiceFabric> Get-ServiceFabricClusterHealth


AggregatedHealthState   : Warning
UnhealthyEvaluations    : 
                          Unhealthy applications: 100% (1/1), MaxPercentUnhealthyApplications=0%.

                          Unhealthy application: ApplicationName='fabric:/WordCount', AggregatedHealthState='Warning'.

                            Unhealthy services: 100% (1/1), ServiceType='WordCountServiceType', MaxPercentUnhealthyServices=0%.

                            Unhealthy service: ServiceName='fabric:/WordCount/WordCountService', AggregatedHealthState='Warning'.

                                Unhealthy partitions: 100% (1/1), MaxPercentUnhealthyPartitionsPerService=0%.

                                Unhealthy partition: PartitionId='af2e3e44-a8f8-45ac-9f31-4093eb897600', AggregatedHealthState='Warning'.

                                    Unhealthy event: SourceId='System.FM', Property='State', HealthState='Warning', ConsiderWarningAsError=false.


NodeHealthStates        : 
                          NodeName              : _Node_4
                          AggregatedHealthState : Ok

                          NodeName              : _Node_3
                          AggregatedHealthState : Ok

                          NodeName              : _Node_2
                          AggregatedHealthState : Ok

                          NodeName              : _Node_1
                          AggregatedHealthState : Ok

                          NodeName              : _Node_0
                          AggregatedHealthState : Ok

ApplicationHealthStates : 
                          ApplicationName       : fabric:/System
                          AggregatedHealthState : Ok

                          ApplicationName       : fabric:/WordCount
                          AggregatedHealthState : Warning

HealthEvents            : None
HealthStatistics        : 
                          Node                  : 5 Ok, 0 Warning, 0 Error
                          Replica               : 6 Ok, 0 Warning, 0 Error
                          Partition             : 1 Ok, 1 Warning, 0 Error
                          Service               : 1 Ok, 1 Warning, 0 Error
                          DeployedServicePackage : 6 Ok, 0 Warning, 0 Error
                          DeployedApplication   : 5 Ok, 0 Warning, 0 Error
                          Application           : 0 Ok, 1 Warning, 0 Error

A következő PowerShell-parancsmag egy egyéni alkalmazásszabályzat használatával lekéri a fürt állapotát. Szűri az eredményeket, hogy csak az alkalmazásokat és a csomópontokat kérje le a hibából vagy a figyelmeztetésből. Ennek eredményeképpen a rendszer nem ad vissza csomópontokat, mivel mind kifogástalan állapotban vannak. Csak a háló:/WordCount alkalmazás tartja tiszteletben az alkalmazásszűrőt. Mivel az egyéni szabályzat azt határozza meg, hogy a figyelmeztetéseket hibaként vegye figyelembe a háló:/WordCount alkalmazás esetében, a rendszer hibaként értékeli ki az alkalmazást, és a fürt is.

PS D:\ServiceFabric> $appHealthPolicy = New-Object -TypeName System.Fabric.Health.ApplicationHealthPolicy
$appHealthPolicy.ConsiderWarningAsError = $true
$appHealthPolicyMap = New-Object -TypeName System.Fabric.Health.ApplicationHealthPolicyMap
$appUri1 = New-Object -TypeName System.Uri -ArgumentList "fabric:/WordCount"
$appHealthPolicyMap.Add($appUri1, $appHealthPolicy)
Get-ServiceFabricClusterHealth -ApplicationHealthPolicyMap $appHealthPolicyMap -ApplicationsFilter "Warning,Error" -NodesFilter "Warning,Error" -ExcludeHealthStatistics


AggregatedHealthState   : Error
UnhealthyEvaluations    : 
                          Unhealthy applications: 100% (1/1), MaxPercentUnhealthyApplications=0%.

                          Unhealthy application: ApplicationName='fabric:/WordCount', AggregatedHealthState='Error'.

                            Unhealthy services: 100% (1/1), ServiceType='WordCountServiceType', MaxPercentUnhealthyServices=0%.

                            Unhealthy service: ServiceName='fabric:/WordCount/WordCountService', AggregatedHealthState='Error'.

                                Unhealthy partitions: 100% (1/1), MaxPercentUnhealthyPartitionsPerService=0%.

                                Unhealthy partition: PartitionId='af2e3e44-a8f8-45ac-9f31-4093eb897600', AggregatedHealthState='Error'.

                                    Unhealthy event: SourceId='System.FM', Property='State', HealthState='Warning', ConsiderWarningAsError=true.


NodeHealthStates        : None
ApplicationHealthStates : 
                          ApplicationName       : fabric:/WordCount
                          AggregatedHealthState : Error

HealthEvents            : None

REST

A fürt állapotát lekérheti egy GET vagy egy POST kéréssel , amely a törzsben leírt állapotszabályzatokat is tartalmazza.

Csomópont állapotának lekérése

Egy csomópont entitás állapotát adja vissza, és tartalmazza a csomóponton jelentett állapoteseményeket. Bemenet:

  • [Kötelező] A csomópont nevét, amely azonosítja a csomópontot.
  • [Nem kötelező] Az állapot kiértékeléséhez használt fürtállapot-házirend-beállítások.
  • [Nem kötelező] Olyan események szűrői, amelyek meghatározzák, hogy mely bejegyzések érdekesek, és melyeket kell visszaadni az eredményben (például csak hibák, vagy figyelmeztetések és hibák). Minden esemény az entitás összesített állapotának kiértékelésére szolgál, a szűrőtől függetlenül.

API

A csomópont állapotának api-n keresztüli lekéréséhez hozzon létre egy FabricClient , majd hívja meg a GetNodeHealthAsync metódust a HealthManagerben.

A következő kód lekéri a csomópont állapotát a megadott csomópontnévhez:

NodeHealth nodeHealth = await fabricClient.HealthManager.GetNodeHealthAsync(nodeName);

A következő kód lekéri a csomópont állapotát a megadott csomópontnévhez, és a NodeHealthQueryDescription használatával átadja az eseményszűrőben és az egyéni szabályzatban:

var queryDescription = new NodeHealthQueryDescription(nodeName)
{
    HealthPolicy = new ClusterHealthPolicy() {  ConsiderWarningAsError = true },
    EventsFilter = new HealthEventsFilter() { HealthStateFilterValue = HealthStateFilter.Warning },
};

NodeHealth nodeHealth = await fabricClient.HealthManager.GetNodeHealthAsync(queryDescription);

PowerShell

A csomópont állapotának lekéréséhez szükséges parancsmag a Get-ServiceFabricNodeHealth. Először csatlakozzon a fürthöz a Connect-ServiceFabricCluster parancsmaggal. A következő parancsmag az alapértelmezett állapotszabályzatok használatával szerzi be a csomópont állapotát:

PS D:\ServiceFabric> Get-ServiceFabricNodeHealth _Node_1


NodeName              : _Node_1
AggregatedHealthState : Ok
HealthEvents          : 
                        SourceId              : System.FM
                        Property              : State
                        HealthState           : Ok
                        SequenceNumber        : 3
                        SentAt                : 7/13/2017 4:39:23 PM
                        ReceivedAt            : 7/13/2017 4:40:47 PM
                        TTL                   : Infinite
                        Description           : Fabric node is up.
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Ok = 7/13/2017 4:40:47 PM, LastWarning = 1/1/0001 12:00:00 AM

A következő parancsmag lekéri a fürt összes csomópontjának állapotát:

PS D:\ServiceFabric> Get-ServiceFabricNode | Get-ServiceFabricNodeHealth | select NodeName, AggregatedHealthState | ft -AutoSize

NodeName AggregatedHealthState
-------- ---------------------
_Node_4                     Ok
_Node_3                     Ok
_Node_2                     Ok
_Node_1                     Ok
_Node_0                     Ok

REST

A csomópont állapotát lekérheti egy GET vagy egy POST kéréssel , amely a törzsben leírt állapotszabályzatokat tartalmaz.

Alkalmazás állapotának lekérése

Egy alkalmazásentitás állapotát adja vissza. Tartalmazza az üzembe helyezett alkalmazás és a szolgáltatás gyermekeinek állapotállapotait. Bemenet:

  • [Kötelező] Az alkalmazást azonosító alkalmazásnév (URI).
  • [Nem kötelező] Az alkalmazásjegyzék-szabályzatok felülbírálásához használt alkalmazásállapot-szabályzat.
  • [Nem kötelező] Olyan eseményekre, szolgáltatásokra és üzembe helyezett alkalmazásokra vonatkozó szűrők, amelyek meghatározzák, hogy mely bejegyzések fontosak, és amelyeket az eredményben kell visszaadni (például csak hibák, vagy figyelmeztetések és hibák). Az összes esemény, szolgáltatás és üzembe helyezett alkalmazás az entitás összesített állapotának kiértékelésére szolgál a szűrőtől függetlenül.
  • [Nem kötelező] Szűrés az állapotstatisztikák kizárásához. Ha nincs megadva, az állapotstatisztikák tartalmazzák az ok, a figyelmeztetés és a hibaszámot az összes alkalmazáshoz: szolgáltatások, partíciók, replikák, üzembe helyezett alkalmazások és üzembe helyezett szolgáltatáscsomagok.

API

Az alkalmazás állapotának lekéréséhez hozzon létre egy FabricClient elemet, és hívja meg a GetApplicationHealthAsync metódust a HealthManagerben.

A következő kód lekéri a megadott alkalmazásnév (URI) alkalmazásállapotát:

ApplicationHealth applicationHealth = await fabricClient.HealthManager.GetApplicationHealthAsync(applicationName);

Az alábbi kód lekéri a megadott alkalmazásnév (URI) alkalmazásállapotát az ApplicationHealthQueryDescription használatával megadott szűrőkkel és egyéni szabályzatokkal.

HealthStateFilter warningAndErrors = HealthStateFilter.Error | HealthStateFilter.Warning;
var serviceTypePolicy = new ServiceTypeHealthPolicy()
{
    MaxPercentUnhealthyPartitionsPerService = 0,
    MaxPercentUnhealthyReplicasPerPartition = 5,
    MaxPercentUnhealthyServices = 0,
};
var policy = new ApplicationHealthPolicy()
{
    ConsiderWarningAsError = false,
    DefaultServiceTypeHealthPolicy = serviceTypePolicy,
    MaxPercentUnhealthyDeployedApplications = 0,
};

var queryDescription = new ApplicationHealthQueryDescription(applicationName)
{
    HealthPolicy = policy,
    EventsFilter = new HealthEventsFilter() { HealthStateFilterValue = warningAndErrors },
    ServicesFilter = new ServiceHealthStatesFilter() { HealthStateFilterValue = warningAndErrors },
    DeployedApplicationsFilter = new DeployedApplicationHealthStatesFilter() { HealthStateFilterValue = warningAndErrors },
};

ApplicationHealth applicationHealth = await fabricClient.HealthManager.GetApplicationHealthAsync(queryDescription);

PowerShell

Az alkalmazás állapotának lekéréséhez szükséges parancsmag a Get-ServiceFabricApplicationHealth. Először csatlakozzon a fürthöz a Connect-ServiceFabricCluster parancsmaggal.

A következő parancsmag a háló/WordCount alkalmazás állapotát adja vissza:

PS D:\ServiceFabric> Get-ServiceFabricApplicationHealth fabric:/WordCount


ApplicationName                 : fabric:/WordCount
AggregatedHealthState           : Warning
UnhealthyEvaluations            : 
                                  Unhealthy services: 100% (1/1), ServiceType='WordCountServiceType', MaxPercentUnhealthyServices=0%.

                                  Unhealthy service: ServiceName='fabric:/WordCount/WordCountService', AggregatedHealthState='Warning'.

                                    Unhealthy partitions: 100% (1/1), MaxPercentUnhealthyPartitionsPerService=0%.

                                    Unhealthy partition: PartitionId='af2e3e44-a8f8-45ac-9f31-4093eb897600', AggregatedHealthState='Warning'.

                                        Unhealthy event: SourceId='System.FM', Property='State', HealthState='Warning', ConsiderWarningAsError=false.

ServiceHealthStates             : 
                                  ServiceName           : fabric:/WordCount/WordCountWebService
                                  AggregatedHealthState : Ok

                                  ServiceName           : fabric:/WordCount/WordCountService
                                  AggregatedHealthState : Warning

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

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

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

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

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

HealthEvents                    : 
                                  SourceId              : System.CM
                                  Property              : State
                                  HealthState           : Ok
                                  SequenceNumber        : 282
                                  SentAt                : 7/13/2017 5:57:05 PM
                                  ReceivedAt            : 7/13/2017 5:57:05 PM
                                  TTL                   : Infinite
                                  Description           : Application has been created.
                                  RemoveWhenExpired     : False
                                  IsExpired             : False
                                  Transitions           : Error->Ok = 7/13/2017 5:57:05 PM, LastWarning = 1/1/0001 12:00:00 AM

HealthStatistics                : 
                                  Replica               : 6 Ok, 0 Warning, 0 Error
                                  Partition             : 1 Ok, 1 Warning, 0 Error
                                  Service               : 1 Ok, 1 Warning, 0 Error
                                  DeployedServicePackage : 6 Ok, 0 Warning, 0 Error
                                  DeployedApplication   : 5 Ok, 0 Warning, 0 Error

Az alábbi PowerShell-parancsmag az egyéni szabályzatokban halad át. Emellett szűri a gyermekeket és az eseményeket is.

PS D:\ServiceFabric> Get-ServiceFabricApplicationHealth -ApplicationName fabric:/WordCount -ConsiderWarningAsError $true -ServicesFilter Error -EventsFilter Error -DeployedApplicationsFilter Error -ExcludeHealthStatistics


ApplicationName                 : fabric:/WordCount
AggregatedHealthState           : Error
UnhealthyEvaluations            : 
                                  Unhealthy services: 100% (1/1), ServiceType='WordCountServiceType', MaxPercentUnhealthyServices=0%.

                                  Unhealthy service: ServiceName='fabric:/WordCount/WordCountService', AggregatedHealthState='Error'.

                                    Unhealthy partitions: 100% (1/1), MaxPercentUnhealthyPartitionsPerService=0%.

                                    Unhealthy partition: PartitionId='af2e3e44-a8f8-45ac-9f31-4093eb897600', AggregatedHealthState='Error'.

                                        Unhealthy event: SourceId='System.FM', Property='State', HealthState='Warning', ConsiderWarningAsError=true.

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

DeployedApplicationHealthStates : None
HealthEvents                    : None

REST

Az alkalmazás állapotát lekérheti egy GET vagy post kéréssel , amely a törzsben leírt állapotszabályzatokat tartalmaz.

Szolgáltatás állapotának lekérése

Egy szolgáltatásentitás állapotát adja vissza. A partíció állapotállapotait tartalmazza. Bemenet:

  • [Kötelező] A szolgáltatást azonosító szolgáltatásnév (URI).
  • [Nem kötelező] Az alkalmazásjegyzék-szabályzat felülbírálásához használt alkalmazásállapot-szabályzat.
  • [Nem kötelező] Olyan események és partíciók szűrői, amelyek meghatározzák, hogy mely bejegyzések érdekesek, és melyeket kell visszaadni az eredményben (például csak hibák, vagy figyelmeztetések és hibák). Az összes esemény és partíció az entitás összesített állapotának kiértékelésére szolgál, a szűrőtől függetlenül.
  • [Nem kötelező] Szűrő az állapotstatisztikák kizárásához. Ha nincs megadva, az állapotstatisztikák a szolgáltatás összes partíciójának és replikájának OK, figyelmeztetés és hibaszámát jelenítik meg.

API

A szolgáltatás állapotának API-n keresztüli lekéréséhez hozzon létre egy FabricClient elemet, és hívja meg a GetServiceHealthAsync metódust a HealthManageren.

Az alábbi példa lekéri egy megadott szolgáltatásnévvel (URI) rendelkező szolgáltatás állapotát:

ServiceHealth serviceHealth = await fabricClient.HealthManager.GetServiceHealthAsync(serviceName);

A következő kód lekéri a megadott szolgáltatásnév (URI) szolgáltatásállapotát, és a ServiceHealthQueryDescription használatával szűrőket és egyéni szabályzatokat ad meg:

var queryDescription = new ServiceHealthQueryDescription(serviceName)
{
    EventsFilter = new HealthEventsFilter() { HealthStateFilterValue = HealthStateFilter.All },
    PartitionsFilter = new PartitionHealthStatesFilter() { HealthStateFilterValue = HealthStateFilter.Error },
};

ServiceHealth serviceHealth = await fabricClient.HealthManager.GetServiceHealthAsync(queryDescription);

PowerShell

A szolgáltatás állapotának lekéréséhez szükséges parancsmag a Get-ServiceFabricServiceHealth. Először csatlakozzon a fürthöz a Connect-ServiceFabricCluster parancsmaggal.

A következő parancsmag az alapértelmezett állapotszabályzatok használatával szerzi be a szolgáltatás állapotát:

PS D:\ServiceFabric> Get-ServiceFabricServiceHealth -ServiceName fabric:/WordCount/WordCountService


ServiceName           : fabric:/WordCount/WordCountService
AggregatedHealthState : Warning
UnhealthyEvaluations  : 
                        Unhealthy partitions: 100% (1/1), MaxPercentUnhealthyPartitionsPerService=0%.

                        Unhealthy partition: PartitionId='af2e3e44-a8f8-45ac-9f31-4093eb897600', AggregatedHealthState='Warning'.

                            Unhealthy event: SourceId='System.FM', Property='State', HealthState='Warning', ConsiderWarningAsError=false.

PartitionHealthStates : 
                        PartitionId           : af2e3e44-a8f8-45ac-9f31-4093eb897600
                        AggregatedHealthState : Warning

HealthEvents          : 
                        SourceId              : System.FM
                        Property              : State
                        HealthState           : Ok
                        SequenceNumber        : 15
                        SentAt                : 7/13/2017 5:57:05 PM
                        ReceivedAt            : 7/13/2017 5:57:18 PM
                        TTL                   : Infinite
                        Description           : Service has been created.
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Ok = 7/13/2017 5:57:18 PM, LastWarning = 1/1/0001 12:00:00 AM

HealthStatistics      : 
                        Replica               : 5 Ok, 0 Warning, 0 Error
                        Partition             : 0 Ok, 1 Warning, 0 Error

REST

A szolgáltatás állapotát lekérheti egy GET vagy post kéréssel , amely tartalmazza a törzsben leírt állapotszabályzatokat.

Partíció állapotának lekérése

Egy partícióentitás állapotát adja vissza. A replika állapotállapotait tartalmazza. Bemenet:

  • [Kötelező] A partíciót azonosító partícióazonosító (GUID).
  • [Nem kötelező] Az alkalmazásjegyzék-szabályzat felülbírálásához használt alkalmazásállapot-szabályzat.
  • [Nem kötelező] Olyan események és replikák szűrői, amelyek meghatározzák, hogy mely bejegyzések érdekesek, és melyeket kell visszaadni az eredményben (például csak hibák, vagy figyelmeztetések és hibák). Az összes esemény és replika az entitás összesített állapotának kiértékelésére szolgál, a szűrőtől függetlenül.
  • [Nem kötelező] Szűrő az állapotstatisztikák kizárásához. Ha nincs megadva, az állapotstatisztikák azt mutatják, hogy hány replika van rendben, figyelmeztetés és hibaállapot.

API

A partíció állapotának API-n keresztüli lekéréséhez hozzon létre egy FabricClient , majd hívja meg a GetPartitionHealthAsync metódust a HealthManagerben. Választható paraméterek megadásához hozza létre a PartitionHealthQueryDescription parancsot.

PartitionHealth partitionHealth = await fabricClient.HealthManager.GetPartitionHealthAsync(partitionId);

PowerShell

A partíció állapotának lekéréséhez szükséges parancsmag a Get-ServiceFabricPartitionHealth. Először csatlakozzon a fürthöz a Connect-ServiceFabricCluster parancsmaggal.

A következő parancsmag lekéri a háló összes partíciójának állapotát :/WordCount/WordCountService szolgáltatás, és kiszűri a replika állapotállapotait:

PS D:\ServiceFabric> Get-ServiceFabricPartition fabric:/WordCount/WordCountService | Get-ServiceFabricPartitionHealth -ReplicasFilter None

PartitionId           : af2e3e44-a8f8-45ac-9f31-4093eb897600
AggregatedHealthState : Warning
UnhealthyEvaluations  : 
                        Unhealthy event: SourceId='System.FM', Property='State', HealthState='Warning', ConsiderWarningAsError=false.

ReplicaHealthStates   : None
HealthEvents          : 
                        SourceId              : System.FM
                        Property              : State
                        HealthState           : Warning
                        SequenceNumber        : 72
                        SentAt                : 7/13/2017 5:57:29 PM
                        ReceivedAt            : 7/13/2017 5:57:48 PM
                        TTL                   : Infinite
                        Description           : Partition is below target replica or instance count.
                        fabric:/WordCount/WordCountService 7 2 af2e3e44-a8f8-45ac-9f31-4093eb897600
                          N/P RD _Node_2 Up 131444422260002646
                          N/S RD _Node_4 Up 131444422293113678
                          N/S RD _Node_3 Up 131444422293113679
                          N/S RD _Node_1 Up 131444422293118720
                          N/S RD _Node_0 Up 131444422293118721
                          (Showing 5 out of 5 replicas. Total available replicas: 5.)

                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Ok->Warning = 7/13/2017 5:57:48 PM, LastError = 1/1/0001 12:00:00 AM

                        SourceId              : System.PLB
                        Property              : ServiceReplicaUnplacedHealth_Secondary_af2e3e44-a8f8-45ac-9f31-4093eb897600
                        HealthState           : Warning
                        SequenceNumber        : 131444445174851664
                        SentAt                : 7/13/2017 6:35:17 PM
                        ReceivedAt            : 7/13/2017 6:35:18 PM
                        TTL                   : 00:01:05
                        Description           : The Load Balancer was unable to find a placement for one or more of the Service's Replicas:
                        Secondary replica could not be placed due to the following constraints and properties:  
                        TargetReplicaSetSize: 7
                        Placement Constraint: N/A
                        Parent Service: N/A

                        Constraint Elimination Sequence:
                        Existing Secondary Replicas eliminated 4 possible node(s) for placement -- 1/5 node(s) remain.
                        Existing Primary Replica eliminated 1 possible node(s) for placement -- 0/5 node(s) remain.

                        Nodes Eliminated By Constraints:

                        Existing Secondary Replicas -- Nodes with Partition's Existing Secondary Replicas/Instances:
                        --
                        FaultDomain:fd:/4 NodeName:_Node_4 NodeType:NodeType4 UpgradeDomain:4 UpgradeDomain: ud:/4 Deactivation Intent/Status: None/None
                        FaultDomain:fd:/3 NodeName:_Node_3 NodeType:NodeType3 UpgradeDomain:3 UpgradeDomain: ud:/3 Deactivation Intent/Status: None/None
                        FaultDomain:fd:/1 NodeName:_Node_1 NodeType:NodeType1 UpgradeDomain:1 UpgradeDomain: ud:/1 Deactivation Intent/Status: None/None
                        FaultDomain:fd:/0 NodeName:_Node_0 NodeType:NodeType0 UpgradeDomain:0 UpgradeDomain: ud:/0 Deactivation Intent/Status: None/None

                        Existing Primary Replica -- Nodes with Partition's Existing Primary Replica or Secondary Replicas:
                        --
                        FaultDomain:fd:/2 NodeName:_Node_2 NodeType:NodeType2 UpgradeDomain:2 UpgradeDomain: ud:/2 Deactivation Intent/Status: None/None


                        RemoveWhenExpired     : True
                        IsExpired             : False
                        Transitions           : Error->Warning = 7/13/2017 5:57:48 PM, LastOk = 1/1/0001 12:00:00 AM

HealthStatistics      : 
                        Replica               : 5 Ok, 0 Warning, 0 Error

REST

A partíció állapotát lekérheti egy GET vagy post kéréssel , amely tartalmazza a törzsben leírt állapotszabályzatokat.

Replika állapotának lekérése

Állapotalapú szolgáltatásreplika vagy állapot nélküli szolgáltatáspéldány állapotát adja vissza. Bemenet:

  • [Kötelező] A replikát azonosító partícióazonosító (GUID) és replikaazonosító.
  • [Nem kötelező] Az alkalmazásjegyzék-szabályzatok felülbírálásához használt alkalmazásállapot-szabályzatparaméterek.
  • [Nem kötelező] Olyan események szűrői, amelyek meghatározzák, hogy mely bejegyzések érdekesek, és melyeket kell visszaadni az eredményben (például csak hibák, vagy figyelmeztetések és hibák). Minden esemény az entitás összesített állapotának kiértékelésére szolgál, a szűrőtől függetlenül.

API

A replika állapotának API-n keresztüli lekéréséhez hozzon létre egy FabricClient , majd hívja meg a GetReplicaHealthAsync metódust a HealthManagerben. Speciális paraméterek megadásához használja a ReplicaHealthQueryDescription parancsot.

ReplicaHealth replicaHealth = await fabricClient.HealthManager.GetReplicaHealthAsync(partitionId, replicaId);

PowerShell

A replika állapotának lekéréséhez szükséges parancsmag a Get-ServiceFabricReplicaHealth. Először csatlakozzon a fürthöz a Connect-ServiceFabricCluster parancsmaggal.

A következő parancsmag lekéri az elsődleges replika állapotát a szolgáltatás összes partíciójára vonatkozóan:

PS D:\ServiceFabric> Get-ServiceFabricPartition fabric:/WordCount/WordCountService | Get-ServiceFabricReplica | where {$_.ReplicaRole -eq "Primary"} | Get-ServiceFabricReplicaHealth


PartitionId           : af2e3e44-a8f8-45ac-9f31-4093eb897600
ReplicaId             : 131444422260002646
AggregatedHealthState : Ok
HealthEvents          : 
                        SourceId              : System.RA
                        Property              : State
                        HealthState           : Ok
                        SequenceNumber        : 131444422263668344
                        SentAt                : 7/13/2017 5:57:06 PM
                        ReceivedAt            : 7/13/2017 5:57:18 PM
                        TTL                   : Infinite
                        Description           : Replica has been created._Node_2
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Ok = 7/13/2017 5:57:18 PM, LastWarning = 1/1/0001 12:00:00 AM

REST

A replika állapotát lekérheti egy GET vagy post kéréssel , amely tartalmazza a törzsben leírt állapotszabályzatokat.

Üzembe helyezett alkalmazás állapotának lekérése

Egy csomópontentitáson üzembe helyezett alkalmazás állapotát adja vissza. Tartalmazza az üzembe helyezett szolgáltatáscsomag állapotállapotait. Bemenet:

  • [Kötelező] Az üzembe helyezett alkalmazást azonosító alkalmazásnév (URI) és csomópontnév (sztring).
  • [Nem kötelező] Az alkalmazásjegyzék-szabályzatok felülbírálásához használt alkalmazásállapot-szabályzat.
  • [Nem kötelező] Az események és az üzembe helyezett szolgáltatáscsomagok szűrői, amelyek meghatározzák, hogy mely bejegyzések érdekesek, és melyeket kell visszaadni az eredményben (például csak hibák, vagy figyelmeztetések és hibák). Az összes esemény és üzembe helyezett szolgáltatáscsomag az entitás összesített állapotának kiértékelésére szolgál, a szűrőtől függetlenül.
  • [Nem kötelező] Szűrő az állapotstatisztikák kizárásához. Ha nincs megadva, az állapotstatisztikák az üzembe helyezett szolgáltatáscsomagok számát jelenítik meg az ok, a figyelmeztetés és a hibaállapot állapotában.

API

Ha egy csomóponton üzembe helyezett alkalmazás állapotát szeretné lekérni az API-n keresztül, hozzon létre egy FabricClient elemet, és hívja meg a GetDeployedApplicationHealthAsync metódust a HealthManageren. Választható paraméterek megadásához használja az DeployedApplicationHealthQueryDescription parancsot.

DeployedApplicationHealth health = await fabricClient.HealthManager.GetDeployedApplicationHealthAsync(
    new DeployedApplicationHealthQueryDescription(applicationName, nodeName));

PowerShell

Az üzembe helyezett alkalmazás állapotának lekéréséhez használt parancsmag a Get-ServiceFabricDeployedApplicationHealth. Először csatlakozzon a fürthöz a Connect-ServiceFabricCluster parancsmaggal. Az alkalmazás üzembe helyezésének kiderítéséhez futtassa a Get-ServiceFabricApplicationHealth parancsot , és tekintse meg az üzembe helyezett alkalmazás gyermekeit.

A következő parancsmag lekéri a háló állapotát :/WordCount alkalmazás üzembe helyezve a _Node_2.

PS D:\ServiceFabric> Get-ServiceFabricDeployedApplicationHealth -ApplicationName fabric:/WordCount -NodeName _Node_0


ApplicationName                    : fabric:/WordCount
NodeName                           : _Node_0
AggregatedHealthState              : Ok
DeployedServicePackageHealthStates : 
                                     ServiceManifestName   : WordCountServicePkg
                                     ServicePackageActivationId : 
                                     NodeName              : _Node_0
                                     AggregatedHealthState : Ok

                                     ServiceManifestName   : WordCountWebServicePkg
                                     ServicePackageActivationId : 
                                     NodeName              : _Node_0
                                     AggregatedHealthState : Ok

HealthEvents                       : 
                                     SourceId              : System.Hosting
                                     Property              : Activation
                                     HealthState           : Ok
                                     SequenceNumber        : 131444422261848308
                                     SentAt                : 7/13/2017 5:57:06 PM
                                     ReceivedAt            : 7/13/2017 5:57:17 PM
                                     TTL                   : Infinite
                                     Description           : The application was activated successfully.
                                     RemoveWhenExpired     : False
                                     IsExpired             : False
                                     Transitions           : Error->Ok = 7/13/2017 5:57:17 PM, LastWarning = 1/1/0001 12:00:00 AM

HealthStatistics                   : 
                                     DeployedServicePackage : 2 Ok, 0 Warning, 0 Error

REST

Az üzembe helyezett alkalmazás állapotát get kéréssel vagy post kéréssel kérheti le, amely a törzsben leírt állapotszabályzatokat is tartalmazza.

Üzembe helyezett szolgáltatáscsomag állapotának lekérése

Egy üzembe helyezett szolgáltatáscsomag-entitás állapotát adja vissza. Bemenet:

  • [Kötelező] Az alkalmazásnév (URI), a csomópont neve (sztring) és a szolgáltatásjegyzék neve (sztring), amely azonosítja az üzembe helyezett szolgáltatáscsomagot.
  • [Nem kötelező] Az alkalmazásjegyzék-szabályzat felülbírálásához használt alkalmazásállapot-szabályzat.
  • [Nem kötelező] Olyan események szűrői, amelyek meghatározzák, hogy mely bejegyzések érdekesek, és melyeket kell visszaadni az eredményben (például csak hibák, vagy figyelmeztetések és hibák). Minden esemény az entitás összesített állapotának kiértékelésére szolgál, a szűrőtől függetlenül.

API

Ha az API-n keresztül szeretné lekérni egy üzembe helyezett szolgáltatáscsomag állapotát, hozzon létre egy FabricClient elemet, és hívja meg a GetDeployedServicePackageHealthAsync metódust a HealthManageren. Választható paraméterek megadásához használja az DeployedServicePackageHealthQueryDescription parancsot.

DeployedServicePackageHealth health = await fabricClient.HealthManager.GetDeployedServicePackageHealthAsync(
    new DeployedServicePackageHealthQueryDescription(applicationName, nodeName, serviceManifestName));

PowerShell

Az üzembe helyezett szolgáltatáscsomag állapotának lekéréséhez használt parancsmag a Get-ServiceFabricDeployedServicePackageHealth. Először csatlakozzon a fürthöz a Connect-ServiceFabricCluster parancsmaggal. Az alkalmazások üzembe helyezésének megtekintéséhez futtassa a Get-ServiceFabricApplicationHealth parancsot , és tekintse meg az üzembe helyezett alkalmazásokat. Annak megtekintéséhez, hogy mely szolgáltatáscsomagok találhatók egy alkalmazásban, tekintse meg az üzembe helyezett szolgáltatáscsomag gyermekeit a Get-ServiceFabricDeployedApplicationHealth kimenetben.

A következő parancsmag lekéri a háló WordCountServicePkg szolgáltatáscsomagjának állapotát : /WordCount alkalmazás üzembe helyezve a _Node_2. Az entitás System.Hosting-jelentésekkel rendelkezik a sikeres szolgáltatáscsomag- és belépésipont-aktiváláshoz, valamint a sikeres szolgáltatástípus-regisztrációhoz.

PS D:\ServiceFabric> Get-ServiceFabricDeployedApplication -ApplicationName fabric:/WordCount -NodeName _Node_2 | Get-ServiceFabricDeployedServicePackageHealth -ServiceManifestName WordCountServicePkg


ApplicationName            : fabric:/WordCount
ServiceManifestName        : WordCountServicePkg
ServicePackageActivationId : 
NodeName                   : _Node_2
AggregatedHealthState      : Ok
HealthEvents               : 
                             SourceId              : System.Hosting
                             Property              : Activation
                             HealthState           : Ok
                             SequenceNumber        : 131444422267693359
                             SentAt                : 7/13/2017 5:57:06 PM
                             ReceivedAt            : 7/13/2017 5:57:18 PM
                             TTL                   : Infinite
                             Description           : The ServicePackage was activated successfully.
                             RemoveWhenExpired     : False
                             IsExpired             : False
                             Transitions           : Error->Ok = 7/13/2017 5:57:18 PM, LastWarning = 1/1/0001 12:00:00 AM

                             SourceId              : System.Hosting
                             Property              : CodePackageActivation:Code:EntryPoint
                             HealthState           : Ok
                             SequenceNumber        : 131444422267903345
                             SentAt                : 7/13/2017 5:57:06 PM
                             ReceivedAt            : 7/13/2017 5:57:18 PM
                             TTL                   : Infinite
                             Description           : The CodePackage was activated successfully.
                             RemoveWhenExpired     : False
                             IsExpired             : False
                             Transitions           : Error->Ok = 7/13/2017 5:57:18 PM, LastWarning = 1/1/0001 12:00:00 AM

                             SourceId              : System.Hosting
                             Property              : ServiceTypeRegistration:WordCountServiceType
                             HealthState           : Ok
                             SequenceNumber        : 131444422272458374
                             SentAt                : 7/13/2017 5:57:07 PM
                             ReceivedAt            : 7/13/2017 5:57:18 PM
                             TTL                   : Infinite
                             Description           : The ServiceType was registered successfully.
                             RemoveWhenExpired     : False
                             IsExpired             : False
                             Transitions           : Error->Ok = 7/13/2017 5:57:18 PM, LastWarning = 1/1/0001 12:00:00 AM

REST

Az üzembe helyezett szolgáltatáscsomag állapotát get kéréssel vagy post kéréssel kérheti le, amely tartalmazza a törzsben leírt állapotszabályzatokat.

Állapottömb-lekérdezések

Az állapottömb-lekérdezések többszintű fürt gyermekeket (rekurzív módon) adhatnak vissza bemeneti szűrők szerint. Támogatja a speciális szűrőket, amelyek nagy rugalmasságot biztosítanak a visszaadni kívánt gyermekek kiválasztásában. A szűrők az egyedi azonosító vagy más csoportazonosítók és/vagy állapotállapotok alapján adhatják meg a gyermekeket. Alapértelmezés szerint a rendszer nem tartalmaz gyermekeket, szemben az egészségügyi parancsokkal, amelyek mindig az első szintű gyermekeket tartalmazzák.

Az állapot-lekérdezések csak a megadott entitás első szintű gyermekeit adják vissza a szükséges szűrők alapján. A gyermekek gyermekeinek lekéréséhez minden érintett entitáshoz további egészségügyi API-kat kell meghívnia. Hasonlóképpen, az egyes entitások állapotának lekéréséhez minden kívánt entitáshoz egy állapot API-t kell meghívnia. Az adattömb lekérdezésének speciális szűrése lehetővé teszi, hogy több érdekes elemet kérjen egy lekérdezésben, minimalizálva az üzenet méretét és az üzenetek számát.

Az adattömb-lekérdezés értéke, hogy egy hívásban több fürtentitáshoz (esetleg a szükséges gyökértől kezdődő összes fürtentitáshoz) is lekérheti az állapotot. Összetett állapot lekérdezéseket fejezhet ki, például:

  • Csak a hibás alkalmazásokat adja vissza, és ezeknél az alkalmazásoknál minden szolgáltatás szerepel a figyelmeztetésben vagy a hibában. A visszaadott szolgáltatások esetében tartalmazza az összes partíciót.
  • Csak a nevükben megadott négy alkalmazás állapotát adja vissza.
  • Csak a kívánt alkalmazástípusú alkalmazások állapotát adja vissza.
  • Adja vissza a csomóponton üzembe helyezett összes entitást. Visszaadja az összes alkalmazást, a megadott csomóponton üzembe helyezett összes alkalmazást és az adott csomóponton üzembe helyezett összes szolgáltatáscsomagot.
  • Adja vissza az összes hibás replikát. Az összes alkalmazást, szolgáltatást, partíciót és csak a hibás replikákat adja vissza.
  • Adja vissza az összes alkalmazást. Egy adott szolgáltatás esetében adja meg az összes partíciót.

Az állapot-adattömb lekérdezés jelenleg csak a fürt entitása számára érhető el. Egy fürtállapot-adattömböt ad vissza, amely a következőket tartalmazza:

  • A fürt összesített állapota.
  • A bemeneti szűrőket tiszteletben tartó csomópontok állapotának adattömblistája.
  • A bemeneti szűrőket tiszteletben tartó alkalmazások állapotának adattömblistája. Minden alkalmazásállapot-adattömb tartalmaz egy adattömblistát, amely tartalmazza az összes olyan szolgáltatást, amely tiszteletben tartja a bemeneti szűrőket, valamint egy adattömblistát, amelyben minden olyan üzembe helyezett alkalmazás szerepel, amely tiszteletben tartja a szűrőket. Ugyanez vonatkozik a szolgáltatások és az üzembe helyezett alkalmazások gyermekeire is. Így a fürt összes entitása hierarchikus módon, igény szerint visszaadható.

Fürtállapot-adattömb lekérdezése

Visszaadja a fürt entitásának állapotát, és tartalmazza a szükséges gyermekek hierarchikus állapotrészleteit. Bemenet:

  • [Nem kötelező] A csomópontok és a fürtesemények kiértékeléséhez használt fürtállapot-szabályzat.
  • [Nem kötelező] Az alkalmazásállapot-szabályzat térképe az alkalmazásjegyzék-szabályzatok felülbírálásához használt állapotszabályzatokkal.
  • [Nem kötelező] Azoknak a csomópontoknak és alkalmazásoknak a szűrői, amelyek meghatározzák, hogy mely bejegyzések érdekesek, és az eredményben kell visszaadni. A szűrők egy entitásra/entitáscsoportra vonatkoznak, vagy az adott szinten lévő összes entitásra alkalmazhatók. A szűrők listája egy általános szűrőt és/vagy szűrőt tartalmazhat adott azonosítókhoz a lekérdezés által visszaadott, részletes entitásokhoz. Ha üres, a rendszer alapértelmezés szerint nem adja vissza a gyermekeket. További információ a NodeHealthStateFilter és az ApplicationHealthStateFilter szűrőkről. Az alkalmazásszűrők rekurzív módon adhatnak meg speciális szűrőket a gyermekek számára.

Az adattömb eredménye tartalmazza a szűrőket tiszteletben tartó gyermekeket.

Az adattömb-lekérdezés jelenleg nem ad vissza nem megfelelő állapotú értékeléseket vagy entitáseseményeket. Ez a további információ a meglévő fürtállapot-lekérdezéssel szerezhető be.

API

A fürtállapot-adattömb lekéréséhez hozzon létre egy FabricClient elemet, és hívja meg a GetClusterHealthChunkAsync metódust a HealthManagerben. A ClusterHealthQueryDescription parancsot átadva leírhatja az állapotszabályzatokat és a speciális szűrőket.

Az alábbi kód speciális szűrőkkel lekéri a fürtállapot-adattömböt.

var queryDescription = new ClusterHealthChunkQueryDescription();
queryDescription.ApplicationFilters.Add(new ApplicationHealthStateFilter()
    {
        // Return applications only if they are in error
        HealthStateFilter = HealthStateFilter.Error
    });

// Return all replicas
var wordCountServiceReplicaFilter = new ReplicaHealthStateFilter()
    {
        HealthStateFilter = HealthStateFilter.All
    };

// Return all replicas and all partitions
var wordCountServicePartitionFilter = new PartitionHealthStateFilter()
    {
        HealthStateFilter = HealthStateFilter.All
    };
wordCountServicePartitionFilter.ReplicaFilters.Add(wordCountServiceReplicaFilter);

// For specific service, return all partitions and all replicas
var wordCountServiceFilter = new ServiceHealthStateFilter()
{
    ServiceNameFilter = new Uri("fabric:/WordCount/WordCountService"),
};
wordCountServiceFilter.PartitionFilters.Add(wordCountServicePartitionFilter);

// Application filter: for specific application, return no services except the ones of interest
var wordCountApplicationFilter = new ApplicationHealthStateFilter()
    {
        // Always return fabric:/WordCount application
        ApplicationNameFilter = new Uri("fabric:/WordCount"),
    };
wordCountApplicationFilter.ServiceFilters.Add(wordCountServiceFilter);

queryDescription.ApplicationFilters.Add(wordCountApplicationFilter);

var result = await fabricClient.HealthManager.GetClusterHealthChunkAsync(queryDescription);

PowerShell

A fürt állapotának lekéréséhez szükséges parancsmag a Get-ServiceFabricClusterChunkHealth. Először csatlakozzon a fürthöz a Connect-ServiceFabricCluster parancsmaggal.

A következő kód csak akkor kapja meg a csomópontokat, ha hibásak, kivéve egy adott csomópontot, amelyet mindig vissza kell adni.

PS D:\ServiceFabric> $errorFilter = [System.Fabric.Health.HealthStateFilter]::Error;
$allFilter = [System.Fabric.Health.HealthStateFilter]::All;

$nodeFilter1 = New-Object System.Fabric.Health.NodeHealthStateFilter -Property @{HealthStateFilter=$errorFilter}
$nodeFilter2 = New-Object System.Fabric.Health.NodeHealthStateFilter -Property @{NodeNameFilter="_Node_1";HealthStateFilter=$allFilter}
# Create node filter list that will be passed in the cmdlet
$nodeFilters = New-Object System.Collections.Generic.List[System.Fabric.Health.NodeHealthStateFilter]
$nodeFilters.Add($nodeFilter1)
$nodeFilters.Add($nodeFilter2)

Get-ServiceFabricClusterHealthChunk -NodeFilters $nodeFilters


HealthState                  : Warning
NodeHealthStateChunks        : 
                               TotalCount            : 1

                               NodeName              : _Node_1
                               HealthState           : Ok

ApplicationHealthStateChunks : None

A következő parancsmag alkalmazásszűrőkkel lekéri a fürttömböt.

PS D:\ServiceFabric> $errorFilter = [System.Fabric.Health.HealthStateFilter]::Error;
$allFilter = [System.Fabric.Health.HealthStateFilter]::All;

# All replicas
$replicaFilter = New-Object System.Fabric.Health.ReplicaHealthStateFilter -Property @{HealthStateFilter=$allFilter}

# All partitions
$partitionFilter = New-Object System.Fabric.Health.PartitionHealthStateFilter -Property @{HealthStateFilter=$allFilter}
$partitionFilter.ReplicaFilters.Add($replicaFilter)

# For WordCountService, return all partitions and all replicas
$svcFilter1 = New-Object System.Fabric.Health.ServiceHealthStateFilter -Property @{ServiceNameFilter="fabric:/WordCount/WordCountService"}
$svcFilter1.PartitionFilters.Add($partitionFilter)

$svcFilter2 = New-Object System.Fabric.Health.ServiceHealthStateFilter -Property @{HealthStateFilter=$errorFilter}

$appFilter = New-Object System.Fabric.Health.ApplicationHealthStateFilter -Property @{ApplicationNameFilter="fabric:/WordCount"}
$appFilter.ServiceFilters.Add($svcFilter1)
$appFilter.ServiceFilters.Add($svcFilter2)

$appFilters = New-Object System.Collections.Generic.List[System.Fabric.Health.ApplicationHealthStateFilter]
$appFilters.Add($appFilter)

Get-ServiceFabricClusterHealthChunk -ApplicationFilters $appFilters


HealthState                  : Error
NodeHealthStateChunks        : None
ApplicationHealthStateChunks : 
                               TotalCount            : 1

                               ApplicationName       : fabric:/WordCount
                               ApplicationTypeName   : WordCount
                               HealthState           : Error
                               ServiceHealthStateChunks : 
                                TotalCount            : 1

                                ServiceName           : fabric:/WordCount/WordCountService
                                HealthState           : Error
                                PartitionHealthStateChunks : 
                                    TotalCount            : 1

                                    PartitionId           : af2e3e44-a8f8-45ac-9f31-4093eb897600
                                    HealthState           : Error
                                    ReplicaHealthStateChunks : 
                                        TotalCount            : 5

                                        ReplicaOrInstanceId   : 131444422293118720
                                        HealthState           : Ok

                                        ReplicaOrInstanceId   : 131444422293118721
                                        HealthState           : Ok

                                        ReplicaOrInstanceId   : 131444422293113678
                                        HealthState           : Ok

                                        ReplicaOrInstanceId   : 131444422293113679
                                        HealthState           : Ok

                                        ReplicaOrInstanceId   : 131444422260002646
                                        HealthState           : Error

A következő parancsmag a csomóponton üzembe helyezett összes entitást visszaadja.

PS D:\ServiceFabric> $errorFilter = [System.Fabric.Health.HealthStateFilter]::Error;
$allFilter = [System.Fabric.Health.HealthStateFilter]::All;

$dspFilter = New-Object System.Fabric.Health.DeployedServicePackageHealthStateFilter -Property @{HealthStateFilter=$allFilter}
$daFilter =  New-Object System.Fabric.Health.DeployedApplicationHealthStateFilter -Property @{HealthStateFilter=$allFilter;NodeNameFilter="_Node_2"}
$daFilter.DeployedServicePackageFilters.Add($dspFilter)

$appFilter = New-Object System.Fabric.Health.ApplicationHealthStateFilter -Property @{HealthStateFilter=$allFilter}
$appFilter.DeployedApplicationFilters.Add($daFilter)

$appFilters = New-Object System.Collections.Generic.List[System.Fabric.Health.ApplicationHealthStateFilter]
$appFilters.Add($appFilter)
Get-ServiceFabricClusterHealthChunk -ApplicationFilters $appFilters


HealthState                  : Error
NodeHealthStateChunks        : None
ApplicationHealthStateChunks : 
                               TotalCount            : 2

                               ApplicationName       : fabric:/System
                               HealthState           : Ok
                               DeployedApplicationHealthStateChunks : 
                                TotalCount            : 1

                                NodeName              : _Node_2
                                HealthState           : Ok
                                DeployedServicePackageHealthStateChunks :
                                    TotalCount            : 1

                                    ServiceManifestName   : FAS
                                    ServicePackageActivationId : 
                                    HealthState           : Ok



                               ApplicationName       : fabric:/WordCount
                               ApplicationTypeName   : WordCount
                               HealthState           : Error
                               DeployedApplicationHealthStateChunks : 
                                TotalCount            : 1

                                NodeName              : _Node_2
                                HealthState           : Ok
                                DeployedServicePackageHealthStateChunks :
                                    TotalCount            : 1

                                    ServiceManifestName   : WordCountServicePkg
                                    ServicePackageActivationId : 
                                    HealthState           : Ok

REST

A fürtállapot-adattömböt lekérheti egy GET vagy egy POST kéréssel , amely a törzsben leírt állapotszabályzatokat és speciális szűrőket tartalmaz.

Általános lekérdezések

Az általános lekérdezések egy adott típusú Service Fabric-entitások listáját adják vissza. Ezek az API-n (a FabricClient.QueryManager metódusain), a PowerShell-parancsmagokon és a REST-en keresztül érhetők el. Ezek a lekérdezések több összetevő albekérdezéseit összesítik. Ezek egyike az állapottároló, amely az egyes lekérdezési eredmények összesített állapotát tölti fel.

Megjegyzés

Az általános lekérdezések visszaadják az entitás összesített állapotát, és nem tartalmaznak részletes állapotadatokat. Ha egy entitás nem kifogástalan állapotú, egészségügyi lekérdezésekkel nyomon követheti az összes állapotinformációját, beleértve az eseményeket, a gyermekállapotokat és a nem kifogástalan állapotú értékeléseket.

Ha az általános lekérdezések ismeretlen állapotot adnak vissza egy entitáshoz, lehetséges, hogy az állapottároló nem rendelkezik teljes adatokkal az entitásról. Az is lehetséges, hogy az állapottárolóhoz tartozó alküldetés nem volt sikeres (például kommunikációs hiba történt, vagy az állapottároló szabályozva lett). Kövesse nyomon az entitás állapot lekérdezését. Ha az alkérés átmeneti hibákat, például hálózati problémákat észlelt, ez a nyomon követési lekérdezés sikeres lehet. Emellett további részleteket is megadhat az állapottárból arról, hogy miért nem érhető el az entitás.

Az entitások HealthState-ét tartalmazó lekérdezések a következők:

Megjegyzés

Egyes lekérdezések oldalszámozott eredményeket adnak vissza. Ezeknek a lekérdezéseknek a visszatérése a PagedList<T-ből> származtatott lista. Ha az eredmények nem felelnek meg egy üzenetnek, a rendszer csak egy lapot ad vissza, és egy FolytatásTokent, amely nyomon követi, hogy hol állt le az enumerálás. Folytassa ugyanazt a lekérdezést, és adja meg az előző lekérdezés folytatási jogkivonatát a következő eredmények lekéréséhez.

Példák

A következő kód lekéri a fürt nem megfelelő állapotú alkalmazásokat:

var applications = fabricClient.QueryManager.GetApplicationListAsync().Result.Where(
  app => app.HealthState == HealthState.Error);

A következő parancsmag lekéri a háló alkalmazásadatait:/WordCount alkalmazás. Figyelje meg, hogy az állapot figyelmeztetésben van.

PS C:\> Get-ServiceFabricApplication -ApplicationName fabric:/WordCount

ApplicationName        : fabric:/WordCount
ApplicationTypeName    : WordCount
ApplicationTypeVersion : 1.0.0
ApplicationStatus      : Ready
HealthState            : Warning
ApplicationParameters  : { "WordCountWebService_InstanceCount" = "1";
                         "_WFDebugParams_" = "[{"ServiceManifestName":"WordCountWebServicePkg","CodePackageName":"Code","EntryPointType":"Main","Debug
                         ExePath":"C:\\Program Files (x86)\\Microsoft Visual Studio
                         14.0\\Common7\\Packages\\Debugger\\VsDebugLaunchNotify.exe","DebugArguments":" {74f7e5d5-71a9-47e2-a8cd-1878ec4734f1} -p
                         [ProcessId] -tid [ThreadId]","EnvironmentBlock":"_NO_DEBUG_HEAP=1\u0000"},{"ServiceManifestName":"WordCountServicePkg","CodeP
                         ackageName":"Code","EntryPointType":"Main","DebugExePath":"C:\\Program Files (x86)\\Microsoft Visual Studio
                         14.0\\Common7\\Packages\\Debugger\\VsDebugLaunchNotify.exe","DebugArguments":" {2ab462e6-e0d1-4fda-a844-972f561fe751} -p
                         [ProcessId] -tid [ThreadId]","EnvironmentBlock":"_NO_DEBUG_HEAP=1\u0000"}]" }

A következő parancsmag a hibás állapotú szolgáltatásokat kapja meg:

PS D:\ServiceFabric> Get-ServiceFabricApplication | Get-ServiceFabricService | where {$_.HealthState -eq "Error"}


ServiceName            : fabric:/WordCount/WordCountService
ServiceKind            : Stateful
ServiceTypeName        : WordCountServiceType
IsServiceGroup         : False
ServiceManifestVersion : 1.0.0
HasPersistedState      : True
ServiceStatus          : Active
HealthState            : Error

Fürt- és alkalmazásfrissítések

A fürt és az alkalmazás monitorozott frissítése során a Service Fabric ellenőrzi az állapotot, hogy minden kifogástalan állapotban maradjon. Ha egy entitás nem kifogástalan állapotú a konfigurált állapotszabályzatok használatával kiértékelve, a frissítés frissítésspecifikus szabályzatokat alkalmaz a következő művelet meghatározásához. Előfordulhat, hogy a frissítés szüneteltetve van a felhasználói interakció engedélyezéséhez (például a hibafeltételek kijavításához vagy a szabályzatok módosításához), vagy automatikusan visszaválthat az előző jó verzióra.

A fürtfrissítés során lekérheti a fürtfrissítés állapotát. A frissítés állapota nem kifogástalan állapotú értékeléseket tartalmaz, amelyek arra mutatnak, hogy mi nem kifogástalan a fürtben. Ha a frissítés állapotproblémák miatt vissza lesz állítva, a frissítési állapot az utolsó nem kifogástalan állapotú okokra is emlékszik. Ezek az információk segíthetnek a rendszergazdáknak annak kivizsgálásában, hogy mi történt a frissítés visszaállítása vagy leállítása után.

Hasonlóképpen, az alkalmazásfrissítés során a nem megfelelő állapotú értékelések az alkalmazásfrissítési állapotban találhatók.

Az alábbiakban egy módosított háló alkalmazásfrissítési állapotát mutatjuk be:/WordCount-alkalmazás. A figyelőkutyák hibát jelentettek az egyik replikán. A frissítés visszagördül, mert az állapotellenőrzések nem teljesülnek.

PS C:\> Get-ServiceFabricApplicationUpgrade fabric:/WordCount

ApplicationName               : fabric:/WordCount
ApplicationTypeName           : WordCount
TargetApplicationTypeVersion  : 1.0.0.0
ApplicationParameters         : {}
StartTimestampUtc             : 4/21/2017 5:23:26 PM
FailureTimestampUtc           : 4/21/2017 5:23:37 PM
FailureReason                 : HealthCheck
UpgradeState                  : RollingBackInProgress
UpgradeDuration               : 00:00:23
CurrentUpgradeDomainDuration  : 00:00:00
CurrentUpgradeDomainProgress  : UD1

                                NodeName            : _Node_1
                                UpgradePhase        : Upgrading

                                NodeName            : _Node_2
                                UpgradePhase        : Upgrading

                                NodeName            : _Node_3
                                UpgradePhase        : PreUpgradeSafetyCheck
                                PendingSafetyChecks :
                                EnsurePartitionQuorum - PartitionId: 30db5be6-4e20-4698-8185-4bd7ca744020
NextUpgradeDomain             : UD2
UpgradeDomainsStatus          : { "UD1" = "Completed";
                                "UD2" = "Pending";
                                "UD3" = "Pending";
                                "UD4" = "Pending" }
UnhealthyEvaluations          :
                                Unhealthy services: 100% (1/1), ServiceType='WordCountServiceType', MaxPercentUnhealthyServices=0%.

                                  Unhealthy service: ServiceName='fabric:/WordCount/WordCountService', AggregatedHealthState='Error'.

                                      Unhealthy partitions: 100% (1/1), MaxPercentUnhealthyPartitionsPerService=0%.

                                      Unhealthy partition: PartitionId='a1f83a35-d6bf-4d39-b90d-28d15f39599b', AggregatedHealthState='Error'.

                                          Unhealthy replicas: 20% (1/5), MaxPercentUnhealthyReplicasPerPartition=0%.

                                          Unhealthy replica: PartitionId='a1f83a35-d6bf-4d39-b90d-28d15f39599b',
                                  ReplicaOrInstanceId='131031502346844058', AggregatedHealthState='Error'.

                                              Error event: SourceId='DiskWatcher', Property='Disk'.

UpgradeKind                   : Rolling
RollingUpgradeMode            : UnmonitoredAuto
ForceRestart                  : False
UpgradeReplicaSetCheckTimeout : 00:15:00

További információ a Service Fabric-alkalmazás frissítéséről.

Állapotértékelések használata a hibaelhárításhoz

Amikor probléma merül fel a fürttel vagy egy alkalmazással kapcsolatban, tekintse meg a fürtöt vagy az alkalmazás állapotát, hogy megállapítsa, mi a probléma. A nem kifogástalan állapotú értékelések részletes információkat nyújtanak arról, hogy mi váltotta ki az aktuális nem kifogástalan állapotot. Szükség esetén lehatolást végezhet a nem kifogástalan állapotú gyermekentitásokra a kiváltó ok azonosításához.

Tegyük fel például, hogy egy alkalmazás nem kifogástalan állapotú, mert hibajelentés található az egyik replikáján. Az alábbi PowerShell-parancsmag a nem kifogástalan állapotú értékeléseket mutatja be:

PS D:\ServiceFabric> Get-ServiceFabricApplicationHealth fabric:/WordCount -EventsFilter None -ServicesFilter None -DeployedApplicationsFilter None -ExcludeHealthStatistics


ApplicationName                 : fabric:/WordCount
AggregatedHealthState           : Error
UnhealthyEvaluations            : 
                                  Unhealthy services: 100% (1/1), ServiceType='WordCountServiceType', MaxPercentUnhealthyServices=0%.

                                  Unhealthy service: ServiceName='fabric:/WordCount/WordCountService', AggregatedHealthState='Error'.

                                    Unhealthy partitions: 100% (1/1), MaxPercentUnhealthyPartitionsPerService=0%.

                                    Unhealthy partition: PartitionId='af2e3e44-a8f8-45ac-9f31-4093eb897600', AggregatedHealthState='Error'.

                                        Unhealthy replicas: 20% (1/5), MaxPercentUnhealthyReplicasPerPartition=0%.

                                        Unhealthy replica: PartitionId='af2e3e44-a8f8-45ac-9f31-4093eb897600', ReplicaOrInstanceId='131444422260002646', AggregatedHealthState='Error'.

                                            Error event: SourceId='MyWatchdog', Property='Memory'.

ServiceHealthStates             : None
DeployedApplicationHealthStates : None
HealthEvents                    : None

További információkért tekintse meg a replikát:

PS D:\ServiceFabric> Get-ServiceFabricReplicaHealth -ReplicaOrInstanceId 131444422260002646 -PartitionId af2e3e44-a8f8-45ac-9f31-4093eb897600


PartitionId           : af2e3e44-a8f8-45ac-9f31-4093eb897600
ReplicaId             : 131444422260002646
AggregatedHealthState : Error
UnhealthyEvaluations  : 
                        Error event: SourceId='MyWatchdog', Property='Memory'.

HealthEvents          : 
                        SourceId              : System.RA
                        Property              : State
                        HealthState           : Ok
                        SequenceNumber        : 131444422263668344
                        SentAt                : 7/13/2017 5:57:06 PM
                        ReceivedAt            : 7/13/2017 5:57:18 PM
                        TTL                   : Infinite
                        Description           : Replica has been created._Node_2
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Error->Ok = 7/13/2017 5:57:18 PM, LastWarning = 1/1/0001 12:00:00 AM

                        SourceId              : MyWatchdog
                        Property              : Memory
                        HealthState           : Error
                        SequenceNumber        : 131444451657749403
                        SentAt                : 7/13/2017 6:46:05 PM
                        ReceivedAt            : 7/13/2017 6:46:05 PM
                        TTL                   : Infinite
                        Description           : 
                        RemoveWhenExpired     : False
                        IsExpired             : False
                        Transitions           : Warning->Error = 7/13/2017 6:46:05 PM, LastOk = 1/1/0001 12:00:00 AM

Megjegyzés

A nem kifogástalan állapotú értékelések azt mutatják, hogy az entitás első oka az aktuális állapotra van kiértékelve. Előfordulhat, hogy több más esemény is aktiválja ezt az állapotot, de ezek nem jelennek meg a kiértékelésekben. További információkért tekintse át az állapotentitásokra vonatkozó részletezéseket, és állapítsa meg a fürt összes nem kifogástalan állapotú jelentését.

Következő lépések

Rendszerállapot-jelentések használata a hibaelhárítás során

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

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

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

Service Fabric-alkalmazás frissítése