Exibir Service Fabric relatórios de integridadeView Service Fabric health reports

O Azure Service Fabric introduz um modelo de integridade com entidades de integridade nas quais os componentes do sistema e os Watchdogs podem relatar condições locais que estão monitorando.Azure Service Fabric introduces a health model with health entities on which system components and watchdogs can report local conditions that they are monitoring. O repositório de integridade agrega todos os dados de integridade para determinar se as entidades estão íntegras.The health store aggregates all health data to determine whether entities are healthy.

O cluster é preenchido automaticamente com relatórios de integridade enviados pelos componentes do sistema.The cluster is automatically populated with health reports sent by the system components. Leia mais em usar relatórios de integridade do sistema para solucionar problemas.Read more at Use system health reports to troubleshoot.

Service Fabric fornece várias maneiras de obter a integridade agregada das entidades:Service Fabric provides multiple ways to get the aggregated health of the entities:

  • Service Fabric Explorer ou outras ferramentas de visualizaçãoService Fabric Explorer or other visualization tools
  • Consultas de integridade (por meio do PowerShell, API ou REST)Health queries (through PowerShell, API, or REST)
  • Consultas gerais que retornam uma lista de entidades que têm integridade como uma das propriedades (por meio do PowerShell, da API ou do REST)General queries that return a list of entities that have health as one of the properties (through PowerShell, API, or REST)

Para demonstrar essas opções, vamos usar um cluster local com cinco nós e o aplicativo Fabric:/WordCount.To demonstrate these options, let's use a local cluster with five nodes and the fabric:/WordCount application. O aplicativo Fabric:/WordCount contém dois serviços padrão, um serviço com estado do tipo WordCountServiceTypee um serviço sem estado do tipo WordCountWebServiceType.The fabric:/WordCount application contains two default services, a stateful service of type WordCountServiceType, and a stateless service of type WordCountWebServiceType. Alterei o ApplicationManifest.xml para exigir sete réplicas de destino para o serviço com estado e uma partição.I changed the ApplicationManifest.xml to require seven target replicas for the stateful service and one partition. Como há apenas cinco nós no cluster, os componentes do sistema relatam um aviso na partição do serviço, pois ele está abaixo da contagem de destino.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>

Integridade no Service Fabric ExplorerHealth in Service Fabric Explorer

Service Fabric Explorer fornece uma exibição visual do cluster.Service Fabric Explorer provides a visual view of the cluster. Na imagem abaixo, você pode ver que:In the image below, you can see that:

  • O aplicativo Fabric:/WordCount é vermelho (em caso de erro) porque ele tem um evento de erro relatado por mywatchdog para a disponibilidadeda propriedade.The application fabric:/WordCount is red (in error) because it has an error event reported by MyWatchdog for the property Availability.
  • Um de seus serviços, Fabric:/WordCount/WordCountService é amarelo (em aviso).One of its services, fabric:/WordCount/WordCountService is yellow (in warning). O serviço está configurado com sete réplicas e o cluster tem cinco nós, portanto, duas réplicas não podem ser colocadas.The service is configured with seven replicas and the cluster has five nodes, so two replicas can't be placed. Embora não seja mostrado aqui, a partição de serviço é amarela devido a um relatório do sistema de System.FM dizendo que 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. A partição amarela dispara o serviço amarelo.The yellow partition triggers the yellow service.
  • O cluster é vermelho devido ao aplicativo vermelho.The cluster is red because of the red application.

A avaliação usa políticas padrão do manifesto do cluster e do manifesto do aplicativo.The evaluation uses default policies from the cluster manifest and application manifest. Eles são políticas estritas e não toleram nenhuma falha.They are strict policies and do not tolerate any failure.

Exibição do cluster com Service Fabric Explorer:View of the cluster with Service Fabric Explorer:

Exibição do cluster com Service Fabric Explorer.

Nota

Leia mais sobre Service Fabric Explorer.Read more about Service Fabric Explorer.

Consultas de integridadeHealth queries

Service Fabric expõe consultas de integridade para cada um dos tipos de entidadecom suporte.Service Fabric exposes health queries for each of the supported entity types. Eles podem ser acessados por meio da API, usando métodos em FabricClient. healthmanager, cmdlets do PowerShell e REST.They can be accessed through the API, using methods on FabricClient.HealthManager, PowerShell cmdlets, and REST. Essas consultas retornam informações de integridade completas sobre a entidade: o estado de integridade agregada, eventos de integridade de entidade, Estados de integridade filho (quando aplicável), avaliações não íntegras (quando a entidade não está íntegra) e estatísticas de integridade de filhos (quando aplicável).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

Uma entidade de integridade é retornada quando é totalmente preenchida no repositório de integridade.A health entity is returned when it is fully populated in the health store. A entidade deve estar ativa (não excluída) e ter um relatório do sistema.The entity must be active (not deleted) and have a system report. Suas entidades pai na cadeia de hierarquia também devem ter relatórios do sistema.Its parent entities on the hierarchy chain must also have system reports. Se qualquer uma dessas condições não for satisfeita, as consultas de integridade retornarão uma fabricexception com FabricErrorCode FabricHealthEntityNotFound que mostra por que a entidade não é retornada.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.

As consultas de integridade devem passar no identificador de entidade, que depende do tipo de entidade.The health queries must pass in the entity identifier, which depends on the entity type. As consultas aceitam parâmetros de política de integridade opcionais.The queries accept optional health policy parameters. Se nenhuma política de integridade for especificada, as políticas de integridade do manifesto do cluster ou do aplicativo serão usadas para avaliação.If no health policies are specified, the health policies from the cluster or application manifest are used for evaluation. Se os manifestos não contiverem uma definição para políticas de integridade, as políticas de integridade padrão serão usadas para avaliação.If the manifests don't contain a definition for health policies, the default health policies are used for evaluation. As políticas de integridade padrão não toleram nenhuma falha.The default health policies do not tolerate any failures. As consultas também aceitam filtros para retornar apenas filhos parciais ou eventos, aqueles que respeitam os filtros especificados.The queries also accept filters for returning only partial children or events--the ones that respect the specified filters. Outro filtro permite a exclusão de estatísticas filhas.Another filter allows excluding the children statistics.

Nota

Os filtros de saída são aplicados no lado do servidor, portanto, o tamanho da resposta da mensagem é reduzido.The output filters are applied on the server side, so the message reply size is reduced. Recomendamos que você use os filtros de saída para limitar os dados retornados, em vez de aplicar filtros no lado do cliente.We recommended that you use the output filters to limit the data returned, rather than apply filters on the client side.

A integridade de uma entidade contém:An entity's health contains:

  • O estado de integridade agregado da entidade.The aggregated health state of the entity. Calculado pelo repositório de integridade com base nos relatórios de integridade de entidade, Estados de integridade filho (quando aplicável) e políticas de integridade.Computed by the health store based on entity health reports, child health states (when applicable), and health policies. Leia mais sobre a avaliação de integridade da entidade.Read more about entity health evaluation.
  • Os eventos de integridade na entidade.The health events on the entity.
  • A coleção de Estados de integridade de todos os filhos para as entidades que podem ter filhos.The collection of health states of all children for the entities that can have children. Os Estados de integridade contêm identificadores de entidade e o estado de integridade agregado.The health states contain entity identifiers and the aggregated health state. Para obter a integridade completa de um filho, chame a integridade da consulta para o tipo de entidade filho e passe o identificador filho.To get complete health for a child, call the query health for the child entity type and pass in the child identifier.
  • As avaliações não íntegras que apontam para o relatório que disparou o estado da entidade, se a entidade não estiver íntegra.The unhealthy evaluations that point to the report that triggered the state of the entity, if the entity is not healthy. As avaliações são recursivas, contendo as avaliações de integridade dos filhos que acionaram o estado de integridade atual.The evaluations are recursive, containing the children health evaluations that triggered current health state. Por exemplo, um Watchdog relatou um erro em relação a uma réplica.For example, a watchdog reported an error against a replica. A integridade do aplicativo mostra uma avaliação não íntegra devido a um serviço não íntegro; o serviço não está íntegro devido a uma partição com erro; a partição não está íntegra devido a uma réplica em erro; a réplica não está íntegra devido ao relatório de integridade de erro do 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.
  • As estatísticas de integridade para todos os tipos filhos das entidades que têm filhos.The health statistics for all children types of the entities that have children. Por exemplo, a integridade do cluster mostra o número total de aplicativos, serviços, partições, réplicas e entidades implantadas no cluster.For example, cluster health shows the total number of applications, services, partitions, replicas, and deployed entities in the cluster. A integridade do serviço mostra o número total de partições e réplicas no serviço especificado.Service health shows the total number of partitions and replicas under the specified service.

Obter integridade do clusterGet cluster health

Retorna a integridade da entidade de cluster e contém os Estados de integridade de aplicativos e nós (filhos do cluster).Returns the health of the cluster entity and contains the health states of applications and nodes (children of the cluster). Entrada:Input:

  • Adicional A política de integridade do cluster usada para avaliar os nós e os eventos de cluster.[Optional] The cluster health policy used to evaluate the nodes and the cluster events.
  • Adicional O mapa da política de integridade do aplicativo, com as políticas de integridade usadas para substituir as políticas de manifesto do aplicativo.[Optional] The application health policy map, with the health policies used to override the application manifest policies.
  • Adicional Filtros para eventos, nós e aplicativos que especificam quais entradas são interessantes e devem ser retornados no resultado (por exemplo, somente erros ou avisos e erros).[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). Todos os eventos, nós e aplicativos são usados para avaliar a integridade agregada da entidade, independentemente do filtro.All events, nodes, and applications are used to evaluate the entity aggregated health, regardless of the filter.
  • Adicional Filtre para excluir as estatísticas de integridade.[Optional] Filter to exclude health statistics.
  • Adicional Filtre para incluir malha:/estatísticas de integridade do sistema nas estatísticas de integridade.[Optional] Filter to include fabric:/System health statistics in the health statistics. Aplicável somente quando as estatísticas de integridade não são excluídas.Only applicable when the health statistics are not excluded. Por padrão, as estatísticas de integridade incluem apenas estatísticas para aplicativos de usuário e não para o aplicativo do sistema.By default, the health statistics include only statistics for user applications and not the System application.

APIAPI

Para obter a integridade do cluster, crie um FabricClient e chame o método GetClusterHealthAsync em seu healthmanager.To get cluster health, create a FabricClient and call the GetClusterHealthAsync method on its HealthManager.

A chamada a seguir obtém a integridade do cluster:The following call gets the cluster health:

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

O código a seguir obtém a integridade do cluster usando uma política de integridade de cluster personalizada e filtros para nós e aplicativos.The following code gets the cluster health by using a custom cluster health policy and filters for nodes and applications. Ele especifica que as estatísticas de integridade incluem a malha:/estatísticas do sistema.It specifies that the health statistics include the fabric:/System statistics. Ele cria ClusterHealthQueryDescription, que contém as informações de entrada.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

O cmdlet para obter a integridade do cluster é Get-ServiceFabricClusterHealth.The cmdlet to get the cluster health is Get-ServiceFabricClusterHealth. Primeiro, conecte-se ao cluster usando o cmdlet Connect-ServiceFabricCluster .First, connect to the cluster by using the Connect-ServiceFabricCluster cmdlet.

O estado do cluster é de cinco nós, o aplicativo do sistema e o Fabric:/WordCount configurados conforme descrito.The state of the cluster is five nodes, the system application, and fabric:/WordCount configured as described.

O cmdlet a seguir obtém a integridade do cluster usando políticas de integridade padrão.The following cmdlet gets cluster health by using default health policies. O estado de integridade agregado é aviso, pois o aplicativo Fabric:/WordCount está em aviso.The aggregated health state is warning, because the fabric:/WordCount application is in warning. Observe como as avaliações não íntegras fornecem detalhes sobre as condições que dispararam a integridade agregada.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

O cmdlet do PowerShell a seguir obtém a integridade do cluster usando uma política de aplicativo personalizada.The following PowerShell cmdlet gets the health of the cluster by using a custom application policy. Ele filtra os resultados para obter somente os aplicativos e nós com erro ou aviso.It filters results to get only applications and nodes in error or warning. Como resultado, nenhum nó é retornado, pois todos estão íntegros.As a result, no nodes are returned, as they are all healthy. Somente o aplicativo Fabric:/WordCount respeita o filtro de aplicativos.Only the fabric:/WordCount application respects the applications filter. Como a política personalizada especifica a consideração de avisos como erros para o aplicativo Fabric:/WordCount, o aplicativo é avaliado como em erro e, portanto, é o 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

Você pode obter a integridade do cluster com uma solicitação Get ou uma solicitação post que inclui as políticas de integridade descritas no corpo.You can get cluster health with a GET request or a POST request that includes health policies described in the body.

Obter integridade do nóGet node health

Retorna a integridade de uma entidade de nó e contém os eventos de integridade relatados no nó.Returns the health of a node entity and contains the health events reported on the node. Entrada:Input:

  • Necessária O nome do nó que identifica o nó.[Required] The node name that identifies the node.
  • Adicional As configurações de política de integridade do cluster usadas para avaliar a integridade.[Optional] The cluster health policy settings used to evaluate health.
  • Adicional Filtros de eventos que especificam quais entradas são interessantes e devem ser retornados no resultado (por exemplo, somente erros ou avisos e erros).[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). Todos os eventos são usados para avaliar a integridade agregada da entidade, independentemente do filtro.All events are used to evaluate the entity aggregated health, regardless of the filter.

APIAPI

Para obter a integridade do nó por meio da API, crie um FabricClient e chame o método GetNodeHealthAsync em seu healthmanager.To get node health through the API, create a FabricClient and call the GetNodeHealthAsync method on its HealthManager.

O código a seguir obtém a integridade do nó para o nome do nó especificado:The following code gets the node health for the specified node name:

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

O código a seguir obtém a integridade do nó para o nome do nó especificado e passa o filtro de eventos e a política personalizada por meio de 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

O cmdlet para obter a integridade do nó é Get-ServiceFabricNodeHealth.The cmdlet to get the node health is Get-ServiceFabricNodeHealth. Primeiro, conecte-se ao cluster usando o cmdlet Connect-ServiceFabricCluster .First, connect to the cluster by using the Connect-ServiceFabricCluster cmdlet. O cmdlet a seguir obtém a integridade do nó usando políticas de integridade padrão: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

O cmdlet a seguir obtém a integridade de todos os nós no 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

Você pode obter integridade do nó com uma solicitação Get ou uma solicitação post que inclua as políticas de integridade descritas no corpo.You can get node health with a GET request or a POST request that includes health policies described in the body.

Obter integridade do aplicativoGet application health

Retorna a integridade de uma entidade de aplicativo.Returns the health of an application entity. Ele contém os Estados de integridade do aplicativo e dos filhos de serviço implantados.It contains the health states of the deployed application and service children. Entrada:Input:

  • Necessária O nome do aplicativo (URI) que identifica o aplicativo.[Required] The application name (URI) that identifies the application.
  • Adicional A política de integridade do aplicativo usada para substituir as políticas de manifesto do aplicativo.[Optional] The application health policy used to override the application manifest policies.
  • Adicional Filtros para eventos, serviços e aplicativos implantados que especificam quais entradas são interessantes e devem ser retornados no resultado (por exemplo, somente erros ou avisos e erros).[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). Todos os eventos, serviços e aplicativos implantados são usados para avaliar a integridade agregada da entidade, independentemente do filtro.All events, services, and deployed applications are used to evaluate the entity aggregated health, regardless of the filter.
  • Adicional Filtre para excluir as estatísticas de integridade.[Optional] Filter to exclude the health statistics. Se não for especificado, as estatísticas de integridade incluirão a contagem Ok, de aviso e de erro para todos os filhos do aplicativo: serviços, partições, réplicas, aplicativos implantados e pacotes de serviço implantados.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

Para obter a integridade do aplicativo, crie um FabricClient e chame o método GetApplicationHealthAsync em seu healthmanager.To get application health, create a FabricClient and call the GetApplicationHealthAsync method on its HealthManager.

O código a seguir obtém a integridade do aplicativo para o nome do aplicativo especificado (URI):The following code gets the application health for the specified application name (URI):

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

O código a seguir obtém a integridade do aplicativo para o nome do aplicativo (URI) especificado, com filtros e políticas personalizadas especificadas por meio de 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

O cmdlet para obter a integridade do aplicativo é Get-ServiceFabricApplicationHealth.The cmdlet to get the application health is Get-ServiceFabricApplicationHealth. Primeiro, conecte-se ao cluster usando o cmdlet Connect-ServiceFabricCluster .First, connect to the cluster by using the Connect-ServiceFabricCluster cmdlet.

O cmdlet a seguir retorna a integridade do aplicativo 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

O cmdlet do PowerShell a seguir passa em políticas personalizadas.The following PowerShell cmdlet passes in custom policies. Ele também filtra os filhos e eventos.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

Você pode obter a integridade do aplicativo com uma solicitação Get ou um post que inclua as políticas de integridade descritas no corpo.You can get application health with a GET request or a POST request that includes health policies described in the body.

Obter integridade do serviçoGet service health

Retorna a integridade de uma entidade de serviço.Returns the health of a service entity. Ele contém os Estados de integridade da partição.It contains the partition health states. Entrada:Input:

  • Necessária O nome do serviço (URI) que identifica o serviço.[Required] The service name (URI) that identifies the service.
  • Adicional A política de integridade do aplicativo usada para substituir a política de manifesto do aplicativo.[Optional] The application health policy used to override the application manifest policy.
  • Adicional Filtros para eventos e partições que especificam quais entradas são interessantes e devem ser retornados no resultado (por exemplo, somente erros ou avisos e erros).[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). Todos os eventos e partições são usados para avaliar a integridade agregada da entidade, independentemente do filtro.All events and partitions are used to evaluate the entity aggregated health, regardless of the filter.
  • Adicional Filtre para excluir as estatísticas de integridade.[Optional] Filter to exclude health statistics. Se não for especificado, as estatísticas de integridade mostrarão a contagem Ok, de aviso e de erro para todas as partições e réplicas do serviço.If not specified, the health statistics show the ok, warning, and error count for all partitions and replicas of the service.

APIAPI

Para obter a integridade do serviço por meio da API, crie um FabricClient e chame o método GetServiceHealthAsync em seu healthmanager.To get service health through the API, create a FabricClient and call the GetServiceHealthAsync method on its HealthManager.

O exemplo a seguir obtém a integridade de um serviço com o nome do serviço especificado (URI):The following example gets the health of a service with specified service name (URI):

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

O código a seguir obtém a integridade do serviço para o nome do serviço especificado (URI), especificando filtros e política personalizada por meio de 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

O cmdlet para obter a integridade do serviço é Get-ServiceFabricServiceHealth.The cmdlet to get the service health is Get-ServiceFabricServiceHealth. Primeiro, conecte-se ao cluster usando o cmdlet Connect-ServiceFabricCluster .First, connect to the cluster by using the Connect-ServiceFabricCluster cmdlet.

O cmdlet a seguir obtém a integridade do serviço usando políticas de integridade padrão: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

Você pode obter a integridade do serviço com uma solicitação Get ou um post que inclua as políticas de integridade descritas no corpo.You can get service health with a GET request or a POST request that includes health policies described in the body.

Obter integridade da partiçãoGet partition health

Retorna a integridade de uma entidade de partição.Returns the health of a partition entity. Ele contém os Estados de integridade da réplica.It contains the replica health states. Entrada:Input:

  • Necessária A ID da partição (GUID) que identifica a partição.[Required] The partition ID (GUID) that identifies the partition.
  • Adicional A política de integridade do aplicativo usada para substituir a política de manifesto do aplicativo.[Optional] The application health policy used to override the application manifest policy.
  • Adicional Filtros para eventos e réplicas que especificam quais entradas são interessantes e devem ser retornados no resultado (por exemplo, somente erros ou avisos e erros).[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). Todos os eventos e réplicas são usados para avaliar a integridade agregada da entidade, independentemente do filtro.All events and replicas are used to evaluate the entity aggregated health, regardless of the filter.
  • Adicional Filtre para excluir as estatísticas de integridade.[Optional] Filter to exclude health statistics. Se não for especificado, as estatísticas de integridade mostrarão quantas réplicas estão em OK, aviso e Estados de erro.If not specified, the health statistics show how many replicas are in ok, warning, and error states.

APIAPI

Para obter a integridade da partição por meio da API, crie um FabricClient e chame o método GetPartitionHealthAsync em seu healthmanager.To get partition health through the API, create a FabricClient and call the GetPartitionHealthAsync method on its HealthManager. Para especificar parâmetros opcionais, crie PartitionHealthQueryDescription.To specify optional parameters, create PartitionHealthQueryDescription.

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

PowerShellPowerShell

O cmdlet para obter a integridade da partição é Get-ServiceFabricPartitionHealth.The cmdlet to get the partition health is Get-ServiceFabricPartitionHealth. Primeiro, conecte-se ao cluster usando o cmdlet Connect-ServiceFabricCluster .First, connect to the cluster by using the Connect-ServiceFabricCluster cmdlet.

O cmdlet a seguir obtém a integridade de todas as partições do serviço Fabric:/WordCount/WordCountService e filtra os Estados de integridade da réplica: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

Você pode obter a integridade da partição com uma solicitação Get ou um post que inclua as políticas de integridade descritas no corpo.You can get partition health with a GET request or a POST request that includes health policies described in the body.

Obter integridade da réplicaGet replica health

Retorna a integridade de uma réplica de serviço com estado ou de uma instância de serviço sem estado.Returns the health of a stateful service replica or a stateless service instance. Entrada:Input:

  • Necessária A ID da partição (GUID) e a ID da réplica que identifica a réplica.[Required] The partition ID (GUID) and replica ID that identifies the replica.
  • Adicional Os parâmetros da política de integridade do aplicativo usados para substituir as políticas de manifesto do aplicativo.[Optional] The application health policy parameters used to override the application manifest policies.
  • Adicional Filtros de eventos que especificam quais entradas são interessantes e devem ser retornados no resultado (por exemplo, somente erros ou avisos e erros).[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). Todos os eventos são usados para avaliar a integridade agregada da entidade, independentemente do filtro.All events are used to evaluate the entity aggregated health, regardless of the filter.

APIAPI

Para obter a integridade da réplica por meio da API, crie um FabricClient e chame o método GetReplicaHealthAsync em seu healthmanager.To get the replica health through the API, create a FabricClient and call the GetReplicaHealthAsync method on its HealthManager. Para especificar parâmetros avançados, use ReplicaHealthQueryDescription.To specify advanced parameters, use ReplicaHealthQueryDescription.

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

PowerShellPowerShell

O cmdlet para obter a integridade da réplica é Get-ServiceFabricReplicaHealth.The cmdlet to get the replica health is Get-ServiceFabricReplicaHealth. Primeiro, conecte-se ao cluster usando o cmdlet Connect-ServiceFabricCluster .First, connect to the cluster by using the Connect-ServiceFabricCluster cmdlet.

O cmdlet a seguir obtém a integridade da réplica primária para todas as partições do serviço: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

Você pode obter a integridade da réplica com uma solicitação Get ou um post que inclua as políticas de integridade descritas no corpo.You can get replica health with a GET request or a POST request that includes health policies described in the body.

Obter integridade do aplicativo implantadoGet deployed application health

Retorna a integridade de um aplicativo implantado em uma entidade de nó.Returns the health of an application deployed on a node entity. Ele contém os Estados de integridade do pacote de serviço implantado.It contains the deployed service package health states. Entrada:Input:

  • Necessária O nome do aplicativo (URI) e o nome do nó (cadeia de caracteres) que identificam o aplicativo implantado.[Required] The application name (URI) and node name (string) that identify the deployed application.
  • Adicional A política de integridade do aplicativo usada para substituir as políticas de manifesto do aplicativo.[Optional] The application health policy used to override the application manifest policies.
  • Adicional Filtros para eventos e pacotes de serviço implantados que especificam quais entradas são interessantes e devem ser retornados no resultado (por exemplo, somente erros ou avisos e erros).[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). Todos os eventos e pacotes de serviço implantados são usados para avaliar a integridade agregada da entidade, independentemente do filtro.All events and deployed service packages are used to evaluate the entity aggregated health, regardless of the filter.
  • Adicional Filtre para excluir as estatísticas de integridade.[Optional] Filter to exclude health statistics. Se não for especificado, as estatísticas de integridade mostrarão o número de pacotes de serviço implantados nos Estados de integridade Ok, aviso e erro.If not specified, the health statistics show the number of deployed service packages in ok, warning, and error health states.

APIAPI

Para obter a integridade de um aplicativo implantado em um nó por meio da API, crie um FabricClient e chame o método GetDeployedApplicationHealthAsync em seu 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. Para especificar parâmetros opcionais, use DeployedApplicationHealthQueryDescription.To specify optional parameters, use DeployedApplicationHealthQueryDescription.

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

PowerShellPowerShell

O cmdlet para obter a integridade do aplicativo implantado é Get-ServiceFabricDeployedApplicationHealth.The cmdlet to get the deployed application health is Get-ServiceFabricDeployedApplicationHealth. Primeiro, conecte-se ao cluster usando o cmdlet Connect-ServiceFabricCluster .First, connect to the cluster by using the Connect-ServiceFabricCluster cmdlet. Para descobrir onde um aplicativo é implantado, execute Get-ServiceFabricApplicationHealth e examine os filhos do aplicativo implantado.To find out where an application is deployed, run Get-ServiceFabricApplicationHealth and look at the deployed application children.

O cmdlet a seguir obtém a integridade do aplicativo Fabric:/WordCount implantado em _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

Você pode obter a integridade do aplicativo implantado com uma solicitação Get ou um post que inclua as políticas de integridade descritas no corpo.You can get deployed application health with a GET request or a POST request that includes health policies described in the body.

Obter integridade do pacote de serviço implantadoGet deployed service package health

Retorna a integridade de uma entidade de pacote de serviço implantada.Returns the health of a deployed service package entity. Entrada:Input:

  • Necessária O nome do aplicativo (URI), o nome do nó (cadeia de caracteres) e o nome do manifesto do serviço (cadeia de caracteres) que identificam o pacote de serviço implantado.[Required] The application name (URI), node name (string), and service manifest name (string) that identify the deployed service package.
  • Adicional A política de integridade do aplicativo usada para substituir a política de manifesto do aplicativo.[Optional] The application health policy used to override the application manifest policy.
  • Adicional Filtros de eventos que especificam quais entradas são interessantes e devem ser retornados no resultado (por exemplo, somente erros ou avisos e erros).[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). Todos os eventos são usados para avaliar a integridade agregada da entidade, independentemente do filtro.All events are used to evaluate the entity aggregated health, regardless of the filter.

APIAPI

Para obter a integridade de um pacote de serviço implantado por meio da API, crie um FabricClient e chame o método GetDeployedServicePackageHealthAsync em seu healthmanager.To get the health of a deployed service package through the API, create a FabricClient and call the GetDeployedServicePackageHealthAsync method on its HealthManager. Para especificar parâmetros opcionais, use DeployedServicePackageHealthQueryDescription.To specify optional parameters, use DeployedServicePackageHealthQueryDescription.

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

PowerShellPowerShell

O cmdlet para obter a integridade do pacote de serviço implantado é Get-ServiceFabricDeployedServicePackageHealth.The cmdlet to get the deployed service package health is Get-ServiceFabricDeployedServicePackageHealth. Primeiro, conecte-se ao cluster usando o cmdlet Connect-ServiceFabricCluster .First, connect to the cluster by using the Connect-ServiceFabricCluster cmdlet. Para ver onde um aplicativo é implantado, execute Get-ServiceFabricApplicationHealth e examine os aplicativos implantados.To see where an application is deployed, run Get-ServiceFabricApplicationHealth and look at the deployed applications. Para ver quais pacotes de serviço estão em um aplicativo, examine os filhos do pacote de serviço implantado na saída Get-ServiceFabricDeployedApplicationHealth .To see which service packages are in an application, look at the deployed service package children in the Get-ServiceFabricDeployedApplicationHealth output.

O cmdlet a seguir obtém a integridade do pacote de serviço WordCountServicePkg do aplicativo Fabric:/WordCount implantado no _Node_2.The following cmdlet gets the health of the WordCountServicePkg service package of the fabric:/WordCount application deployed on _Node_2. A entidade tem relatórios System. Hosting para ativação bem-sucedida de pacote de serviço e ponto de entrada e registro de tipo de serviço bem-sucedido.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

Você pode obter a integridade do pacote de serviço implantado com uma solicitação Get ou um post que inclua as políticas de integridade descritas no corpo.You can get deployed service package health with a GET request or a POST request that includes health policies described in the body.

Consultas de partes de integridadeHealth chunk queries

As consultas de partes de integridade podem retornar os filhos do cluster de vários níveis (recursivamente), por filtros de entrada.The health chunk queries can return multi-level cluster children (recursively), per input filters. Ele dá suporte a filtros avançados que permitem muita flexibilidade na escolha dos filhos a serem retornados.It supports advanced filters that allow a lot of flexibility in choosing the children to be returned. Os filtros podem especificar filhos pelo identificador exclusivo ou por outros identificadores de grupo e/ou Estados de integridade.The filters can specify children by the unique identifier or by other group identifiers and/or health states. Por padrão, nenhum filho é incluído, em oposição aos comandos de integridade que sempre incluem filhos de primeiro nível.By default, no children are included, as opposed to health commands that always include first-level children.

As consultas de integridade retornam apenas os filhos de primeiro nível da entidade especificada por filtros obrigatórios.The health queries return only first-level children of the specified entity per required filters. Para obter os filhos dos filhos, você deve chamar APIs de integridade adicionais para cada entidade de interesse.To get the children of the children, you must call additional health APIs for each entity of interest. Da mesma forma, para obter a integridade de entidades específicas, você deve chamar uma API de integridade para cada entidade desejada.Similarly, to get the health of specific entities, you must call one health API for each desired entity. A filtragem avançada de consulta de bloco permite que você solicite vários itens de interesse em uma consulta, minimizando o tamanho da mensagem e o número de mensagens.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.

O valor da consulta de bloco é que você pode obter o estado de integridade para mais entidades de cluster (potencialmente todas as entidades de cluster que começam na raiz necessária) em uma chamada.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. Você pode expressar uma consulta de integridade complexa, como:You can express complex health query such as:

  • Retorne apenas aplicativos com erro e, para esses aplicativos, inclua todos os serviços em aviso ou erro.Return only applications in error, and for those applications include all services in warning or error. Para serviços retornados, inclua todas as partições.For returned services, include all partitions.
  • Retornar apenas a integridade de quatro aplicativos, especificados por seus nomes.Return only the health of four applications, specified by their names.
  • Retornar apenas a integridade dos aplicativos de um tipo de aplicativo desejado.Return only the health of applications of a desired application type.
  • Retornar todas as entidades implantadas em um nó.Return all deployed entities on a node. Retorna todos os aplicativos, todos os aplicativos implantados no nó especificado e todos os pacotes de serviço implantados nesse nó.Returns all applications, all deployed applications on the specified node and all the deployed service packages on that node.
  • Retornar todas as réplicas com erro.Return all replicas in error. Retorna todos os aplicativos, serviços, partições e somente réplicas com erro.Returns all applications, services, partitions, and only replicas in error.
  • Retornar todos os aplicativos.Return all applications. Para um serviço especificado, inclua todas as partições.For a specified service, include all partitions.

Atualmente, a consulta de parte de integridade é exposta apenas para a entidade de cluster.Currently, the health chunk query is exposed only for the cluster entity. Ele retorna uma parte de integridade do cluster, que contém:It returns a cluster health chunk, which contains:

  • O estado de integridade agregado do cluster.The cluster aggregated health state.
  • A lista de partes do estado de integridade dos nós que respeitam os filtros de entrada.The health state chunk list of nodes that respect input filters.
  • A lista de partes de estado de integridade dos aplicativos que respeitam os filtros de entrada.The health state chunk list of applications that respect input filters. Cada parte do estado de integridade do aplicativo contém uma lista de partes com todos os serviços que respeitam filtros de entrada e uma lista de partes com todos os aplicativos implantados que respeitam os filtros.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. O mesmo para os filhos de serviços e aplicativos implantados.Same for the children of services and deployed applications. Dessa forma, todas as entidades no cluster podem ser retornadas, se solicitadas, de maneira hierárquica.This way, all entities in the cluster can be potentially returned if requested, in a hierarchical fashion.

Consulta de parte da integridade do clusterCluster health chunk query

Retorna a integridade da entidade de cluster e contém as partes de estado de integridade hierárquica dos filhos necessários.Returns the health of the cluster entity and contains the hierarchical health state chunks of required children. Entrada:Input:

  • Adicional A política de integridade do cluster usada para avaliar os nós e os eventos de cluster.[Optional] The cluster health policy used to evaluate the nodes and the cluster events.
  • Adicional O mapa da política de integridade do aplicativo, com as políticas de integridade usadas para substituir as políticas de manifesto do aplicativo.[Optional] The application health policy map, with the health policies used to override the application manifest policies.
  • Adicional Filtros para nós e aplicativos que especificam quais entradas são interessantes e devem ser retornadas no resultado.[Optional] Filters for nodes and applications that specify which entries are of interest and should be returned in the result. Os filtros são específicos de uma entidade/grupo de entidades ou são aplicáveis a todas as entidades nesse nível.The filters are specific to an entity/group of entities or are applicable to all entities at that level. A lista de filtros pode conter um filtro geral e/ou filtros para identificadores específicos para entidades refinadas retornadas pela consulta.The list of filters can contain one general filter and/or filters for specific identifiers to fine-grain entities returned by the query. Se estiverem vazios, os filhos não serão retornados por padrão.If empty, the children are not returned by default. Leia mais sobre os filtros em NodeHealthStateFilter e ApplicationHealthStateFilter.Read more about the filters at NodeHealthStateFilter and ApplicationHealthStateFilter. Os filtros de aplicativo podem especificar recursivamente os filtros avançados para os filhos.The application filters can recursively specify advanced filters for children.

O resultado da parte inclui os filhos que respeitam os filtros.The chunk result includes the children that respect the filters.

Atualmente, a consulta de bloco não retorna avaliações não íntegras ou eventos de entidade.Currently, the chunk query does not return unhealthy evaluations or entity events. Essas informações extras podem ser obtidas usando a consulta de integridade de cluster existente.That extra information can be obtained using the existing cluster health query.

APIAPI

Para obter a parte da integridade do cluster, crie um FabricClient e chame o método GetClusterHealthChunkAsync em seu healthmanager.To get cluster health chunk, create a FabricClient and call the GetClusterHealthChunkAsync method on its HealthManager. Você pode passar ClusterHealthQueryDescription para descrever as políticas de integridade e os filtros avançados.You can pass in ClusterHealthQueryDescription to describe health policies and advanced filters.

O código a seguir obtém a parte da integridade do cluster com filtros avançados.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

O cmdlet para obter a integridade do cluster é Get-ServiceFabricClusterChunkHealth.The cmdlet to get the cluster health is Get-ServiceFabricClusterChunkHealth. Primeiro, conecte-se ao cluster usando o cmdlet Connect-ServiceFabricCluster .First, connect to the cluster by using the Connect-ServiceFabricCluster cmdlet.

O código a seguir obtém nós somente se eles estiverem com erro, exceto para um nó específico, que sempre deve ser retornado.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

O cmdlet a seguir obtém a parte do cluster com filtros de aplicativo.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

O cmdlet a seguir retorna todas as entidades implantadas em um nó.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

Você pode obter a parte da integridade do cluster com uma solicitação Get ou um post que inclui políticas de integridade e filtros avançados descritos no corpo.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.

Consultas geraisGeneral queries

As consultas gerais retornam uma lista de entidades de Service Fabric de um tipo especificado.General queries return a list of Service Fabric entities of a specified type. Eles são expostos por meio da API (por meio dos métodos em FabricClient. querymanager), dos cmdlets do PowerShell e do REST.They are exposed through the API (via the methods on FabricClient.QueryManager), PowerShell cmdlets, and REST. Essas consultas agregam subconsultas de vários componentes.These queries aggregate subqueries from multiple components. Um deles é o repositório de integridade, que popula o estado de integridade agregado para cada resultado da consulta.One of them is the health store, which populates the aggregated health state for each query result.

Nota

As consultas gerais retornam o estado de integridade agregado da entidade e não contêm dados de integridade avançados.General queries return the aggregated health state of the entity and do not contain rich health data. Se uma entidade não estiver íntegra, você poderá acompanhar as consultas de integridade para obter todas as suas informações de integridade, incluindo eventos, Estados de integridade filho e avaliações não íntegras.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 as consultas gerais retornarem um estado de integridade desconhecido para uma entidade, é possível que o repositório de integridade não tenha dados completos sobre a entidade.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. Também é possível que uma subconsulta ao repositório de integridade não tenha êxito (por exemplo, houve um erro de comunicação ou o repositório de integridade foi limitado).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). Acompanhe com uma consulta de integridade para a entidade.Follow up with a health query for the entity. Se a subconsulta encontrou erros transitórios, como problemas de rede, essa consulta de acompanhamento pode ter sucesso.If the subquery encountered transient errors, such as network issues, this follow-up query may succeed. Ele também pode fornecer mais detalhes do repositório de integridade sobre por que a entidade não está exposta.It may also give you more details from the health store about why the entity is not exposed.

As consultas que contêm HealthState para entidades são:The queries that contain HealthState for entities are:

Nota

Algumas das consultas retornam resultados paginados.Some of the queries return paged results. O retorno dessas consultas é uma lista derivada de PagedList<t >.The return of these queries is a list derived from PagedList<T>. Se os resultados não se ajustarem a uma mensagem, apenas uma página será retornada e um ContinuationToken que controla onde a enumeração foi interrompida.If the results do not fit a message, only a page is returned and a ContinuationToken that tracks where enumeration stopped. Continue a chamar a mesma consulta e passe o token de continuação da consulta anterior para obter os próximos resultados.Continue to call the same query and pass in the continuation token from the previous query to get next results.

ExemplosExamples

O código a seguir obtém os aplicativos não íntegros no cluster:The following code gets the unhealthy applications in the cluster:

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

O cmdlet a seguir obtém os detalhes do aplicativo para o aplicativo Fabric:/WordCount.The following cmdlet gets the application details for the fabric:/WordCount application. Observe que o estado de integridade está em aviso.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"}]" }

O cmdlet a seguir obtém os serviços com um estado de integridade de erro: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

Atualizações de cluster e aplicativoCluster and application upgrades

Durante uma atualização monitorada do cluster e do aplicativo, o Service Fabric verifica a integridade para garantir que tudo permaneça íntegro.During a monitored upgrade of the cluster and application, Service Fabric checks health to ensure that everything remains healthy. Se uma entidade não estiver íntegra conforme avaliada usando políticas de integridade configuradas, a atualização aplicará políticas específicas de atualização para determinar a próxima ação.If an entity is unhealthy as evaluated by using configured health policies, the upgrade applies upgrade-specific policies to determine the next action. A atualização pode estar em pausa para permitir a interação do usuário (como corrigir condições de erro ou alterar políticas), ou pode ser revertida automaticamente para a versão válida anterior.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 uma atualização de cluster , você pode obter o status de atualização do cluster.During a cluster upgrade, you can get the cluster upgrade status. O status de atualização inclui avaliações não íntegras, que apontam o que não está íntegro no cluster.The upgrade status includes unhealthy evaluations, which point to what is unhealthy in the cluster. Se a atualização for revertida devido a problemas de integridade, o status da atualização memorizará os últimos motivos não íntegros.If the upgrade is rolled back due to health issues, the upgrade status remembers the last unhealthy reasons. Essas informações podem ajudar os administradores a investigar o que deu errado depois que a atualização foi revertida ou interrompida.This information can help administrators investigate what went wrong after the upgrade rolled back or stopped.

Da mesma forma, durante uma atualização de aplicativo , todas as avaliações não íntegras estão contidas no status de atualização do aplicativo.Similarly, during an application upgrade, any unhealthy evaluations are contained in the application upgrade status.

O seguinte mostra o status de atualização do aplicativo para um aplicativo Fabric:/WordCount modificado.The following shows the application upgrade status for a modified fabric:/WordCount application. Um Watchdog relatou um erro em uma de suas réplicas.A watchdog reported an error on one of its replicas. A atualização está sendo revertida porque as verificações de integridade não são respeitadas.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

Leia mais sobre a atualização do aplicativo Service Fabric.Read more about the Service Fabric application upgrade.

Usar avaliações de integridade para solucionar problemasUse health evaluations to troubleshoot

Sempre que houver um problema com o cluster ou um aplicativo, examine a integridade do cluster ou do aplicativo para identificar o que está errado.Whenever there is an issue with the cluster or an application, look at the cluster or application health to pinpoint what is wrong. As avaliações não íntegras fornecem detalhes sobre o que disparou o estado não íntegro atual.The unhealthy evaluations provide details about what triggered the current unhealthy state. Se for necessário, você poderá fazer uma busca detalhada em entidades filho não íntegras para identificar a causa raiz.If you need to, you can drill down into unhealthy child entities to identify the root cause.

Por exemplo, considere um aplicativo não íntegro porque há um relatório de erros em uma de suas réplicas.For example, consider an application unhealthy because there is an error report on one of its replicas. O cmdlet do PowerShell a seguir mostra as avaliações não íntegras: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

Você pode examinar a réplica para obter mais informações: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

As avaliações não íntegras mostram o primeiro motivo pelo qual a entidade é avaliada como o estado de integridade atual.The unhealthy evaluations show the first reason the entity is evaluated to current health state. Pode haver vários outros eventos que disparam esse Estado, mas eles não são refletidos nas avaliações.There may be multiple other events that trigger this state, but they are not be reflected in the evaluations. Para obter mais informações, faça uma busca detalhada nas entidades de integridade para descobrir todos os relatórios não íntegros no cluster.To get more information, drill down into the health entities to figure out all the unhealthy reports in the cluster.

Passos seguintesNext steps

Use system health reports to troubleshoot (Utilizar relatórios de estado de funcionamento do sistema para resolver problemas)Use system health reports to troubleshoot

Adicionar relatórios de integridade de Service Fabric personalizadosAdd custom Service Fabric health reports

Como relatar e verificar a integridade do serviçoHow to report and check service health

Monitorar e diagnosticar serviços localmenteMonitor and diagnose services locally

Atualização do aplicativo Service FabricService Fabric application upgrade