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 WordCountServiceType
en 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 datPartition 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:
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:
- Lijst met knooppunten: retourneert de lijstknooppunten in het cluster (gepaginad).
- API: FabricClient.QueryClient.GetNodeListAsync
- PowerShell: Get-ServiceFabricNode
- Lijst met toepassingen: retourneert de lijst met toepassingen in het cluster (paged).
- API: FabricClient.QueryClient.GetApplicationListAsync
- PowerShell: Get-ServiceFabricApplication
- Servicelijst: retourneert de lijst met services in een toepassing (pagina).
- API: FabricClient.QueryClient.GetServiceListasync
- PowerShell: Get-ServiceFabricService
- Partitielijst: retourneert de lijst met partities in een service (pagina).
- API: FabricClient.QueryClient.GetPartitionListAsync
- PowerShell: Get-ServiceFabricPartition
- Replicalijst: retourneert de lijst met replica's in een partitie (paged).
- API: FabricClient.QueryClient.GetReplicaListAsync
- PowerShell: Get-ServiceFabricReplica
- Lijst met geïmplementeerde toepassingen: retourneert de lijst met geïmplementeerde toepassingen op een knooppunt.
- API: FabricClient.QueryClient.GetDeployedApplicationListAsync
- PowerShell: Get-ServiceFabricDeployedApplication
- Lijst met geïmplementeerde servicepakketten: retourneert de lijst met servicepakketten in een geïmplementeerde toepassing.
- API: FabricClient.QueryClient.GetDeployedServicePackageListAsync
- PowerShell: Get-ServiceFabricDeployedApplication
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