Service Fabric-statusrapporten weergeven

Azure Service Fabric introduceert een statusmodel met statusentiteiten waarop systeemonderdelen en watchdogs lokale omstandigheden kunnen rapporteren die ze bewaken. De Health Store aggregeert alle statusgegevens om te bepalen of de entiteiten in orde zijn.

Het cluster wordt automatisch ingevuld met statusrapporten die worden verzonden door de systeemonderdelen. Lees Systeemstatusrapporten gebruiken om fouten op te lossen voor meer informatie.

Service Fabric biedt meerdere manieren om de geaggregeerde status van de entiteiten op te halen:

  • Service Fabric Explorer of andere visualisatiehulpmiddelen
  • Statusquery's (via PowerShell, API of REST)
  • Algemene query's die een lijst met entiteiten retourneren die een status hebben als een van de eigenschappen (via PowerShell, API of REST)

Om deze opties te demonstreren, gebruiken we een lokaal cluster met vijf knooppunten en de toepassing fabric:/WordCount. De toepassing fabric:/WordCount bevat twee standaardservices, een stateful service van het type WordCountServiceTypeen een staatloze service van het type WordCountWebServiceType. Ik heb de ApplicationManifest.xml gewijzigd om zeven doelreplica's te vereisen voor de stateful service en één partitie. Omdat er slechts vijf knooppunten in het cluster zijn, rapporteren de systeemonderdelen een waarschuwing over de servicepartitie omdat deze onder het doelaantal ligt.

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

Gezondheid in Service Fabric Explorer

Service Fabric Explorer biedt een visuele weergave van het cluster. In de onderstaande afbeelding ziet u dat:

  • De toepassingsinfrastructuur:/WordCount is rood (fout) omdat er een foutgebeurtenis is gerapporteerd door MyWatchdog voor de eigenschap Beschikbaarheid.
  • Een van de services, fabric:/WordCount/WordCountService , is geel (waarschuwing). De service is geconfigureerd met zeven replica's en het cluster heeft vijf knooppunten, zodat er geen twee replica's kunnen worden geplaatst. Hoewel deze hier niet wordt weergegeven, is de servicepartitie geel vanwege een systeemrapport System.FM waarin staat dat Partition is below target replica or instance count. De gele partitie activeert de gele service.
  • Het cluster is rood vanwege de rode toepassing.

De evaluatie maakt gebruik van standaardbeleidsregels uit het clustermanifest en toepassingsmanifest. Ze zijn strikt beleid en tolereren geen fouten.

Weergave van het cluster met Service Fabric Explorer:

Weergave van het cluster met Service Fabric Explorer.

Notitie

Lees meer over Service Fabric Explorer.

Statusquery's

Service Fabric geeft statusquery's weer voor alle ondersteunde entiteitstypes. Ze kunnen worden geopend via de API met behulp van methoden op FabricClient.HealthManager, PowerShell-cmdlets en REST. Deze query's retourneren gegevens over de status van de entiteit: de geaggregeerde status, de statusgebeurtenissen van de entiteit, de status van onderliggende items (indien van toepassing), de beschadigde evaluaties (wanneer de entiteit niet in orde is) en de statusstatistieken van onderliggende items (indien van toepassing).

Notitie

Een statusentiteit wordt geretourneerd wanneer deze volledig is ingevuld in het statusarchief. De entiteit moet actief zijn (niet verwijderd) en een systeemrapport hebben. De bovenliggende entiteiten in de hiërarchieketen moeten ook systeemrapporten hebben. Als aan een van deze voorwaarden niet wordt voldaan, retourneren de statusquery's een FabricException met FabricErrorCodeFabricHealthEntityNotFound die laat zien waarom de entiteit niet wordt geretourneerd.

De statusquery's moeten de entiteits-id doorgeven, die afhankelijk is van het entiteitstype. De query's accepteren optionele statusbeleidsparameters. Als er geen statusbeleid is opgegeven, wordt het statusbeleid van het cluster of toepassingsmanifest gebruikt voor evaluatie. Als de manifesten geen definitie voor statusbeleid bevatten, wordt het standaardstatusbeleid gebruikt voor evaluatie. Het standaardstatusbeleid tolereert geen fouten. De query's accepteren ook filters voor het retourneren van slechts gedeeltelijke onderliggende items of gebeurtenissen, de items die voldoen aan de opgegeven filters. Met een ander filter kunt u de onderliggende statistieken uitsluiten.

Notitie

De uitvoerfilters worden toegepast aan de serverzijde, zodat de antwoordgrootte van het bericht wordt verkleind. We raden u aan de uitvoerfilters te gebruiken om de geretourneerde gegevens te beperken, in plaats van filters toe te passen aan de clientzijde.

De status van een entiteit bevat:

  • De geaggregeerde status van de entiteit. Berekend door het statusarchief op basis van statusrapporten van entiteiten, statussen van kinderen (indien van toepassing) en statusbeleid. Meer informatie over entiteitsstatusevaluatie.
  • De statusgebeurtenissen op de entiteit.
  • De verzameling statussen van alle onderliggende items voor de entiteiten die onderliggende items kunnen hebben. De statussen bevatten entiteits-id's en de geaggregeerde status. Als u de volledige status voor een onderliggend item wilt ophalen, roept u de querystatus aan voor het type onderliggende entiteit en geeft u de onderliggende id door.
  • De beschadigde evaluaties die verwijzen naar het rapport dat de status van de entiteit heeft geactiveerd, als de entiteit niet in orde is. De evaluaties zijn recursief en bevatten de statusevaluaties van kinderen die de huidige status hebben geactiveerd. Een watchdog heeft bijvoorbeeld een fout gerapporteerd voor een replica. De toepassingsstatus toont een beschadigde evaluatie vanwege een beschadigde service; de service is beschadigd vanwege een partitie in fout; de partitie is beschadigd vanwege een replica in fout; de replica is beschadigd vanwege het statusrapport van de watchdog-fout.
  • De statusstatistieken voor alle typen onderliggende entiteiten met onderliggende items. De clusterstatus toont bijvoorbeeld het totale aantal toepassingen, services, partities, replica's en geïmplementeerde entiteiten in het cluster. Servicestatus toont het totale aantal partities en replica's onder de opgegeven service.

Clusterstatus ophalen

Retourneert de status van de clusterentiteit en bevat de status van toepassingen en knooppunten (onderliggende items van het cluster). Invoer:

  • [Optioneel] Het clusterstatusbeleid dat wordt gebruikt om de knooppunten en de clustergebeurtenissen te evalueren.
  • [Optioneel] De toepassingsstatusbeleidskaart, met de statusbeleidsregels die worden gebruikt om het toepassingsmanifestbeleid te overschrijven.
  • [Optioneel] Filters voor gebeurtenissen, knooppunten en toepassingen die aangeven welke vermeldingen van belang zijn en moeten worden geretourneerd in het resultaat (bijvoorbeeld alleen fouten, of zowel waarschuwingen als fouten). Alle gebeurtenissen, knooppunten en toepassingen worden gebruikt om de geaggregeerde status van de entiteit te evalueren, ongeacht het filter.
  • [Optioneel] Filter om statusstatistieken uit te sluiten.
  • [Optioneel] Filter om fabric:/Systeemstatusstatistieken op te nemen in de statusstatistieken. Alleen van toepassing wanneer de gezondheidsstatistieken niet worden uitgesloten. Standaard bevatten de statusstatistieken alleen statistieken voor gebruikerstoepassingen en niet de systeemtoepassing.

API

Als u de clusterstatus wilt ophalen, maakt u een FabricClient en roept u de methode GetClusterHealthAsync aan op de HealthManager.

Met de volgende aanroep wordt de clusterstatus ophaalt:

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

De volgende code haalt de clusterstatus op met behulp van een aangepast clusterstatusbeleid en filters voor knooppunten en toepassingen. Hiermee wordt aangegeven dat de statusstatistieken de fabric:/System-statistieken bevatten. Er wordt ClusterHealthQueryDescription gemaakt, dat de invoergegevens bevat.

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

De cmdlet voor het ophalen van de clusterstatus is Get-ServiceFabricClusterHealth. Maak eerst verbinding met het cluster met behulp van de cmdlet Connect-ServiceFabricCluster .

De status van het cluster is vijf knooppunten, de systeemtoepassing en fabric:/WordCount geconfigureerd zoals beschreven.

Met de volgende cmdlet wordt de clusterstatus op basis van het standaardstatusbeleid. De geaggregeerde status is een waarschuwing, omdat de toepassing fabric:/WordCount een waarschuwing heeft. U ziet hoe de beschadigingsevaluaties details bevatten over de omstandigheden die de geaggregeerde status hebben geactiveerd.

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

De volgende PowerShell-cmdlet haalt de status van het cluster op met behulp van een aangepast toepassingsbeleid. De resultaten worden gefilterd om alleen toepassingen en knooppunten met een fout of waarschuwing op te halen. Als gevolg hiervan worden er geen knooppunten geretourneerd, omdat ze allemaal in orde zijn. Alleen de toepassing fabric:/WordCount respecteert het filter voor toepassingen. Omdat het aangepaste beleid aangeeft dat waarschuwingen moeten worden gezien als fouten voor de toepassing fabric:/WordCount, wordt de toepassing geëvalueerd als fout, net als het cluster.

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

U kunt de clusterstatus ophalen met een GET-aanvraag of een POST-aanvraag die statusbeleid bevat dat wordt beschreven in de hoofdtekst.

Status van knooppunten ophalen

Retourneert de status van een knooppuntentiteit en bevat de statusgebeurtenissen die op het knooppunt zijn gerapporteerd. Invoer:

  • [Vereist] De knooppuntnaam die het knooppunt identificeert.
  • [Optioneel] De instellingen voor het clusterstatusbeleid die worden gebruikt om de status te evalueren.
  • [Optioneel] Filters voor gebeurtenissen die aangeven welke vermeldingen van belang zijn en moeten worden geretourneerd in het resultaat (bijvoorbeeld alleen fouten, of zowel waarschuwingen als fouten). Alle gebeurtenissen worden gebruikt om de geaggregeerde status van de entiteit te evalueren, ongeacht het filter.

API

Als u de status van het knooppunt wilt ophalen via de API, maakt u een FabricClient en roept u de methode GetNodeHealthAsync aan in de HealthManager.

Met de volgende code wordt de knooppuntstatus voor de opgegeven knooppuntnaam opgehaald:

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

Met de volgende code wordt de knooppuntstatus voor de opgegeven knooppuntnaam opgehaald en wordt het gebeurtenisfilter en het aangepaste beleid doorgegeven via NodeHealthQueryDescription:

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

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

PowerShell

De cmdlet voor het ophalen van de knooppuntstatus is Get-ServiceFabricNodeHealth. Maak eerst verbinding met het cluster met behulp van de cmdlet Connect-ServiceFabricCluster . Met de volgende cmdlet wordt de knooppuntstatus opgehaald met behulp van standaardstatusbeleidsregels:

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

De volgende cmdlet haalt de status van alle knooppunten in het cluster op:

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

U kunt de status van een knooppunt ophalen met een GET-aanvraag of een POST-aanvraag die statusbeleid bevat dat in de hoofdtekst wordt beschreven.

Toepassingsstatus ophalen

Retourneert de status van een toepassingsentiteit. Het bevat de statusstatussen van de geïmplementeerde toepassing en onderliggende services. Invoer:

  • [Vereist] De toepassingsnaam (URI) die de toepassing identificeert.
  • [Optioneel] Het toepassingsstatusbeleid dat wordt gebruikt om het toepassingsmanifestbeleid te overschrijven.
  • [Optioneel] Filters voor gebeurtenissen, services en geïmplementeerde toepassingen die aangeven welke vermeldingen van belang zijn en moeten worden geretourneerd in het resultaat (bijvoorbeeld alleen fouten of zowel waarschuwingen als fouten). Alle gebeurtenissen, services en geïmplementeerde toepassingen worden gebruikt om de geaggregeerde status van de entiteit te evalueren, ongeacht het filter.
  • [Optioneel] Filter om de statusstatistieken uit te sluiten. Als deze niet zijn opgegeven, bevatten de statusstatistieken het ok-, waarschuwings- en foutaantal voor alle onderliggende toepassingen: services, partities, replica's, geïmplementeerde toepassingen en geïmplementeerde servicepakketten.

API

Als u de toepassingsstatus wilt ophalen, maakt u een FabricClient en roept u de methode GetApplicationHealthAsync aan in de HealthManager.

Met de volgende code wordt de toepassingsstatus voor de opgegeven toepassingsnaam (URI) ophaalt:

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

Met de volgende code wordt de toepassingsstatus voor de opgegeven toepassingsnaam (URI) opgeslagen, met filters en aangepaste beleidsregels die zijn opgegeven via ApplicationHealthQueryDescription.

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

De cmdlet voor het ophalen van de toepassingsstatus is Get-ServiceFabricApplicationHealth. Maak eerst verbinding met het cluster met behulp van de cmdlet Connect-ServiceFabricCluster .

De volgende cmdlet retourneert de status van de toepassing fabric:/WordCount :

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

De volgende PowerShell-cmdlet geeft aangepaste beleidsregels door. Er worden ook kinderen en gebeurtenissen gefilterd.

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

U kunt de toepassingsstatus ophalen met een GET-aanvraag of een POST-aanvraag die statusbeleid bevat dat in de hoofdtekst wordt beschreven.

Servicestatus ophalen

Retourneert de status van een service-entiteit. Het bevat de statussen van de partitie. Invoer:

  • [Vereist] De servicenaam (URI) die de service identificeert.
  • [Optioneel] Het toepassingsstatusbeleid dat wordt gebruikt om het toepassingsmanifestbeleid te overschrijven.
  • [Optioneel] Filters voor gebeurtenissen en partities die aangeven welke vermeldingen van belang zijn en moeten worden geretourneerd in het resultaat (bijvoorbeeld alleen fouten of zowel waarschuwingen als fouten). Alle gebeurtenissen en partities worden gebruikt om de geaggregeerde status van de entiteit te evalueren, ongeacht het filter.
  • [Optioneel] Filter om gezondheidsstatistieken uit te sluiten. Als dit niet is opgegeven, worden in de statusstatistieken het aantal ok, waarschuwingen en fouten weergegeven voor alle partities en replica's van de service.

API

Als u de servicestatus wilt ophalen via de API, maakt u een FabricClient en roept u de methode GetServiceHealthAsync aan in de HealthManager.

In het volgende voorbeeld wordt de status van een service met opgegeven servicenaam (URI) weergegeven:

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

Met de volgende code wordt de servicestatus voor de opgegeven servicenaam (URI) opgeslagen, waarbij filters en aangepast beleid worden opgegeven via ServiceHealthQueryDescription:

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

De cmdlet voor het ophalen van de servicestatus is Get-ServiceFabricServiceHealth. Maak eerst verbinding met het cluster met behulp van de cmdlet Connect-ServiceFabricCluster .

De volgende cmdlet haalt de servicestatus op met behulp van standaardstatusbeleidsregels:

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

U kunt de servicestatus ophalen met een GET-aanvraag of een POST-aanvraag die statusbeleid bevat dat in de hoofdtekst wordt beschreven.

Partitiestatus ophalen

Retourneert de status van een partitie-entiteit. Het bevat de statussen van de replica. Invoer:

  • [Vereist] De partitie-id (GUID) die de partitie identificeert.
  • [Optioneel] Het toepassingsstatusbeleid dat wordt gebruikt om het toepassingsmanifestbeleid te overschrijven.
  • [Optioneel] Filters voor gebeurtenissen en replica's die aangeven welke vermeldingen van belang zijn en moeten worden geretourneerd in het resultaat (bijvoorbeeld alleen fouten of zowel waarschuwingen als fouten). Alle gebeurtenissen en replica's worden gebruikt om de geaggregeerde status van de entiteit te evalueren, ongeacht het filter.
  • [Optioneel] Filter om gezondheidsstatistieken uit te sluiten. Als u dit niet opgeeft, wordt in de statusstatistieken weergegeven hoeveel replica's de status Ok, Waarschuwing en Fout hebben.

API

Als u de partitiestatus wilt ophalen via de API, maakt u een FabricClient en roept u de methode GetPartitionHealthAsync aan op de HealthManager. Als u optionele parameters wilt opgeven, maakt u PartitionHealthQueryDescription.

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

PowerShell

De cmdlet voor het ophalen van de partitiestatus is Get-ServiceFabricPartitionHealth. Maak eerst verbinding met het cluster met behulp van de cmdlet Connect-ServiceFabricCluster .

De volgende cmdlet haalt de status op voor alle partities van de infrastructuurservice:/WordCount/WordCountService en filtert de status van de replica uit:

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

U kunt de partitiestatus ophalen met een GET-aanvraag of een POST-aanvraag die statusbeleid bevat dat wordt beschreven in de hoofdtekst.

Replicastatus ophalen

Retourneert de status van een stateful servicereplica of een stateless service-exemplaar. Invoer:

  • [Vereist] De partitie-id (GUID) en replica-id die de replica identificeert.
  • [Optioneel] De statusbeleidsparameters van de toepassing die worden gebruikt om het toepassingsmanifestbeleid te overschrijven.
  • [Optioneel] Filters voor gebeurtenissen die aangeven welke vermeldingen van belang zijn en moeten worden geretourneerd in het resultaat (bijvoorbeeld alleen fouten, of zowel waarschuwingen als fouten). Alle gebeurtenissen worden gebruikt om de geaggregeerde status van de entiteit te evalueren, ongeacht het filter.

API

Als u de replicastatus wilt ophalen via de API, maakt u een FabricClient en roept u de methode GetReplicaHealthAsync aan in de HealthManager. Gebruik ReplicaHealthQueryDescription om geavanceerde parameters op te geven.

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

PowerShell

De cmdlet voor het ophalen van de replicastatus is Get-ServiceFabricReplicaHealth. Maak eerst verbinding met het cluster met behulp van de cmdlet Connect-ServiceFabricCluster .

De volgende cmdlet haalt de status van de primaire replica op voor alle partities van de service:

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

U kunt de replicastatus ophalen met een GET-aanvraag of een POST-aanvraag die statusbeleid bevat dat in de hoofdtekst wordt beschreven.

Status van geïmplementeerde toepassing ophalen

Retourneert de status van een toepassing die is geïmplementeerd op een knooppuntentiteit. Het bevat de status van het geïmplementeerde servicepakket. Invoer:

  • [Vereist] De toepassingsnaam (URI) en knooppuntnaam (tekenreeks) waarmee de geïmplementeerde toepassing wordt geïdentificeerd.
  • [Optioneel] Het toepassingsstatusbeleid dat wordt gebruikt om het toepassingsmanifestbeleid te overschrijven.
  • [Optioneel] Filters voor gebeurtenissen en geïmplementeerde servicepakketten die aangeven welke vermeldingen van belang zijn en moeten worden geretourneerd in het resultaat (bijvoorbeeld alleen fouten of zowel waarschuwingen als fouten). Alle gebeurtenissen en geïmplementeerde servicepakketten worden gebruikt om de geaggregeerde status van de entiteit te evalueren, ongeacht het filter.
  • [Optioneel] Filter om gezondheidsstatistieken uit te sluiten. Als dit niet is opgegeven, geven de statussen van het aantal geïmplementeerde servicepakketten weer in de status OK, waarschuwing en fout.

API

Als u de status wilt ophalen van een toepassing die via de API op een knooppunt is geïmplementeerd, maakt u een FabricClient en roept u de methode GetDeployedApplicationHealthAsync aan in de HealthManager. Als u optionele parameters wilt opgeven, gebruikt u DeployedApplicationHealthQueryDescription.

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

PowerShell

De cmdlet voor het ophalen van de geïmplementeerde toepassingsstatus is Get-ServiceFabricDeployedApplicationHealth. Maak eerst verbinding met het cluster met behulp van de cmdlet Connect-ServiceFabricCluster . Als u wilt zien waar een toepassing is geïmplementeerd, voert u Get-ServiceFabricApplicationHealth uit en bekijkt u de geïmplementeerde onderliggende toepassingen.

Met de volgende cmdlet wordt de status opgehaald van de toepassing fabric:/WordCount die is geïmplementeerd op _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

U kunt de status van de geïmplementeerde toepassing ophalen met een GET-aanvraag of een POST-aanvraag die statusbeleid bevat dat in de hoofdtekst wordt beschreven.

Status van geïmplementeerd servicepakket ophalen

Retourneert de status van een geïmplementeerde servicepakketentiteit. Invoer:

  • [Vereist] De toepassingsnaam (URI), knooppuntnaam (tekenreeks) en de naam van het servicemanifest (tekenreeks) waarmee het geïmplementeerde servicepakket wordt geïdentificeerd.
  • [Optioneel] Het toepassingsstatusbeleid dat wordt gebruikt om het toepassingsmanifestbeleid te overschrijven.
  • [Optioneel] Filters voor gebeurtenissen die aangeven welke vermeldingen van belang zijn en moeten worden geretourneerd in het resultaat (bijvoorbeeld alleen fouten, of zowel waarschuwingen als fouten). Alle gebeurtenissen worden gebruikt om de geaggregeerde status van de entiteit te evalueren, ongeacht het filter.

API

Als u de status van een geïmplementeerd servicepakket wilt ophalen via de API, maakt u een FabricClient en roept u de methode GetDeployedServicePackageHealthAsync aan in de HealthManager. Als u optionele parameters wilt opgeven, gebruikt u DeployedServicePackageHealthQueryDescription.

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

PowerShell

De cmdlet voor het ophalen van de status van het geïmplementeerde servicepakket is Get-ServiceFabricDeployedServicePackageHealth. Maak eerst verbinding met het cluster met behulp van de cmdlet Connect-ServiceFabricCluster . Als u wilt zien waar een toepassing is geïmplementeerd, voert u Get-ServiceFabricApplicationHealth uit en bekijkt u de geïmplementeerde toepassingen. Als u wilt zien welke servicepakketten zich in een toepassing bevinden, bekijkt u de onderliggende elementen van het geïmplementeerde servicepakket in de uitvoer Get-ServiceFabricDeployedApplicationHealth .

Met de volgende cmdlet wordt de status opgehaald van het WordCountServicePkg-servicepakket van de toepassing fabric:/WordCount die is geïmplementeerd op _Node_2. De entiteit bevat System.Hosting-rapporten voor een geslaagde activering van servicepakketten en toegangspunten en een geslaagde registratie van het servicetype.

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

U kunt de status van een geïmplementeerd servicepakket ophalen met een GET-aanvraag of een POST-aanvraag die statusbeleid bevat dat wordt beschreven in de hoofdtekst.

Statussegmentquery's

De statussegmentquery's kunnen clusteronderliggende items met meerdere niveaus (recursief) retourneren per invoerfilter. Het ondersteunt geavanceerde filters die veel flexibiliteit bieden bij het kiezen van de kinderen die moeten worden geretourneerd. De filters kunnen onderliggende items opgeven op basis van de unieke id of op basis van andere groeps-id's en/of statussen. Standaard worden er geen onderliggende items opgenomen, in tegenstelling tot statusopdrachten die altijd kinderen op het eerste niveau bevatten.

De statusquery's retourneren alleen onderliggende items op het eerste niveau van de opgegeven entiteit per vereiste filters. Als u de onderliggende elementen van de onderliggende elementen wilt ophalen, moet u aanvullende status-API's aanroepen voor elke entiteit die van belang is. Als u de status van specifieke entiteiten wilt ophalen, moet u voor elke gewenste entiteit één status-API aanroepen. Met de geavanceerde filters voor segmentquery's kunt u meerdere interessante items in één query aanvragen, waardoor de berichtgrootte en het aantal berichten worden geminimaliseerd.

De waarde van de segmentquery is dat u de status voor meer clusterentiteiten (mogelijk alle clusterentiteiten vanaf de vereiste hoofdmap) in één aanroep kunt ophalen. U kunt complexe statusquery's uitdrukken, zoals:

  • Retourneer alleen toepassingen met fouten en neem voor deze toepassingen alle services op met een waarschuwing of fout. Neem voor geretourneerde services alle partities op.
  • Retourneert alleen de status van vier toepassingen, opgegeven met hun naam.
  • Retourneert alleen de status van toepassingen van een gewenst toepassingstype.
  • Retourneer alle geïmplementeerde entiteiten op een knooppunt. Retourneert alle toepassingen, alle geïmplementeerde toepassingen op het opgegeven knooppunt en alle geïmplementeerde servicepakketten op dat knooppunt.
  • Retourneer fout alle replica's. Retourneert alle toepassingen, services, partities en alleen replica's met fouten.
  • Retourneer alle toepassingen. Neem voor een opgegeven service alle partities op.

Op dit moment wordt de statussegmentquery alleen weergegeven voor de clusterentiteit. Het retourneert een clusterstatussegment, dat het volgende bevat:

  • De geaggregeerde status van het cluster.
  • De chunklijst met statusknooppunten die de invoerfilters respecteren.
  • De chunklijst met statussegmenten van toepassingen die invoerfilters respecteren. Elk segment van de status van de toepassing bevat een segmentlijst met alle services die invoerfilters respecteren en een segmentlijst met alle geïmplementeerde toepassingen die de filters respecteren. Hetzelfde geldt voor de onderliggende elementen van services en geïmplementeerde toepassingen. Op deze manier kunnen alle entiteiten in het cluster mogelijk op hiërarchische wijze worden geretourneerd als dit wordt aangevraagd.

Segmentquery voor clusterstatus

Retourneert de status van de clusterentiteit en bevat de hiërarchische statussegmenten van vereiste onderliggende items. Invoer:

  • [Optioneel] Het clusterstatusbeleid dat wordt gebruikt om de knooppunten en de clustergebeurtenissen te evalueren.
  • [Optioneel] De toepassingsstatusbeleidskaart, met de statusbeleidsregels die worden gebruikt om het toepassingsmanifestbeleid te overschrijven.
  • [Optioneel] Filters voor knooppunten en toepassingen die aangeven welke vermeldingen van belang zijn en moeten worden geretourneerd in het resultaat. De filters zijn specifiek voor een entiteit/groep entiteiten of zijn van toepassing op alle entiteiten op dat niveau. De lijst met filters kan één algemeen filter bevatten en/of filters voor specifieke id's voor fijnmazige entiteiten die door de query worden geretourneerd. Als deze leeg zijn, worden de onderliggende items niet standaard geretourneerd. Lees meer over de filters op NodeHealthStateFilter en ApplicationHealthStateFilter. De toepassingsfilters kunnen recursief geavanceerde filters voor kinderen opgeven.

Het segmentresultaat bevat de onderliggende elementen die de filters respecteren.

Op dit moment retourneert de segmentquery geen beschadigde evaluaties of entiteitsevenementen. Deze extra informatie kan worden verkregen met behulp van de bestaande clusterstatusquery.

API

Als u het clusterstatussegment wilt ophalen, maakt u een FabricClient en roept u de methode GetClusterHealthChunkAsync aan in de HealthManager. U kunt ClusterHealthQueryDescription doorgeven om statusbeleid en geavanceerde filters te beschrijven.

Met de volgende code wordt het clusterstatussegment met geavanceerde filters ophaalt.

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

De cmdlet voor het ophalen van de clusterstatus is Get-ServiceFabricClusterChunkHealth. Maak eerst verbinding met het cluster met behulp van de cmdlet Connect-ServiceFabricCluster .

Met de volgende code worden knooppunten alleen opgehaald als ze fout hebben, met uitzondering van een specifiek knooppunt, dat altijd moet worden geretourneerd.

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

Met de volgende cmdlet wordt het clustersegment met toepassingsfilters ophaalt.

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

De volgende cmdlet retourneert alle geïmplementeerde entiteiten op een knooppunt.

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

U kunt een clusterstatussegment ophalen met een GET-aanvraag of een POST-aanvraag die statusbeleid en geavanceerde filters bevat die in de hoofdtekst worden beschreven.

Algemene query's

Algemene query's retourneren een lijst met Service Fabric-entiteiten van een opgegeven type. Ze worden weergegeven via de API (via de methoden op FabricClient.QueryManager), PowerShell-cmdlets en REST. Met deze query's worden subquery's uit meerdere onderdelen samengevoegd. Een daarvan is het statusarchief, dat de geaggregeerde status voor elk queryresultaat vult.

Notitie

Algemene query's retourneren de geaggregeerde status van de entiteit en bevatten geen uitgebreide statusgegevens. Als een entiteit niet in orde is, kunt u opvolgen met statusquery's om alle statusinformatie op te halen, waaronder gebeurtenissen, statussen van kinderen en evaluaties van slechte statussen.

Als algemene query's een onbekende status voor een entiteit retourneren, is het mogelijk dat het statusarchief geen volledige gegevens over de entiteit bevat. Het is ook mogelijk dat een subquery voor het statusarchief niet lukte (er is bijvoorbeeld een communicatiefout opgetreden of het statusarchief is beperkt). Volg op met een statusquery voor de entiteit. Als de subquery tijdelijke fouten heeft aangetroffen, zoals netwerkproblemen, kan deze vervolgquery slagen. Het kan u ook meer informatie geven uit het statusarchief over waarom de entiteit niet wordt weergegeven.

De query's die HealthState voor entiteiten bevatten, zijn:

Notitie

Sommige query's retourneren gepaginade resultaten. Het resultaat van deze query's is een lijst die is afgeleid van PagedList<T>. Als de resultaten niet in een bericht passen, wordt alleen een pagina geretourneerd en een ContinuationToken dat bijhoudt waar opsomming is gestopt. Blijf dezelfde query aanroepen en geef het vervolgtoken van de vorige query door om de volgende resultaten te krijgen.

Voorbeelden

Met de volgende code worden de beschadigde toepassingen in het cluster opgeslagen:

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

Met de volgende cmdlet worden de toepassingsdetails voor de toepassing fabric:/WordCount opgehaald. U ziet dat de status op waarschuwing staat.

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"}]" }

Met de volgende cmdlet worden de services met een status van fout ophaalt:

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

Cluster- en toepassingsupgrades

Tijdens een bewaakte upgrade van het cluster en de toepassing controleert Service Fabric de status om ervoor te zorgen dat alles in orde blijft. Als een entiteit beschadigd is zoals geëvalueerd met behulp van geconfigureerd statusbeleid, past de upgrade upgrade-specifiek beleid toe om de volgende actie te bepalen. De upgrade kan worden onderbroken om gebruikersinteractie toe te staan (zoals het oplossen van foutvoorwaarden of het wijzigen van beleid) of kan automatisch worden teruggezet naar de vorige goede versie.

Tijdens een clusterupgrade kunt u de status van de clusterupgrade ophalen. De upgradestatus bevat evaluaties die niet in orde zijn, wat verwijst naar wat niet in orde is in het cluster. Als de upgrade wordt teruggedraaid vanwege statusproblemen, onthoudt de upgradestatus de laatste beschadigde redenen. Met deze informatie kunnen beheerders onderzoeken wat er fout is gegaan nadat de upgrade is teruggedraaid of gestopt.

Op dezelfde manier worden tijdens een toepassingsupgrade evaluaties opgenomen in de upgradestatus van de toepassing.

Hieronder ziet u de upgradestatus van de toepassing voor een gewijzigde infrastructuur:/WordCount-toepassing. Een watchdog heeft een fout gerapporteerd op een van de replica's. De upgrade wordt teruggezet omdat de statuscontroles niet worden nageleefd.

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

Lees meer over de upgrade van de Service Fabric-toepassing.

Statusevaluaties gebruiken om problemen op te lossen

Wanneer er een probleem is met het cluster of een toepassing, bekijkt u de status van het cluster of de toepassing om vast te stellen wat er mis is. De evaluaties van beschadigde status bieden details over wat de huidige beschadigde status heeft geactiveerd. Indien nodig kunt u inzoomen op beschadigde onderliggende entiteiten om de hoofdoorzaak te identificeren.

Stel dat een toepassing niet in orde is omdat er een foutenrapport is op een van de replica's. In de volgende PowerShell-cmdlet ziet u de beschadigde evaluaties:

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

U kunt de replica bekijken voor meer informatie:

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

Notitie

De evaluaties van beschadigde status laten de eerste reden zien waarom de entiteit wordt geëvalueerd naar de huidige status. Er kunnen meerdere andere gebeurtenissen zijn die deze status activeren, maar deze worden niet weerspiegeld in de evaluaties. Als u meer informatie wilt, zoomt u in op de statusentiteiten om alle beschadigde rapporten in het cluster te achterhalen.

Volgende stappen

Systeemstatusrapporten gebruiken om fouten op te lossen

Aangepaste Service Fabric-statusrapporten toevoegen

De servicestatus rapporteren en controleren

Services lokaal controleren en een diagnose uitvoeren

Service Fabric-toepassingsupgrade