Megosztás a következőn keresztül:


Service Fabric állapotjelentéseinek 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 állapotadatokat annak megállapításához, hogy az entitások kifogástalan állapotban vannak-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 hibaelhárításhoz.

A Service Fabric többféleképpen is lekérheti az entitások összesített állapotát:

  • Service Fabric Explorer vagy más vizualizációs eszközök
  • Állapot-lekérdezések (PowerShell, API vagy REST használatával)
  • Általános lekérdezések, amelyek a tulajdonságok egyikeként állapotú 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óval:/WordCount alkalmazással. A háló:/WordCount alkalmazás két alapértelmezett szolgáltatást, egy állapotalapú típusú szolgáltatást WordCountServiceTypeés egy állapot nélküli szolgáltatást WordCountWebServiceTypetartalmaz. Úgy módosítottam, ApplicationManifest.xml 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 a célszám alatt van.

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

Állapot a Service Fabric Explorerben

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

  • Az alkalmazásháló:/A 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 Partition is below target replica or instance countmondja. A sárga partíció aktiválja a sárga szolgáltatást.
  • A fürt a piros alkalmazás miatt piros.

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 a Service Fabric Explorerrel:

A fürt megtekintése a Service Fabric Explorerrel.

Feljegyzés

További információ a Service Fabric Explorerről.

Állapot-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 állapotinformációkat adnak vissza az entitásról: az összesített állapotot, az entitásállapot-eseményeket, a gyermekállapotokat (ha vannak), a nem megfelelő állapotú értékeléseket (ha az entitás nem kifogástalan), valamint a gyermekállapot-statisztikákat (ha vannak).

Feljegyzés

Az állapotentitást a rendszer akkor adja vissza, ha az állapottárolóban teljes mértékben ki van töltve. Az entitásnak aktívnak (nem töröltnek) kell lennie, és rendelkeznie kell egy rendszerjelentéssel. A hierarchialánc szülő entitásainak rendszerjelentésekkel is rendelkezniük kell. Ha ezen feltételek bármelyike nem teljesül, az állapot-lekérdezések egy FabricException értéket adnak vissza a FabricErrorCode-nal FabricHealthEntityNotFound, 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ályzati paramétereket fogadnak el. Ha nincs megadva állapotszabályzat, a rendszer a fürt vagy az alkalmazásjegyzék állapotszabályzatát használja a kiértékeléshez. Ha a jegyzékek nem tartalmaznak állapotszabályzat-definíciót, 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– a megadott szűrőket tiszteletben tartókat. Egy másik szűrő lehetővé teszi a gyermekstatisztikák kizárását.

Feljegyzé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 állapotának állapota. Az állapottároló az entitásállapot-jelentések, a gyermekállapot-állapotok (adott esetben) és az állapotszabályzatok alapján számítja ki. 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 összegyűjtése a gyermekvállalásra képes entitások számára. Az á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 kiváltó jelentésre mutató nem megfelelő értékelések, ha az entitás állapota nem kifogástalan. 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 nem megfelelő állapotú értékelést jelenít meg egy nem megfelelő szolgáltatás miatt; a szolgáltatás egy hibás partíció miatt nem megfelelő állapotú; a partíció hibás replika miatt nem megfelelő; a replika nem megfelelő állapotú a watchdog hibaállapot-jelentése miatt.
  • A gyermekekkel rendelkező entitások összes gyermektípusának egészségügyi statisztiká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át (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 megadják, hogy mely bejegyzések fontosak, és az eredményben kell visszaadni (például csak hibák, vagy figyelmeztetések és hibák egyaránt). Minden 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 háló:/Rendszerállapot-statisztikák belefoglalásához az állapotstatisztikákba. Csak akkor alkalmazható, ha az állapotstatisztikák nincsenek kizárva. Az állapotstatisztikák alapértelmezés szerint csak a felhasználói alkalmazások statisztikáit tartalmazzák, a rendszeralkalmazást nem.

API

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

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ákat. 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ó:/A leírt módon konfigurált WordCount.

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 adják meg az összesített állapotot kiváltó feltételek részleteit.

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

Az alábbi PowerShell-parancsmag egy egyéni alkalmazásszabályzat használatával lekéri a fürt állapotát. Az eredményeket úgy szűri, hogy csak az alkalmazásokat és csomópontokat kapja meg hiba vagy figyelmeztetés esetén. 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 háló:/WordCount alkalmazás esetében a figyelmeztetéseket hibaként vegye figyelembe, az alkalmazás kiértékelése hibaként történik, é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 get vagy POST kéréssel kérheti le, amely tartalmazza a törzsben leírt állapotszabályzatokat.

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ópontot azonosító csomópontnév.
  • [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 az eredményben kell visszaadni (például csak hibák, vagy figyelmeztetések és hibák egyaránt). 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 az API-n keresztüli lekéréséhez hozzon létre és FabricClient hívja meg a GetNodeHealthAsync metódust a HealthManageren.

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ények szűrőjének és az egyéni szabályzatnak:

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. Az alábbi parancsmag az alapértelmezett állapotszabályzatok használatával kapja meg 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ának lekéréséhez get vagy POST kérést is használhat, amely a törzsben leírt állapotszabályzatokat tartalmazza.

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

Egy alkalmazásentitás állapotát adja vissza. Az üzembe helyezett alkalmazás és a szolgáltatás gyermekállapotait tartalmazza. 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ő] Szűrők eseményekhez, szolgáltatásokhoz és üzembe helyezett alkalmazásokhoz, 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 egyaránt). Minden 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 összes alkalmazás gyermekének ok-, figyelmeztetés- és hibaszámát: 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 és FabricClient hívja meg a GetApplicationHealthAsync metódust a HealthManageren.

Az alábbi kód lekéri a megadott alkalmazásnév (URI) alkalmazásállapotát:

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

A következő kód lekéri az alkalmazás állapotát a megadott alkalmazásnévhez (URI), 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ó állapotát adja vissza:/WordCount-alkalmazás :

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 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 get vagy POST kéréssel kérheti le, amely tartalmazza a törzsben leírt állapotszabályzatokat.

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

Egy szolgáltatás entitá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ő] Szűrők olyan eseményekhez és partíciókhoz, 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 egyaránt). 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 getServiceHealthAsync metódust FabricClient 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 kapja meg 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 get vagy POST kéréssel kérheti le, 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 az eredményben kell visszaadni (például csak hibák, vagy figyelmeztetések és hibák egyaránt). 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állapotok.

API

A partíció állapotának api-n keresztüli lekéréséhez hozzon létre egy getPartitionHealthAsync metódust FabricClient a HealthManageren. 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ának lekéréséhez get vagy POST kérést is használhat, amely a törzsben leírt állapotszabályzatokat tartalmazza.

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-házirend-paraméterek.
  • [Nem kötelező] Olyan események szűrői, amelyek meghatározzák, hogy mely bejegyzések érdekesek, és az eredményben kell visszaadni (például csak hibák, vagy figyelmeztetések és hibák egyaránt). 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 getReplicaHealthAsync metódust a HealthManageren. 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 get vagy POST kéréssel kérheti le, amely tartalmazza a törzsben leírt állapotszabályzatokat.

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

Egy csomópontentitán üzembe helyezett alkalmazás állapotát adja vissza. Az üzembe helyezett szolgáltatáscsomag állapotállapotait tartalmazza. 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 fontosak, és az eredményben kell visszaadni (például csak hibák, vagy figyelmeztetések és hibák egyaránt). Az összes esemény és az üzembe helyezett szolgáltatáscsomagok az entitás összesített állapotának kiértékelésére szolgálnak, 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 és FabricClient 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ére vonatkozó parancsmag a Get-ServiceFabricDeployedApplicationHealth. Először csatlakozzon a fürthöz a Connect-ServiceFabricCluster parancsmaggal. Az alkalmazás üzembe helyezésének helyé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 get vagy POST kéréssel is beszerezhető, amely tartalmazza a törzsben leírt állapotszabályzatokat.

Ü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 üzembe helyezett szolgáltatáscsomagot azonosító alkalmazásnév (URI), csomópont neve (sztring) és szolgáltatásjegyzék neve (sztring).
  • [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 az eredményben kell visszaadni (például csak hibák, vagy figyelmeztetések és hibák egyaránt). 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 egy üzembe helyezett szolgáltatáscsomag állapotát szeretné lekérni az API-n keresztül, hozzon létre és FabricClient 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. Az alkalmazásokban található szolgáltatáscsomagok megtekintéséhez tekintse meg az üzembe helyezett szolgáltatáscsomag gyermekeit a Get-ServiceFabricDeployedApplicationHealth kimenetben.

Az alábbi parancsmag lekéri a háló WordCountServicePkg szolgáltatáscsomagjának állapotát:/A WordCount-alkalmazás üzembe helyezése _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 vagy POST kéréssel is lekérheti, amely a törzsben leírt állapotszabályzatokat tartalmazza.

Állapottömb-lekérdezések

Az állapottömb-lekérdezések többszintű fürtgyermekeket (rekurzívan) 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 egyetlen gyermek sem szerepel a programban, szemben azokkal az állapotparancsokkal, amelyek mindig első szintű gyermekeket tartalmaznak.

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 fontos 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 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 is kifejezhet, például:

  • Csak hibás alkalmazásokat ad vissza, és ezekhez az alkalmazásokhoz minden szolgáltatás figyelmeztetésben vagy hibában szerepel. 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 egy csomópont összes üzembe helyezett entitását. Visszaadja az összes alkalmazást, a megadott csomóponton üzembe helyezett összes alkalmazást és a csomóponton üzembe helyezett összes szolgáltatáscsomagot.
  • Az összes replika hibát ad vissza. 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 állapottömb-lekérdezés jelenleg csak a fürt entitása számára van közzétéve. Egy fürtállapot-adattömböt ad vissza, amely a következőket tartalmazza:

  • A fürt összesített állapotának á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 minden olyan szolgáltatással, amely tiszteletben tartja a bemeneti szűrőket, valamint egy adattömblistát az összes olyan üzembe helyezett alkalmazással, 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 fontosak, é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 érvényesek. A szűrők listája tartalmazhat egy általános szűrőt és/vagy szűrőt a lekérdezés által visszaadott részletes entitásokra vonatkozó egyedi azonosítókhoz. Ha üres, a rendszer alapértelmezés szerint nem adja vissza a gyermekeket. További információ a NodeHealthStateFilter és az ApplicationHealthStateFilter szűrőirő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 kérhető le.

API

Fürtállapot-adattömb lekéréséhez hozzon létre és FabricClient hívja meg a GetClusterHealthChunkAsync metódust a HealthManageren. A ClusterHealthQueryDescription használatával 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

Az alábbi 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

Az alábbi parancsmag egy csomóponton lévő összes üzembe helyezett 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 get vagy POST kéréssel is lekérheti, amely a törzsben leírt állapotszabályzatokat és speciális szűrőket tartalmazza.

Általános lekérdezések

Az általános lekérdezések egy megadott típusú Service Fabric-entitások listáját adja 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őből összesítik az al lekérdezéseket. Ezek egyike az állapottároló, amely feltölti az összes lekérdezési eredmény összesített állapotát.

Feljegyzés

Az általános lekérdezések az entitás összesített állapotát adják vissza, és nem tartalmaznak gazdag állapotadatokat. Ha egy entitás nem kifogástalan, állapot-lekérdezésekkel nyomon követheti az összes állapotinformációját, beleértve az eseményeket, a gyermekállapotokat és az egészségtelen é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 al lekérdezés átmeneti hibákat, például hálózati problémákat észlelt, ez a követő 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-et tartalmazó lekérdezései a következők:

Feljegyzé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ármazó lista. Ha az eredmények nem felelnek meg az üzenetnek, csak egy oldal lesz visszaadva, és egy Folytatástoken, amely nyomon követi, hogy hol állt le az enumerálás. Folytassa ugyanezt a lekérdezést, és adja át az előző lekérdezés folytatási jogkivonatát a következő eredmények lekéréséhez.

Példák

Az alábbi kód lekéri a fürtön lévő nem megfelelő 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 szolgáltatások állapotának hibaállapotával kapja meg a szolgáltatásokat:

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 rendben maradjon. Ha egy entitás nem megfelelő állapotú a konfigurált állapotszabályzatok alapján kiértékelve, a frissítés frissítésspecifikus szabályzatokat alkalmaz a következő művelet meghatározásához. A frissítés szüneteltethető 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 megfelelő értékeléseket tartalmaz, amelyek arra mutatnak, hogy mi nem kifogástalan a fürtben. Ha a frissítés állapotproblémák miatt visszagördül, a frissítési állapot az utolsó nem kifogástalan okokat is megjegyzi. Ezek az információk segíthetnek a rendszergazdáknak kivizsgálni, 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. Egy figyelőkutya hibát jelentett 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 az 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 megfelelő értékelések részletesen ismertetik, hogy mi váltotta ki az aktuális állapotot. Szükség esetén lehatolást végezhet a nem megfelelő állapotú gyermekentitásokra a kiváltó ok azonosításához.

Tegyük fel például, hogy egy alkalmazás nem kifogástalan, mert hibajelentés található az egyik replikáján. Az alábbi PowerShell-parancsmag a nem megfelelő á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

Feljegyzés

A nem megfelelő állapotú értékelések azt mutatják, hogy az entitást miért értékeli ki a rendszer az aktuális állapotra. Előfordulhat, hogy több más esemény is aktiválja ezt az állapotot, de ezek nem jelennek meg az értékelésekben. További információkért az állapotentitások részletezése a fürt összes nem kifogástalan jelentésének megállapításához.

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

Szolgáltatások helyi monitorozása és diagnosztizálása

Service Fabric-alkalmazás frissítése