Share via


Service Fabric-statusrapporten weergeven

Azure Service Fabric introduceert een statusmodel met statusentiteiten waarop systeemonderdelen en watchdogs lokale voorwaarden 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 visualisatiehulpprogramma's
  • Statusquery's (via PowerShell, API of REST)
  • Algemene query's die een lijst met entiteiten retourneren die de 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 fabric:/WordCount-toepassing. De fabric:/WordCount-toepassing bevat twee standaardservices, een stateful service van het type WordCountServiceTypeen een stateless service van het type WordCountWebServiceType. Ik heb de ApplicationManifest.xml vereiste zeven doelreplica's voor de stateful service en één partitie gewijzigd. Omdat er slechts vijf knooppunten in het cluster zijn, rapporteren de systeemonderdelen een waarschuwing over de servicepartitie omdat deze zich onder het doelaantal bevindt.

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

Status 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 (in fout) omdat er een foutgebeurtenis is gerapporteerd door MyWatchdog voor de beschikbaarheid van de eigenschap.
  • Een van de services fabric :/WordCount/WordCountService is geel (in 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 het hier niet wordt weergegeven, is de servicepartitie geel vanwege een systeemrapport dat System.FM dat Partition is below target replica or instance countzegt. De gele partitie activeert de gele service.
  • Het cluster is rood vanwege de rode toepassing.

De evaluatie maakt gebruik van standaardbeleid uit het clustermanifest en het 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

Er wordt een statusentiteit 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 FabricErrorCode FabricHealthEntityNotFound 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, worden de statusbeleidsregels van het cluster of toepassingsmanifest gebruikt voor evaluatie. Als de manifesten geen definitie voor statusbeleid bevatten, worden de standaardstatusbeleidsregels gebruikt voor evaluatie. Het standaardstatusbeleid tolereert geen fouten. De query's accepteren ook filters voor het retourneren van alleen gedeeltelijke onderliggende items of gebeurtenissen. De query's die de opgegeven filters respecteren. Met een ander filter kunnen de onderliggende statistieken worden uitgesloten.

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 entiteitsstatusrapporten, onderliggende statussen (indien van toepassing) en statusbeleid. Lees meer over de evaluatie van de entiteitsstatus.
  • De status gebeurtenissen op de entiteit.
  • De verzameling statussen van alle onderliggende objecten voor de entiteiten die kinderen kunnen hebben. De statussen bevatten entiteits-id's en de geaggregeerde status. Als u de volledige status voor een kind 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, met de onderliggende gezondheidsevaluaties die de huidige status hebben geactiveerd. Een watchdog heeft bijvoorbeeld een fout gerapporteerd voor een replica. De status van de toepassing toont een beschadigde evaluatie vanwege een beschadigde service; de service is beschadigd vanwege een partitie in een fout; de partitie is beschadigd vanwege een replica in een fout; de replica is beschadigd vanwege het statusrapport van de watchdog-fout.
  • De statusstatistieken voor alle onderliggende typen entiteiten met kinderen. 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 elementen van het cluster). Invoer:

  • [Optioneel] Het clusterstatusbeleid dat wordt gebruikt om de knooppunten en de cluster gebeurtenissen te evalueren.
  • [Optioneel] De toepassingsstatusbeleidstoewijzing, waarbij het statusbeleid wordt gebruikt om het manifestbeleid voor toepassingen 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 waarschuwingen en 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 infrastructuur op te nemen:/Systeemstatusstatistieken in de statusstatistieken. Alleen van toepassing wanneer de gezondheidsstatistieken niet worden uitgesloten. De statusstatistieken bevatten standaard alleen statistieken voor gebruikerstoepassingen en niet de systeemtoepassing.

API

Als u de clusterstatus wilt ophalen, maakt u een getclusterHealthAsync-methode en roept u deze aan in de HealthManager.FabricClient

Met de volgende aanroep wordt de clusterstatus opgehaald:

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

Met de volgende code wordt de clusterstatus opgehaald met behulp van een aangepast clusterstatusbeleid en filters voor knooppunten en toepassingen. Hiermee wordt aangegeven dat de statusstatistieken de infrastructuurstatistieken bevatten:/Systeemstatistieken. Het maakt ClusterHealthQueryDescription, 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. Gebruik eerst de cmdlet Connect-ServiceFabricCluster om verbinding te maken met het cluster.

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

Met de volgende cmdlet wordt de clusterstatus opgehaald met behulp van standaardstatusbeleid. De geaggregeerde status is waarschuwing, omdat de fabric:/WordCount-toepassing 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

Met de volgende PowerShell-cmdlet wordt de status van het cluster opgehaald 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 fabric:/WordCount-toepassing respecteert het toepassingsfilter. Omdat het aangepaste beleid aangeeft dat waarschuwingen worden gezien als fouten voor de fabric:/WordCount-toepassing, wordt de toepassing als fout geëvalueerd en is 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 in de hoofdtekst wordt beschreven.

Status van knooppunten ophalen

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

  • [Vereist] De naam van het knooppunt waarmee het knooppunt wordt geïdentificeerd.
  • [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 knooppunten wilt ophalen via de API, maakt u een FabricClient getNodeHealthAsync-methode en roept u deze aan in de HealthManager.

Met de volgende code wordt de status van het knooppunt 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 worden gebeurtenissenfilter en aangepast 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. Gebruik eerst de cmdlet Connect-ServiceFabricCluster om verbinding te maken met het cluster. Met de volgende cmdlet wordt de status van het knooppunt opgehaald met behulp van standaardstatusbeleid:

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

Met de volgende cmdlet wordt de status van alle knooppunten in het cluster opgehaald:

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 knooppunten 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 service-onderliggende elementen. Invoer:

  • [Vereist] De toepassingsnaam (URI) die de toepassing identificeert.
  • [Optioneel] Het toepassingsstatusbeleid dat wordt gebruikt om het manifestbeleid voor toepassingen 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 waarschuwingen en 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 dit niet is opgegeven, bevatten de statusstatistieken het aantal ok, waarschuwingen en fouten voor alle onderliggende toepassingen: services, partities, replica's, geïmplementeerde toepassingen en geïmplementeerde servicepakketten.

API

Als u de status van de toepassing wilt ophalen, maakt u een FabricClient getApplicationHealthAsync-methode en roept u deze aan in de HealthManager.

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

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

De volgende code haalt de toepassingsstatus op voor de opgegeven toepassingsnaam (URI), 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. Gebruik eerst de cmdlet Connect-ServiceFabricCluster om verbinding te maken met het cluster.

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

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. Het filtert ook kinderen en gebeurtenissen.

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 status van de toepassing 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. Deze bevat de statussen van de partitie. Invoer:

  • [Vereist] De servicenaam (URI) die de service identificeert.
  • [Optioneel] Het toepassingsstatusbeleid dat wordt gebruikt om het manifestbeleid van de toepassing 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 statusstatistieken 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 via de API wilt ophalen, maakt u een FabricClient getServiceHealthAsync-methode en roept u deze aan in de HealthManager.

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

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

De volgende code haalt de servicestatus op voor de opgegeven servicenaam (URI), 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. Gebruik eerst de cmdlet Connect-ServiceFabricCluster om verbinding te maken met het cluster.

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

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 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. Deze bevat de statussen van de replica. Invoer:

  • [Vereist] De partitie-id (GUID) die de partitie identificeert.
  • [Optioneel] Het toepassingsstatusbeleid dat wordt gebruikt om het manifestbeleid van de toepassing 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 statusstatistieken uit te sluiten. Als dit niet is opgegeven, laten de statusstatistieken zien hoeveel replica's in orde, waarschuwing en foutstatussen zijn.

API

Als u de partitiestatus wilt ophalen via de API, maakt u een FabricClient getPartitionHealthAsync-methode en roept u deze aan in 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. Gebruik eerst de cmdlet Connect-ServiceFabricCluster om verbinding te maken met het cluster.

De volgende cmdlet haalt de status op voor alle partities van de fabric:/WordCount/WordCountService-service en filtert replicastatussen:

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 partitiestatus ophalen met een GET-aanvraag of een POST-aanvraag die statusbeleid bevat dat in de hoofdtekst wordt beschreven.

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 parameters van het toepassingsstatusbeleid die worden gebruikt om het manifestbeleid van de toepassing 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 via de API wilt ophalen, maakt u een FabricClient getReplicaHealthAsync-methode en roept u deze 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. Gebruik eerst de cmdlet Connect-ServiceFabricCluster om verbinding te maken met het cluster.

Met de volgende cmdlet wordt de status van de primaire replica voor alle partities van de service ophaalt:

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 status van de replica ophalen met een GET-aanvraag of een POST-aanvraag die statusbeleid bevat dat in de hoofdtekst wordt beschreven.

Geïmplementeerde toepassingsstatus ophalen

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

  • [Vereist] De toepassingsnaam (URI) en knooppuntnaam (tekenreeks) die de geïmplementeerde toepassing identificeren.
  • [Optioneel] Het toepassingsstatusbeleid dat wordt gebruikt om het manifestbeleid voor toepassingen 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 statusstatistieken uit te sluiten. Als dit niet is opgegeven, geven de statusstatistieken het aantal geïmplementeerde servicepakketten weer in ok, waarschuwing en status van de fout.

API

Als u de status van een toepassing wilt ophalen die is geïmplementeerd op een knooppunt via de API, maakt u een FabricClient getDeployedApplicationHealthAsync-methode en roept u deze 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. Gebruik eerst de cmdlet Connect-ServiceFabricCluster om verbinding te maken met het cluster. Als u wilt achterhalen waar een toepassing is geïmplementeerd, voert u Get-ServiceFabricApplicationHealth uit en bekijkt u de onderliggende toepassingen van de geïmplementeerde toepassing.

Met de volgende cmdlet wordt de status van de fabric-/WordCount-toepassing opgehaald 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 krijgen 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 naam van de toepassing (URI), de naam van het knooppunt (tekenreeks) en de naam van het servicemanifest (tekenreeks) waarmee het geïmplementeerde servicepakket wordt geïdentificeerd.
  • [Optioneel] Het toepassingsstatusbeleid dat wordt gebruikt om het manifestbeleid van de toepassing 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 getDeployedServicePackageHealthAsync-methode op de HealthManager en roept u dit aan. 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. Gebruik eerst de cmdlet Connect-ServiceFabricCluster om verbinding te maken met het cluster. 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 geïmplementeerde servicepakket-onderliggende items in de uitvoer Get-ServiceFabricDeployedApplicationHealth .

Met de volgende cmdlet wordt de status opgehaald van het WordCountServicePkg-servicepakket van de fabric:/WordCount-toepassing die is geïmplementeerd op _Node_2. De entiteit heeft 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 het geïmplementeerde servicepakket ophalen met een GET-aanvraag of een POST-aanvraag die statusbeleid bevat dat in de hoofdtekst wordt beschreven.

Statussegmentquery's

De query's voor statussegmenten kunnen clusterondertekeningen op meerdere niveaus retourneren (recursief), per invoerfilter. Het biedt ondersteuning voor geavanceerde filters die veel flexibiliteit bieden bij het kiezen van de kinderen die moeten worden geretourneerd. De filters kunnen kinderen opgeven op basis van de unieke id of door andere groeps-id's en/of statussen. Standaard zijn er geen onderliggende items opgenomen, in tegenstelling tot gezondheidsopdrachten die altijd onderliggende elementen op het eerste niveau bevatten.

De statusquery's retourneren alleen onderliggende elementen op het eerste niveau van de opgegeven entiteit per vereiste filters. Als u de kinderen van de kinderen wilt ophalen, moet u aanvullende status-API's aanroepen voor elke entiteit van belang. Om de status van specifieke entiteiten op te halen, moet u ook één status-API aanroepen voor elke gewenste entiteit. Met het geavanceerde filteren van 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 in één aanroep de status voor meer clusterentiteiten (mogelijk alle clusterentiteiten vanaf de vereiste hoofdmap) kunt krijgen. U kunt complexe statusquery's uitdrukken, zoals:

  • Retourneer alleen toepassingen in een fout en voor deze toepassingen zijn alle services in waarschuwing of fout opgenomen. Neem voor geretourneerde services alle partities op.
  • Retourneert alleen de status van vier toepassingen, opgegeven door hun namen.
  • Alleen de status van toepassingen van een gewenst toepassingstype retourneren.
  • Alle geïmplementeerde entiteiten op een knooppunt retourneren. Retourneert alle toepassingen, alle geïmplementeerde toepassingen op het opgegeven knooppunt en alle geïmplementeerde servicepakketten op dat knooppunt.
  • Retourneert alle replica's in een fout. Retourneert alle toepassingen, services, partities en alleen replica's die fouten veroorzaken.
  • Alle toepassingen retourneren. Neem voor een opgegeven service alle partities op.

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

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

Clusterstatussegmentquery

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 cluster gebeurtenissen te evalueren.
  • [Optioneel] De toepassingsstatusbeleidstoewijzing, waarbij het statusbeleid wordt gebruikt om het manifestbeleid voor toepassingen te overschrijven.
  • [Optioneel] Filters voor knooppunten en toepassingen die aangeven welke vermeldingen van belang zijn en die in het resultaat moeten worden geretourneerd. 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 en/of filters voor specifieke id's bevatten om entiteiten te verfijnen 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.

Momenteel retourneert de segmentquery geen beschadigde evaluaties of entiteitsgebeurtenissen. Deze extra informatie kan worden verkregen met behulp van de bestaande clusterstatusquery.

API

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

Met de volgende code wordt clusterstatussegment opgehaald met geavanceerde filters.

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. Gebruik eerst de cmdlet Connect-ServiceFabricCluster om verbinding te maken met het cluster.

Met de volgende code worden alleen knooppunten opgehaald als deze fouten bevatten, 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 clustersegment opgehaald met toepassingsfilters.

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 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 van meerdere onderdelen samengevoegd. Een van deze 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 de statusquery's opvolgen om alle statusgegevens op te halen, waaronder gebeurtenissen, statussen van kinderen en evaluaties met een slechte status.

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 is geslaagd (er is bijvoorbeeld een communicatiefout opgetreden of de statusopslag is beperkt). Volg de statusquery voor de entiteit op. Als er tijdelijke fouten zijn opgetreden in de subquery, zoals netwerkproblemen, kan deze opvolgingsquery 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 wordt een Vervolgtoken bijgehouden waar opsomming is gestopt. Blijf dezelfde query aanroepen en geef het vervolgtoken van de vorige query door om de volgende resultaten op te halen.

Voorbeelden

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

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

Met de volgende cmdlet worden de toepassingsgegevens voor de fabric-/WordCount-toepassing opgehaald. U ziet dat de status waarschuwing heeft.

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 de status van de 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 niet in orde is zoals geëvalueerd met behulp van geconfigureerd statusbeleid, past de 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 het kan automatisch worden teruggedraaid naar de vorige goede versie.

Tijdens een clusterupgrade kunt u de upgradestatus van het cluster ophalen. De upgradestatus bevat beschadigde evaluaties, die verwijzen 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 eventuele beschadigde evaluaties tijdens een upgrade van de toepassing opgenomen in de status van de toepassingsupgrade.

Hieronder ziet u de status van de toepassingsupgrade 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 gerespecteerd.

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 service fabric-toepassingsupgrade.

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 met een slechte status geven details over wat de huidige beschadigde status heeft geactiveerd. Als dat nodig is, kunt u inzoomen op beschadigde onderliggende entiteiten om de hoofdoorzaak te identificeren.

Denk bijvoorbeeld aan een toepassing die niet in orde is omdat er een foutenrapport is op een van de replica's. In de volgende PowerShell-cmdlet worden de beschadigde evaluaties weergegeven:

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 beschadigde evaluaties geven de eerste reden aan dat de entiteit wordt geëvalueerd op de huidige status. Er kunnen meerdere andere gebeurtenissen zijn die deze status activeren, maar deze worden niet weergegeven in de evaluaties. Voor meer informatie kunt u inzoomen op de statusentiteiten om alle beschadigde rapporten in het cluster te achterhalen.

Volgende stappen

Use system health reports to troubleshoot (Systeemstatusrapporten gebruiken om problemen op te lossen)

Aangepaste Service Fabric-statusrapporten toevoegen

Servicestatus rapporteren en controleren

Services lokaal bewaken en diagnosticeren

Service Fabric-toepassingsupgrade