Come visualizzare i report sull'integrità di Service FabricView Service Fabric health reports

Azure Service Fabric introduce un modello di integrità con entità di integrità per le quali i componenti di sistema e i watchdog possono creare report sulle condizioni locali sottoposte a monitoraggio.Azure Service Fabric introduces a health model with health entities on which system components and watchdogs can report local conditions that they are monitoring. L' archivio integrità aggrega tutti i dati di integrità per determinare se le entità sono integre.The health store aggregates all health data to determine whether entities are healthy.

Il cluster viene popolato automaticamente con report sull'integrità inviati dai componenti di sistema.The cluster is automatically populated with health reports sent by the system components. Per altre informazioni, vedere Usare i report sull'integrità del sistema per la risoluzione dei problemi.Read more at Use system health reports to troubleshoot.

Service Fabric offre diversi modi per ottenere l'integrità aggregata delle entità:Service Fabric provides multiple ways to get the aggregated health of the entities:

  • Service Fabric Explorer o altri strumenti di visualizzazioneService Fabric Explorer or other visualization tools
  • Query di integrità (tramite PowerShell, API o REST)Health queries (through PowerShell, API, or REST)
  • Query generali che restituiscono un elenco di entità per le quali l'integrità costituisce una proprietà (tramite PowerShell, API o REST)General queries that return a list of entities that have health as one of the properties (through PowerShell, API, or REST)

Per illustrare queste opzioni, si userà un cluster locale con cinque nodi e l'applicazione fabric:/WordCount.To demonstrate these options, let's use a local cluster with five nodes and the fabric:/WordCount application. L'applicazione fabric:/WordCount contiene due servizi predefiniti, un servizio con stato di tipo WordCountServiceType e un servizio senza stato di tipo WordCountWebServiceType.The fabric:/WordCount application contains two default services, a stateful service of type WordCountServiceType, and a stateless service of type WordCountWebServiceType. L'oggetto ApplicationManifest.xml è stato modificato per richiedere sette repliche di destinazione per il servizio con stato e una partizione.I changed the ApplicationManifest.xml to require seven target replicas for the stateful service and one partition. Poiché ci sono solo cinque nodi nel cluster, i componenti di sistema segnalano un avviso nella partizione del servizio perché è al di sotto del numero previsto.Because there are only five nodes in the cluster, the system components report a warning on the service partition because it is below the target count.

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

Integrità in Esplora Infrastruttura di serviziHealth in Service Fabric Explorer

Esplora Infrastruttura di servizi fornisce una panoramica visiva del cluster.Service Fabric Explorer provides a visual view of the cluster. Nell'immagine seguente è possibile osservare quanto segue:In the image below, you can see that:

  • L'applicazione fabric:/WordCount è di colore rosso (condizione di errore), perché per questa applicazione è stato segnalato un evento di errore da MyWatchdog per la proprietà Availability.The application fabric:/WordCount is red (in error) because it has an error event reported by MyWatchdog for the property Availability.
  • Uno dei servizi di questa applicazione, fabric:/WordCount/WordCountService è di colore giallo (condizione di avviso).One of its services, fabric:/WordCount/WordCountService is yellow (in warning). Il servizio è configurato con sette repliche e il cluster ha cinque nodi, quindi due repliche non possono essere posizionate.The service is configured with seven replicas and the cluster has five nodes, so two repicas can't be placed. Anche se qui non è illustrata, la partizione del servizio è di colore giallo a causa di un report di sistema di System.FM che indica Partition is below target replica or instance count.Although it's not shown here, the service partition is yellow because of a system report from System.FM saying that Partition is below target replica or instance count. La partizione gialla avvia il servizio giallo.The yellow partition triggers the yellow service.
  • Il cluster è di colore rosso perché è rossa anche l'applicazione.The cluster is red because of the red application.

La valutazione usa criteri predefiniti del manifesto del cluster dal manifesto dell'applicazione.The evaluation uses default policies from the cluster manifest and application manifest. Questi sono criteri rigorosi e non tollerano errori.They are strict policies and do not tolerate any failure.

Visualizzazione del cluster con Service Fabric Explorer:View of the cluster with Service Fabric Explorer:

Visualizzazione del cluster con Service Fabric Explorer.

Nota

Ulteriori informazioni su Esplora Infrastruttura di servizi.Read more about Service Fabric Explorer.

Query relative all’integritàHealth queries

Infrastruttura di servizi espone le query relative all’integrità per ognuno dei tipi di entitàsupportati.Service Fabric exposes health queries for each of the supported entity types. È possibile accedervi tramite l'API, usando i metodi in FabricClient.HealthManager, i cmdlet di PowerShell e REST.They can be accessed through the API, using methods on FabricClient.HealthManager, PowerShell cmdlets, and REST. Queste query restituiscono informazioni complete sull'integrità per l'entità, come lo stato aggregato dell'integrità, gli eventi di integrità dell'entità, gli stati di integrità degli elementi figlio, se applicabili, le valutazioni di non integrità (quando l'entità non è integra) e le statistiche sull'integrità degli elementi figlio, quando applicabili.These queries return complete health information about the entity: the aggregated health state, entity health events, child health states (when applicable), unhealthy evaluations (when the entity is not healthy), and children health statistics (when applicable).

Nota

Un'entità integra viene restituita quando è popolata completamente nell'archivio integrità.A health entity is returned when it is fully populated in the health store. L'entità deve essere attiva (non eliminata) e avere un report di sistema.The entity must be active (not deleted) and have a system report. Anche le entità padre nella catena della gerarchia devono avere report di sistema.Its parent entities on the hierarchy chain must also have system reports. Se una di queste condizioni non viene soddisfatta, le query relative all'integrità restituiscono un oggetto FabricException con FabricErrorCode FabricHealthEntityNotFound che illustra il motivo per cui l'entità non viene restituita.If any of these conditions are not satisfied, the health queries return a FabricException with FabricErrorCode FabricHealthEntityNotFound that shows why the entity is not returned.

Le query di integrità richiedono il passaggio nell'identificatore dell'entità, che dipende dal tipo di entità.The health queries must pass in the entity identifier, which depends on the entity type. Le query accettano parametri dei criteri di integrità facoltativi.The queries accept optional health policy parameters. Se non sono specificati, per la valutazione vengono usati i criteri di integrità dal manifesto del cluster o dell'applicazione.If no health policies are specified, the health policies from the cluster or application manifest are used for evaluation. Se i manifesti non contengono una definizione per i criteri di integrità, per la valutazione vengono usati i criteri di integrità predefiniti.If the manifests don't contain a definition for health policies, the default health policies are used for evaluation. I criteri di integrità predefiniti non tollerano errori.The default health policies do not tolerate any failures. Le query accettano anche filtri per restituire solo elementi figlio o eventi parziali, quelli che rispettano i filtri specificati.The queries also accept filters for returning only partial children or events--the ones that respect the specified filters. Un altro filtro consente di escludere le statistiche relative agli elementi figlio.Another filter allows excluding the children statistics.

Nota

Sul lato server vengono applicati i filtri di output, in modo che la dimensione della risposta al messaggio venga ridotta.The output filters are applied on the server side, so the message reply size is reduced. È consigliabile usare i filtri di output per limitare i dati restituiti, invece di applicare filtri sul lato client.We recommended that you use the output filters to limit the data returned, rather than apply filters on the client side.

L'integrità di un'entità contiene quanto segue:An entity's health contains:

  • Lo stato di integrità aggregato dell'entità.The aggregated health state of the entity. Viene calcolato dall'archivio integrità in base ai report sull'integrità dell'entità, gli stati di integrità degli elementi figlio, se applicabili, e i criteri di integrità.Computed by the health store based on entity health reports, child health states (when applicable), and health policies. Per altre informazioni, vedere valutazione dell'integrità dell'entità.Read more about entity health evaluation.
  • Gli eventi di integrità dell'entità.The health events on the entity.
  • La raccolta degli stati di integrità di tutti gli elementi figlio per le entità che possono avere elementi figlio.The collection of health states of all children for the entities that can have children. Gli stati di integrità contengono l'identificatore dell'entità e lo stato di integrità aggregato.The health states contain entity identifiers and the aggregated health state. Per ottenere l'integrità completa per un elemento figlio, chiamare l'integrità di query per il tipo di entità figlio e passare l'identificatore dell'elemento figlio.To get complete health for a child, call the query health for the child entity type and pass in the child identifier.
  • Le valutazioni non integre che puntano al report che ha attivato lo stato dell'entità, se l'entità non è integra.The unhealthy evaluations that point to the report that triggered the state of the entity, if the entity is not healthy. Le valutazioni sono ricorsive e contengono le valutazioni di integrità degli elementi figlio che hanno attivato lo stato di integrità corrente.The evaluations are recursive, containing the children health evaluations that triggered current health state. Un watchdog ha segnalato ad esempio un errore in una replica.For example, a watchdog reported an error against a replica. L'integrità dell'applicazione presenta una valutazione di non integrità a causa di un servizio non integro. Il servizio non è integro a causa di un errore di una partizione. La partizione non è integra a causa di un errore di una replica. La replica non è integra a causa del report di integrità di errore del watchdog.The application health shows an unhealthy evaluation due to an unhealthy service; the service is unhealthy due to a partition in error; the partition is unhealthy due to a replica in error; the replica is unhealthy due to the watchdog error health report.
  • Le statistiche di integrità per tutti i tipi figlio delle entità che hanno elementi figlio.The health statistics for all children types of the entities that have children. L'integrità del cluster mostra ad esempio il numero totale di applicazioni, servizi, partizioni, repliche ed entità distribuite nel cluster.For example, cluster health shows the total number of applications, services, partitions, replicas, and deployed entities in the cluster. L'integrità del servizio mostra il numero totale di partizioni e repliche nel servizio specificato.Service health shows the total number of partitions and replicas under the specified service.

Get cluster healthGet cluster health

Restituisce l'integrità dell'entità cluster e contiene gli stati di integrità di applicazioni e nodi, elementi figlio del cluster.Returns the health of the cluster entity and contains the health states of applications and nodes (children of the cluster). Input:Input:

  • [Facoltativo] Criteri di integrità del cluster usati per valutare i nodi e gli eventi del cluster.[Optional] The cluster health policy used to evaluate the nodes and the cluster events.
  • [Facoltativo] Mappa dei criteri di integrità dell'applicazione con criteri di integrità usati per sostituire i criteri del manifesto dell'applicazione.[Optional] The application health policy map, with the health policies used to override the application manifest policies.
  • [Facoltativo] Filtri per eventi, nodi e applicazioni che specificano le voci di interesse che devono essere restituite nel risultato (ad esempio, solo gli errori o avvisi ed errori).[Optional] Filters for events, nodes, and applications that specify which entries are of interest and should be returned in the result (for example, errors only, or both warnings and errors). Per valutare l'integrità aggregata dell'entità, vengono usati tutti gli eventi, i nodi e le applicazioni, indipendentemente dal filtro.All events, nodes, and applications are used to evaluate the entity aggregated health, regardless of the filter.
  • [Facoltativo] Filtrare per escludere le statistiche di integrità.[Optional] Filter to exclude health statistics.
  • [Facoltativo] Filtrare per includere le statistiche di integrità di fabric:/System.[Optional] Filter to include fabric:/System health statistics in the health statistics. Applicabile solo quando le statistiche di integrità non sono escluse.Only applicable when the health statistics are not excluded. Per impostazione predefinita, le statistiche di integrità includono solo le statistiche per le applicazioni utente e non per l'applicazione System.By default, the health statistics include only statistics for user applications and not the System application.

APIAPI

Per ottenere l'integrità del cluster, creare un oggetto FabricClient e chiamare il metodo GetClusterHealthAsync sul relativo HealthManager.To get cluster health, create a FabricClient and call the GetClusterHealthAsync method on its HealthManager.

La chiamata seguente permette di ottenere l'integrità del cluster:The following call gets the cluster health:

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

Il codice seguente permette di ottenere l'integrità del cluster usando criteri di integrità del cluster personalizzati e filtri per nodi e applicazioni.The following code gets the cluster health by using a custom cluster health policy and filters for nodes and applications. Specifica che le statistiche di integrità includono le statistiche di fabric:/System.It specifies that the health statistics include the fabric:/System statistics. Crea un oggetto ClusterHealthQueryDescription, che contiene le informazioni di input.It creates ClusterHealthQueryDescription, which contains the input information.

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);

PowerShellPowerShell

Il cmdlet per ottenere l'integrità del cluster è Get-ServiceFabricClusterHealth.The cmdlet to get the cluster health is Get-ServiceFabricClusterHealth. Connettersi prima di tutto al cluster con il cmdlet Connect-ServiceFabricCluster .First, connect to the cluster by using the Connect-ServiceFabricCluster cmdlet.

Lo stato del cluster è costituito da cinque nodi, dall'applicazione di sistema e da fabric:/WordCount, configurati come descritto.The state of the cluster is five nodes, the system application, and fabric:/WordCount configured as described.

I cmdlet seguenti ottengono l'integrità del cluster con criteri di integrità predefiniti.The following cmdlet gets cluster health by using default health policies. Lo stato di integrità aggregato è di tipo avviso, perché per l'applicazione fabric:/WordCount è stato generato un avviso.The aggregated health state is warning, because the fabric:/WordCount application is in warning. Notare come le valutazioni non integre forniscano dettagli sulle condizioni che hanno attivato lo stato di integrità aggregato.Note how the unhealthy evaluations provide details on the conditions that triggered the aggregated health.

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

Il cmdlet PowerShell seguente ottiene lo stato di integrità del cluster con i criteri dell'applicazione personalizzati.The following PowerShell cmdlet gets the health of the cluster by using a custom application policy. Filtra i risultati per ottenere solo le applicazioni e i nodi con stato di errore o avviso.It filters results to get only applications and nodes in error or warning. Di conseguenza, non vengono restituiti nodi, perché sono tutti integri.As a result, no nodes are returned, as they are all healthy. Solo l'applicazione fabric:/WordCount rispetta il filtro delle applicazioni.Only the fabric:/WordCount application respects the applications filter. Poiché i criteri personalizzati specificano di considerare gli avvisi come errori per l'applicazione fabric:/WordCount, questa viene valutata in stato di errore e lo stesso accade per il cluster.Because the custom policy specifies to consider warnings as errors for the fabric:/WordCount application, the application is evaluated as in error, and so is the 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

RESTREST

Per ottenere l'integrità di un cluster è possibile usare una richiesta GET o una richiesta POST che nel corpo include la descrizione di criteri di integrità.You can get cluster health with a GET request or a POST request that includes health policies described in the body.

Get node healthGet node health

Restituisce l'integrità di un'entità nodo e contiene gli eventi di integrità segnalati sul nodo.Returns the health of a node entity and contains the health events reported on the node. Input:Input:

  • [Obbligatorio] Nome del nodo che identifica il nodo.[Required] The node name that identifies the node.
  • [Facoltativo] Impostazioni dei criteri di integrità usate per valutare l'integrità.[Optional] The cluster health policy settings used to evaluate health.
  • [Facoltativo] Filtri per gli eventi che specificano le voci di interesse che devono essere restituite nel risultato (ad esempio, solo gli errori o avvisi ed errori).[Optional] Filters for events that specify which entries are of interest and should be returned in the result (for example, errors only, or both warnings and errors). Per valutare l'integrità aggregata dell'entità, vengono usati tutti gli eventi, indipendentemente dal filtro.All events are used to evaluate the entity aggregated health, regardless of the filter.

APIAPI

Per ottenere l'integrità del nodo tramite l'API, creare un oggetto FabricClient e chiamare il metodo GetNodeHealthAsync sul relativo HealthManager.To get node health through the API, create a FabricClient and call the GetNodeHealthAsync method on its HealthManager.

Il codice seguente permette di ottenere l'integrità del nodo per il nome del nodo specificato:The following code gets the node health for the specified node name:

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

Il codice seguente permette di ottenere l'integrità del nodo per il nome del nodo specificato e passa un filtro eventi e criteri personalizzati tramite NodeHealthQueryDescription:The following code gets the node health for the specified node name and passes in events filter and custom policy through NodeHealthQueryDescription:

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

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

PowerShellPowerShell

Il cmdlet per ottenere l'integrità del nodo è Get-ServiceFabricNodeHealth.The cmdlet to get the node health is Get-ServiceFabricNodeHealth. Connettersi prima di tutto al cluster con il cmdlet Connect-ServiceFabricCluster .First, connect to the cluster by using the Connect-ServiceFabricCluster cmdlet. I cmdlet seguenti ottengono l'integrità del nodo con criteri di integrità predefiniti:The following cmdlet gets the node health by using default health policies:

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

Il cmdlet seguente ottiene lo stato di tutti i nodi del cluster:The following cmdlet gets the health of all nodes in the cluster:

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

RESTREST

Per ottenere l'integrità di un nodo è possibile usare una richiesta GET o una richiesta POST che nel corpo include la descrizione di criteri di integrità.You can get node health with a GET request or a POST request that includes health policies described in the body.

Ottieni lo stato dell'integrità dell'applicazioneGet application health

Restituisce lo stato di un'entità applicazione.Returns the health of an application entity. Contiene gli stati di integrità dell'applicazione distribuita e gli elementi figlio del servizio.It contains the health states of the deployed application and service children. Input:Input:

  • [Obbligatorio] Nome dell'applicazione (URI) che identifica l'applicazione.[Required] The application name (URI) that identifies the application.
  • [Facoltativo] Criteri di integrità dell'applicazione usati per sostituire i criteri del manifesto dell'applicazione.[Optional] The application health policy used to override the application manifest policies.
  • [Facoltativo] Filtri per eventi, servizi e applicazioni distribuite che specificano le voci di interesse che devono essere restituite nel risultato (ad esempio, solo gli errori o avvisi ed errori).[Optional] Filters for events, services, and deployed applications that specify which entries are of interest and should be returned in the result (for example, errors only, or both warnings and errors). Per valutare l'integrità aggregata dell'entità, vengono usati tutti gli eventi, i servizi e le applicazioni distribuite, indipendentemente dal filtro.All events, services, and deployed applications are used to evaluate the entity aggregated health, regardless of the filter.
  • [Facoltativo] Filtrare per escludere le statistiche di integrità.[Optional] Filter to exclude the health statistics. Se non specificato, le statistiche di integrità includono il numero di stati ok, di avviso e di errore per tutti gli elementi figlio dell'applicazione: servizi, partizioni, repliche, applicazioni distribuite e pacchetti del servizio distribuiti.If not specified, the health statistics include the ok, warning, and error count for all application children: services, partitions, replicas, deployed applications, and deployed service packages.

APIAPI

Per ottenere l'integrità dell'applicazione, creare un oggetto FabricClient e chiamare il metodo GetApplicationHealthAsync sul relativo HealthManager.To get application health, create a FabricClient and call the GetApplicationHealthAsync method on its HealthManager.

Il codice seguente permette di ottenere l'integrità dell'applicazione per il nome dell'applicazione (URI) specificato:The following code gets the application health for the specified application name (URI):

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

Il codice seguente permette di ottenere l'integrità dell'applicazione per il nome dell'applicazione (URI) specificato, con filtri e criteri personalizzati specificati tramite ApplicationHealthQueryDescription.The following code gets the application health for the specified application name (URI), with filters and custom policies specified 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);

PowerShellPowerShell

Il cmdlet per ottenere l'integrità dell'applicazione è Get-ServiceFabricApplicationHealth.The cmdlet to get the application health is Get-ServiceFabricApplicationHealth. Connettersi prima di tutto al cluster con il cmdlet Connect-ServiceFabricCluster .First, connect to the cluster by using the Connect-ServiceFabricCluster cmdlet.

Il cmdlet seguente restituisce l'integrità dell'applicazione fabric:/WordCount :The following cmdlet returns the health of the fabric:/WordCount application:

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

Il cmdlet PowerShell seguente passa i criteri personalizzati.The following PowerShell cmdlet passes in custom policies. Filtra anche gli elementi figlio e gli eventi.It also filters children and events.

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

RESTREST

Per ottenere l'integrità di un'applicazione è possibile usare una richiesta GET o una richiesta POST che nel corpo include la descrizione di criteri di integrità.You can get application health with a GET request or a POST request that includes health policies described in the body.

Get service healthGet service health

Restituisce lo stato di un'entità di servizio.Returns the health of a service entity. Contiene gli stati di integrità della partizione.It contains the partition health states. Input:Input:

  • [Obbligatorio] Nome del servizio (URI) che identifica il servizio.[Required] The service name (URI) that identifies the service.
  • [Facoltativo] Criteri di integrità dell'applicazione usati per sostituire i criteri del manifesto dell'applicazione.[Optional] The application health policy used to override the application manifest policy.
  • [Facoltativo] Filtri per eventi e partizioni che specificano le voci di interesse che devono essere restituite nel risultato (ad esempio, solo gli errori o avvisi ed errori).[Optional] Filters for events and partitions that specify which entries are of interest and should be returned in the result (for example, errors only, or both warnings and errors). Per valutare l'integrità aggregata dell'entità, vengono usati tutti gli eventi e tutte le partizioni, indipendentemente dal filtro.All events and partitions are used to evaluate the entity aggregated health, regardless of the filter.
  • [Facoltativo] Filtrare per escludere le statistiche di integrità.[Optional] Filter to exclude health statistics. Se non specificato, le statistiche di integrità mostrano il numero di stati ok, di avviso e di errore per tutte le partizioni e le repliche del servizio.If not specified, the health statistics show the ok, warning, and error count for all partitions and replicas of the service.

APIAPI

Per ottenere l'integrità del servizio tramite l'API, creare un oggetto FabricClient e chiamare il metodo GetServiceHealthAsync sul relativo HealthManager.To get service health through the API, create a FabricClient and call the GetServiceHealthAsync method on its HealthManager.

L'esempio seguente ottiene l'integrità di un servizio con il nome di servizio (URI) specificato:The following example gets the health of a service with specified service name (URI):

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

Il codice seguente permette di ottenere l'integrità del servizio per il nome del servizio (URI) specificato, con filtri e criteri personalizzati specificati tramite ServiceHealthQueryDescription:The following code gets the service health for the specified service name (URI), specifying filters and custom policy 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);

PowerShellPowerShell

Il cmdlet per ottenere l'integrità del servizio è Get-ServiceFabricServiceHealth.The cmdlet to get the service health is Get-ServiceFabricServiceHealth. Connettersi prima di tutto al cluster con il cmdlet Connect-ServiceFabricCluster .First, connect to the cluster by using the Connect-ServiceFabricCluster cmdlet.

Il cmdlet seguente ottiene l'integrità del servizio usando i criteri di integrità predefiniti:The following cmdlet gets the service health by using default health policies:

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

RESTREST

Per ottenere l'integrità di un servizio è possibile usare una richiesta GET o una richiesta POST che nel corpo include la descrizione di criteri di integrità.You can get service health with a GET request or a POST request that includes health policies described in the body.

Get partition healthGet partition health

Restituisce lo stato di un'entità partizione.Returns the health of a partition entity. Contiene gli stati di integrità della replica.It contains the replica health states. Input:Input:

  • [Obbligatorio] ID partizione (GUID) che identifica la partizione.[Required] The partition ID (GUID) that identifies the partition.
  • [Facoltativo] Criteri di integrità dell'applicazione usati per sostituire i criteri del manifesto dell'applicazione.[Optional] The application health policy used to override the application manifest policy.
  • [Facoltativo] Filtri per eventi e repliche che specificano le voci di interesse che devono essere restituite nel risultato (ad esempio, solo gli errori o avvisi ed errori).[Optional] Filters for events and replicas that specify which entries are of interest and should be returned in the result (for example, errors only, or both warnings and errors). Per valutare l'integrità aggregata dell'entità, vengono usati tutti gli eventi e tutte le repliche, indipendentemente dal filtro.All events and replicas are used to evaluate the entity aggregated health, regardless of the filter.
  • [Facoltativo] Filtrare per escludere le statistiche di integrità.[Optional] Filter to exclude health statistics. Se non specificato, le statistiche di integrità mostrano il numero di repliche con stati ok, di avviso e di errore.If not specified, the health statistics show how many replicas are in ok, warning, and error states.

APIAPI

Per ottenere l'integrità della partizione tramite l'API, creare un oggetto FabricClient e chiamare il metodo GetPartitionHealthAsync sul relativo HealthManager.To get partition health through the API, create a FabricClient and call the GetPartitionHealthAsync method on its HealthManager. Per specificare parametri facoltativi, creare PartitionHealthQueryDescription.To specify optional parameters, create PartitionHealthQueryDescription.

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

PowerShellPowerShell

Il cmdlet per ottenere l'integrità della partizione è Get-ServiceFabricPartitionHealth.The cmdlet to get the partition health is Get-ServiceFabricPartitionHealth. Connettersi prima di tutto al cluster con il cmdlet Connect-ServiceFabricCluster .First, connect to the cluster by using the Connect-ServiceFabricCluster cmdlet.

Il cmdlet seguente ottiene l'integrità di tutte le partizioni del servizio fabric:/WordCount/WordCountService ed esclude tramite filtro gli stati di integrità delle repliche:The following cmdlet gets the health for all partitions of the fabric:/WordCount/WordCountService service and filters out replica health states:

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

RESTREST

Per ottenere l'integrità di una partizione è possibile usare una richiesta GET o una richiesta POST che nel corpo include la descrizione di criteri di integrità.You can get partition health with a GET request or a POST request that includes health policies described in the body.

Get replica healthGet replica health

Restituisce l'integrità di una replica di un servizio con stato o di un'istanza di un servizio senza stato.Returns the health of a stateful service replica or a stateless service instance. Input:Input:

  • [Obbligatorio] ID partizione (GUID) e ID replica che identifica la replica.[Required] The partition ID (GUID) and replica ID that identifies the replica.
  • [Facoltativo] Parametri dei criteri di integrità dell'applicazione usati per sostituire i criteri del manifesto dell'applicazione.[Optional] The application health policy parameters used to override the application manifest policies.
  • [Facoltativo] Filtri per gli eventi che specificano le voci di interesse che devono essere restituite nel risultato (ad esempio, solo gli errori o avvisi ed errori).[Optional] Filters for events that specify which entries are of interest and should be returned in the result (for example, errors only, or both warnings and errors). Per valutare l'integrità aggregata dell'entità, vengono usati tutti gli eventi, indipendentemente dal filtro.All events are used to evaluate the entity aggregated health, regardless of the filter.

APIAPI

Per ottenere l'integrità della replica tramite l'API, creare un oggetto FabricClient e chiamare il metodo GetReplicaHealthAsync sul relativo HealthManager.To get the replica health through the API, create a FabricClient and call the GetReplicaHealthAsync method on its HealthManager. Per specificare parametri avanzati, usare ReplicaHealthQueryDescription.To specify advanced parameters, use ReplicaHealthQueryDescription.

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

PowerShellPowerShell

Il cmdlet per ottenere l'integrità della replica è Get-ServiceFabricReplicaHealth.The cmdlet to get the replica health is Get-ServiceFabricReplicaHealth. Connettersi prima di tutto al cluster con il cmdlet Connect-ServiceFabricCluster .First, connect to the cluster by using the Connect-ServiceFabricCluster cmdlet.

Il cmdlet seguente ottiene l'integrità della replica primaria per tutte le partizioni del servizio.The following cmdlet gets the health of the primary replica for all partitions of the 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

RESTREST

Per ottenere l'integrità di una replica è possibile usare una richiesta GET o una richiesta POST che nel corpo include la descrizione di criteri di integrità.You can get replica health with a GET request or a POST request that includes health policies described in the body.

Ottieni lo stato dell'integrità delle applicazioni distribuite.Get deployed application health

Restituisce l’integrità di un’applicazione distribuita in un’entità nodo.Returns the health of an application deployed on a node entity. Contiene gli stati di integrità del pacchetto di servizi distribuito.It contains the deployed service package health states. Input:Input:

  • [Obbligatorio] Nome dell'applicazione (URI) e nome del nodo (stringa) che identificano l'applicazione distribuita[Required] The application name (URI) and node name (string) that identify the deployed application.
  • [Facoltativo] Criteri di integrità dell'applicazione usati per sostituire i criteri del manifesto dell'applicazione.[Optional] The application health policy used to override the application manifest policies.
  • [Facoltativo] Filtri per eventi e pacchetti di servizi distribuiti che specificano le voci di interesse che devono essere restituite nel risultato (ad esempio, solo gli errori o avvisi ed errori).[Optional] Filters for events and deployed service packages that specify which entries are of interest and should be returned in the result (for example, errors only, or both warnings and errors). Per valutare l'integrità aggregata dell'entità, vengono usati tutti gli eventi e i pacchetti di servizi distribuiti, indipendentemente dal filtro.All events and deployed service packages are used to evaluate the entity aggregated health, regardless of the filter.
  • [Facoltativo] Filtrare per escludere le statistiche di integrità.[Optional] Filter to exclude health statistics. Se non specificato, le statistiche di integrità mostrano il numero di pacchetti del servizio distribuiti con stati di integrità ok, di avviso e di errore.If not specified, the health statistics show the number of deployed service packages in ok, warning, and error health states.

APIAPI

Per ottenere l'integrità di un'applicazione distribuita in un nodo tramite l'API, creare un oggetto FabricClient e chiamare il metodo GetDeployedApplicationHealthAsync sul relativo HealthManager.To get the health of an application deployed on a node through the API, create a FabricClient and call the GetDeployedApplicationHealthAsync method on its HealthManager. Per specificare parametri facoltativi, usare DeployedApplicationHealthQueryDescription.To specify optional parameters, use DeployedApplicationHealthQueryDescription.

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

PowerShellPowerShell

Il cmdlet per ottenere l'integrità dell'applicazione distribuita è Get-ServiceFabricDeployedApplicationHealth.The cmdlet to get the deployed application health is Get-ServiceFabricDeployedApplicationHealth. Connettersi prima di tutto al cluster con il cmdlet Connect-ServiceFabricCluster .First, connect to the cluster by using the Connect-ServiceFabricCluster cmdlet. Per sapere dove viene distribuita un'applicazione, eseguire Get-ServiceFabricApplicationHealth e osservare gli elementi figlio dell'applicazione distribuita.To find out where an application is deployed, run Get-ServiceFabricApplicationHealth and look at the deployed application children.

Il cmdlet seguente ottiene l'integrità dell'applicazione fabric:/WordCount distribuita nel nodo _Node_2.The following cmdlet gets the health of the fabric:/WordCount application deployed on _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

RESTREST

Per ottenere l'integrità di un'applicazione distribuita è possibile usare una richiesta GET o una richiesta POST che nel corpo include la descrizione di criteri di integrità.You can get deployed application health with a GET request or a POST request that includes health policies described in the body.

Get deployed service package healthGet deployed service package health

Restituisce lo stato di un'entità di pacchetto di servizi distribuito.Returns the health of a deployed service package entity. Input:Input:

  • [Obbligatorio] Nome dell'applicazione (URI), nome del nodo (stringa) e nome del manifesto del servizio (stringa) che identificano il pacchetto di servizi distribuito.[Required] The application name (URI), node name (string), and service manifest name (string) that identify the deployed service package.
  • [Facoltativo] Criteri di integrità dell'applicazione usati per sostituire i criteri del manifesto dell'applicazione.[Optional] The application health policy used to override the application manifest policy.
  • [Facoltativo] Filtri per gli eventi che specificano le voci di interesse che devono essere restituite nel risultato (ad esempio, solo gli errori o avvisi ed errori).[Optional] Filters for events that specify which entries are of interest and should be returned in the result (for example, errors only, or both warnings and errors). Per valutare l'integrità aggregata dell'entità, vengono usati tutti gli eventi, indipendentemente dal filtro.All events are used to evaluate the entity aggregated health, regardless of the filter.

APIAPI

Per ottenere l'integrità di un pacchetto del servizio distribuito tramite l'API, creare un oggetto FabricClient e chiamare il metodo GetDeployedServicePackageHealthAsync sul relativo HealthManager.To get the health of a deployed service package through the API, create a FabricClient and call the GetDeployedServicePackageHealthAsync method on its HealthManager. Per specificare parametri facoltativi, usare DeployedServicePackageHealthQueryDescription.To specify optional parameters, use DeployedServicePackageHealthQueryDescription.

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

PowerShellPowerShell

Il cmdlet per ottenere l'integrità del pacchetto del servizio distribuito è Get-ServiceFabricDeployedServicePackageHealth.The cmdlet to get the deployed service package health is Get-ServiceFabricDeployedServicePackageHealth. Connettersi prima di tutto al cluster con il cmdlet Connect-ServiceFabricCluster .First, connect to the cluster by using the Connect-ServiceFabricCluster cmdlet. Per verificare dove viene distribuita un'applicazione, eseguire Get-ServiceFabricApplicationHealth e osservare le applicazioni distribuite.To see where an application is deployed, run Get-ServiceFabricApplicationHealth and look at the deployed applications. Per verificare quali pacchetti di servizi sono contenuti in un'applicazione, esaminare gli elementi figlio del pacchetto del servizio distribuito nell'output di Get-ServiceFabricDeployedApplicationHealth .To see which service packages are in an application, look at the deployed service package children in the Get-ServiceFabricDeployedApplicationHealth output.

Il cmdlet seguente permette di ottenere l'integrità del pacchetto del servizio WordCountServicePkg dell'applicazione fabric:/WordCount distribuita in Node2.The following cmdlet gets the health of the WordCountServicePkg service package of the fabric:/WordCount application deployed on _Node_2. L'entità include report System.Hosting per l'attivazione corretta del pacchetto del servizio e del punto di ingresso, nonché per la registrazione corretta del tipo di servizio.The entity has System.Hosting reports for successful service-package and entry-point activation, and successful service-type registration.

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

RESTREST

Per ottenere l'integrità di un pacchetto del servizio distribuito è possibile usare una richiesta GET o una richiesta POST che nel corpo include la descrizione di criteri di integrità.You can get deployed service package health with a GET request or a POST request that includes health policies described in the body.

Query sul blocco di integritàHealth chunk queries

Le query sul blocco di integrità possono restituire gli elementi figlio di un cluster a più livelli (in modo ricorsivo) per ogni filtro di input.The health chunk queries can return multi-level cluster children (recursively), per input filters. Supporta i filtri avanzati che consentono una notevole flessibilità nella scelta degli elementi figlio da restituire.It supports advanced filters that allow a lot of flexibility in choosing the children to be returned. I filtri consentono di specificare gli elementi figlio in base a un identificatore univoco o ad altri identificatori di gruppo e/o stati di integrità.The filters can specify children by the unique identifier or by other group identifiers and/or health states. Per impostazione predefinita, non sono inclusi elementi figlio, a differenza dei comandi relativi all'integrità che includono sempre gli elementi figlio di primo livello.By default, no children are included, as opposed to health commands that always include first-level children.

Le query sull'integrità restituiscono solo gli elementi figlio di primo livello dell'entità specificata per ogni filtro necessario.The health queries return only first-level children of the specified entity per required filters. Per ottenere gli elementi figlio di un elemento figlio, è necessario chiamare API di integrità aggiuntive per ogni entità di interesse.To get the children of the children, you must call additional health APIs for each entity of interest. Analogamente, per ottenere l'integrità di entità specifiche, è necessario chiamare un'API di integrità per ogni entità di interesse.Similarly, to get the health of specific entities, you must call one health API for each desired entity. I filtri avanzati per le query sui blocchi consentono di richiedere più elementi di interesse in una sola query, riducendo al minimo le dimensioni del messaggio e il numero di messaggi.The chunk query advanced filtering allows you to request multiple items of interest in one query, minimizing the message size and the number of messages.

Il vantaggio delle query sui blocchi sta nella possibilità di ottenere lo stato dell'integrità per più entità cluster, potenzialmente tutte le entità cluster a partire dalla radice richiesta, in una sola chiamata.The value of the chunk query is that you can get health state for more cluster entities (potentially all cluster entities starting at required root) in one call. È possibile esprimere query sull'integrità complesse, ad esempio:You can express complex health query such as:

  • Restituzione solo delle applicazioni con errore e inclusione di tutti i servizi con avviso o errore per queste applicazioni.Return only applications in error, and for those applications include all services in warning or error. Per i servizi restituiti, inclusione di tutte le partizioni.For returned services, include all partitions.
  • Restituzione solo dell'integrità di quattro applicazioni, specificate in base ai rispettivi nomi.Return only the health of four applications, specified by their names.
  • Restituzione solo dell'integrità delle applicazioni con un tipo di applicazione desiderato.Return only the health of applications of a desired application type.
  • Restituzione di tutte le entità distribuite su un nodo.Return all deployed entities on a node. Restituisce tutte le applicazioni, tutte le applicazioni distribuite nel nodo specificato e tutti i pacchetti di servizio distribuiti nel nodo.Returns all applications, all deployed applications on the specified node and all the deployed service packages on that node.
  • Restituzione di tutte le repliche con errore.Return all replicas in error. Vengono restituiti tutti i servizi, le applicazioni e le partizioni e le sole repliche con errore.Returns all applications, services, partitions, and only replicas in error.
  • Restituzione di tutte le applicazioni.Return all applications. Per un servizio specificato, inclusione di tutte le partizioni.For a specified service, include all partitions.

La query sul blocco di integrità è attualmente esposta solo per l'entità del cluster.Currently, the health chunk query is exposed only for the cluster entity. Restituisce un blocco di integrità del cluster che contiene:It returns a cluster health chunk, which contains:

  • Lo stato di integrità aggregato del cluster.The cluster aggregated health state.
  • L'elenco del blocco dello stato di integrità dei nodi che rispettano i filtri di input.The health state chunk list of nodes that respect input filters.
  • L'elenco del blocco dello stato di integrità delle applicazioni che rispettano i filtri di input.The health state chunk list of applications that respect input filters. Ogni blocco dello stato di integrità dell'applicazione contiene un elenco di blocchi con tutti i servizi che rispettano i filtri di input e un elenco di blocchi con tutte le applicazioni distribuite che rispettano i filtri.Each application health state chunk contains a chunk list with all services that respect input filters and a chunk list with all deployed applications that respect the filters. Lo stesso vale per gli elementi figlio dei servizi e delle applicazioni distribuite.Same for the children of services and deployed applications. In questo modo, tutte le entità nel cluster possono essere potenzialmente restituite se richiesto, in modo gerarchico.This way, all entities in the cluster can be potentially returned if requested, in a hierarchical fashion.

Query sul blocco di integrità del clusterCluster health chunk query

Restituisce l'integrità dell'entità cluster e contiene blocchi di stato dell'integrità gerarchici degli elementi figlio necessari.Returns the health of the cluster entity and contains the hierarchical health state chunks of required children. Input:Input:

  • [Facoltativo] Criteri di integrità del cluster usati per valutare i nodi e gli eventi del cluster.[Optional] The cluster health policy used to evaluate the nodes and the cluster events.
  • [Facoltativo] Mappa dei criteri di integrità dell'applicazione con criteri di integrità usati per sostituire i criteri del manifesto dell'applicazione.[Optional] The application health policy map, with the health policies used to override the application manifest policies.
  • [Facoltativo] Filtri per i nodi e per le applicazioni che specificano le voci di interesse e da restituire nel risultato.[Optional] Filters for nodes and applications that specify which entries are of interest and should be returned in the result. I filtri sono specifici per un'entità/un gruppo di entità o sono applicabili a tutte le entità a tale livello.The filters are specific to an entity/group of entities or are applicable to all entities at that level. L'elenco di filtri può contenere un filtro generale e/o filtri per identificatori specifici per entità dettagliate restituite dalla query.The list of filters can contain one general filter and/or filters for specific identifiers to fine-grain entities returned by the query. Se l'elenco è vuoto, gli elementi figlio non vengono restituiti per impostazione predefinita.If empty, the children are not returned by default. Per altre informazioni sui filtri, vedere NodeHealthStateFilter e ApplicationHealthStateFilter.Read more about the filters at NodeHealthStateFilter and ApplicationHealthStateFilter. I filtri dell'applicazione possono specificare in modo ricorsivo filtri avanzati per gli elementi figlio.The application filters can recursively specify advanced filters for children.

I risultati del blocco includono gli elementi figlio che rispettano i filtri.The chunk result includes the children that respect the filters.

Analogamente, la query sul blocco non restituisce valutazioni non integre o eventi dell'entità.Currently, the chunk query does not return unhealthy evaluations or entity events. Tali informazioni aggiuntive possono essere ottenute usando la query sull'integrità del cluster esistente.That extra information can be obtained using the existing cluster health query.

APIAPI

Per ottenere il blocco di integrità del cluster, creare un oggetto FabricClient e chiamare il metodo GetClusterHealthChunkAsync sul relativo HealthManager.To get cluster health chunk, create a FabricClient and call the GetClusterHealthChunkAsync method on its HealthManager. È possibile passare ClusterHealthQueryDescription per descrivere i criteri di integrità e i filtri avanzati.You can pass in ClusterHealthQueryDescription to describe health policies and advanced filters.

Il codice seguente permette di ottenere il blocco di integrità del cluster con filtri avanzati.The following code gets cluster health chunk with advanced 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);

PowerShellPowerShell

Il cmdlet per ottenere l'integrità del cluster è Get-ServiceFabricClusterChunkHealth.The cmdlet to get the cluster health is Get-ServiceFabricClusterChunkHealth. Connettersi prima di tutto al cluster con il cmdlet Connect-ServiceFabricCluster .First, connect to the cluster by using the Connect-ServiceFabricCluster cmdlet.

Il codice seguente permette di ottenere solo i nodi in stato di errore, eccetto un nodo specifico che deve essere restituito sempre.The following code gets nodes only if they are in Error except for a specific node, which should always be returned.

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

Il cmdlet seguente permette di ottenere il blocco di cluster con filtri dell'applicazione.The following cmdlet gets cluster chunk with application filters.

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

Il cmdlet seguente restituisce tutte le entità distribuite su un nodo.The following cmdlet returns all deployed entities on a node.

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

RESTREST

Per ottenere il blocco di integrità di un cluster è possibile usare una richiesta GET o una richiesta POST che nel corpo include la descrizione di criteri di integrità.You can get cluster health chunk with a GET request or a POST request that includes health policies and advanced filters described in the body.

Query generaliGeneral queries

Le query generali restituiscono l'elenco delle entità di Service Fabric di un tipo specificato.General queries return a list of Service Fabric entities of a specified type. Le query vengono esposte tramite l'API con i metodi in FabricClient.QueryManager, tramite i cmdlet di PowerShell e REST.They are exposed through the API (via the methods on FabricClient.QueryManager), PowerShell cmdlets, and REST. Queste query aggregano sottoquery da più componenti.These queries aggregate subqueries from multiple components. Uno di questi è l' archivio integrità, che popola lo stato di integrità aggregato per ogni risultato della query.One of them is the health store, which populates the aggregated health state for each query result.

Nota

Le query generali restituiscono lo stato di integrità aggregato dell'entità e non contengono i dati di integrità complessi.General queries return the aggregated health state of the entity and do not contain rich health data. Se un'entità non è integra, è possibile procedere con query di integrità per ottenere tutte le informazioni di integrità, come gli eventi, gli stati di integrità degli elementi figlio e le valutazioni non integre.If an entity is not healthy, you can follow up with health queries to get all its health information, including events, child health states, and unhealthy evaluations.

Se le query generali restituiscono uno stato di integrità sconosciuto per un'entità, è possibile che l'archivio integrità non abbia dati completi sull'entità.If general queries return an unknown health state for an entity, it's possible that the health store doesn't have complete data about the entity. È anche possibile che una sottoquery nell'archivio integrità non sia riuscita, ad esempio, si è verificato un errore di comunicazione o l'archivio integrità è stato limitato.It's also possible that a subquery to the health store wasn't successful (for example, there was a communication error, or the health store was throttled). Procedere con una query di integrità per l'entità.Follow up with a health query for the entity. Se la sottoquery ha rilevato errori temporanei, ad esempio problemi di rete, questa query di completamento può riuscire.If the subquery encountered transient errors, such as network issues, this follow-up query may succeed. Può anche fornire altri dettagli dall'archivio integrità sui motivi che impediscono l'esposizione dell'entità.It may also give you more details from the health store about why the entity is not exposed.

Di seguito sono elencate le query che contengono HealthState per le entità:The queries that contain HealthState for entities are:

Nota

Alcune query restituiscono risultati di paging.Some of the queries return paged results. Queste query restituiscono un elenco derivato da PagedList.The return of these queries is a list derived from PagedList. Se questi risultati non corrispondono a un messaggio, viene restituita solo una pagina e un ContinuationToken che tiene traccia del punto in cui l'enumerazione è stata arrestata.If the results do not fit a message, only a page is returned and a ContinuationToken that tracks where enumeration stopped. Continuare a chiamare la stessa query e passare il token di continuazione dalla query precedente per ottenere i risultati successivi.Continue to call the same query and pass in the continuation token from the previous query to get next results.

EsempiExamples

Il codice seguente permette di ottenere le applicazioni non integre nel cluster:The following code gets the unhealthy applications in the cluster:

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

Il cmdlet seguente ottiene i dettagli dell'applicazione per l'applicazione fabric:/WordCount.The following cmdlet gets the application details for the fabric:/WordCount application. Lo stato di integrità è di tipo avviso.Notice that health state is at warning.

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

Il cmdlet seguente ottiene i servizi con stato di integrità di errore:The following cmdlet gets the services with a health state of error:

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

Aggiornamenti del cluster e dell'applicazioneCluster and application upgrades

Durante un aggiornamento monitorato del cluster e dell'applicazione, Service Fabric controlla l'integrità per garantire che lo stato sia integro e che rimanga tale.During a monitored upgrade of the cluster and application, Service Fabric checks health to ensure that everything remains healthy. Se un'entità non è integra ed è stata valutata con i criteri di integrità configurati, l'aggiornamento applica criteri specifici dell'aggiornamento per determinare l'azione successiva.If an entity is unhealthy as evaluated by using configured health policies, the upgrade applies upgrade-specific policies to determine the next action. L'aggiornamento può essere sospeso per consentire l'interazione dell'utente, ad esempio per correggere le condizioni di errore o modificare i criteri, oppure può eseguire automaticamente il ripristino dello stato precedente di una versione funzionante.The upgrade may be paused to allow user interaction (such as fixing error conditions or changing policies), or it may automatically roll back to the previous good version.

Durante un aggiornamento del cluster è possibile ottenerne lo stato di aggiornamento.During a cluster upgrade, you can get the cluster upgrade status. Quest'ultimo include valutazioni di non integrità, che puntano agli elementi non integri nel cluster.The upgrade status includes unhealthy evaluations, which point to what is unhealthy in the cluster. Se viene eseguito il rollback dell'aggiornamento a causa di problemi di integrità, lo stato di aggiornamento memorizza le cause di non integrità più recenti.If the upgrade is rolled back due to health issues, the upgrade status remembers the last unhealthy reasons. Queste informazioni consentono agli amministratori di analizzare la causa dell'errore dopo il rollback o l'arresto dell'aggiornamento.This information can help administrators investigate what went wrong after the upgrade rolled back or stopped.

Analogamente, durante l'aggiornamento di un' applicazione , lo stato di aggiornamento dell'applicazione stessa include le eventuali valutazioni di non integrità.Similarly, during an application upgrade, any unhealthy evaluations are contained in the application upgrade status.

Di seguito viene illustrato lo stato di aggiornamento dell’applicazione per un’applicazione fabric:/WordCount modificata.The following shows the application upgrade status for a modified fabric:/WordCount application. Un watchdog ha segnalato un errore in una delle repliche.A watchdog reported an error on one of its replicas. Viene eseguito il rollback dell’aggiornamento poiché le verifiche dell’integrità non sono rispettate.The upgrade is rolling back because the health checks are not respected.

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

Per altre informazioni, vedere Aggiornamento di un'applicazione di Service Fabric.Read more about the Service Fabric application upgrade.

Usare le valutazioni dell'integrità per risolvere i problemiUse health evaluations to troubleshoot

Ogni volta che si verifica un problema in cluster o in un'applicazione, osservare l'integrità del cluster o dell'applicazione per individuare il problema riscontrato.Whenever there is an issue with the cluster or an application, look at the cluster or application health to pinpoint what is wrong. Le valutazioni di non integrità includono dettagli sulle cause che hanno attivato lo stato di non integrità corrente.The unhealthy evaluations provide details about what triggered the current unhealthy state. È possibile eseguire il drill-down delle entità figlio non integre per identificare la causa radice.If you need to, you can drill down into unhealthy child entities to identify the root cause.

Si consideri, ad esempio, un'applicazione non integra a causa di un errore segnalato in una delle relative repliche.For example, consider an application unhealthy because there is an error report on one of its replicas. Il cmdlet di Powershell seguente mostra le valutazioni di non integrità:The following Powershell cmdlet shows the unhealthy evaluations:

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

È possibile esaminare la replica per ottenere altre informazioni:You can look at the replica to get more information:

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

Nota

Le valutazioni non integre mostrano il primo motivo per cui l'entità restituisce lo stato di integrità corrente.The unhealthy evaluations show the first reason the entity is evaluated to current health state. Lo stato potrebbe essere attivato da vari altri eventi, che però non devono riflettersi nelle valutazioni.There may be multiple other events that trigger this state, but they are not be reflected in the evaluations. Per ottenere altre informazioni, è necessario eseguire il drill-down nelle entità di integrità per trovare tutti i report non integri nel cluster.To get more information, drill down into the health entities to figure out all the unhealthy reports in the cluster.

Passaggi successiviNext steps

Usare i report sull'integrità del sistema per la risoluzione dei problemiUse system health reports to troubleshoot

Aggiungere report sull'integrità di Service Fabric personalizzatiAdd custom Service Fabric health reports

Creare report e verificare l'integrità dei serviziHow to report and check service health

Monitorare e diagnosticare servizi in localeMonitor and diagnose services locally

Aggiornamento di un'applicazione di infrastruttura di serviziService Fabric application upgrade