Introdução à monitorização do estado de funcionamento do Service FabricIntroduction to Service Fabric health monitoring

O Azure Service Fabric introduz um modelo de integridade que fornece avaliação de integridade avançada, flexível e extensível e relatórios.Azure Service Fabric introduces a health model that provides rich, flexible, and extensible health evaluation and reporting. O modelo permite o monitoramento quase em tempo real do estado do cluster e dos serviços em execução nele.The model allows near-real-time monitoring of the state of the cluster and the services running in it. Você pode facilmente obter informações de integridade e corrigir possíveis problemas antes que eles sejam colocados em cascata e causem interrupções maciças.You can easily obtain health information and correct potential issues before they cascade and cause massive outages. No modelo típico, os serviços enviam relatórios com base em suas exibições locais e essas informações são agregadas para fornecer uma exibição geral no nível do cluster.In the typical model, services send reports based on their local views, and that information is aggregated to provide an overall cluster-level view.

Service Fabric componentes usam esse modelo de integridade avançado para relatar seu estado atual.Service Fabric components use this rich health model to report their current state. Você pode usar o mesmo mecanismo para relatar a integridade de seus aplicativos.You can use the same mechanism to report health from your applications. Se você investir em relatórios de integridade de alta qualidade que capturam suas condições personalizadas, poderá detectar e corrigir problemas para o aplicativo em execução com muito mais facilidade.If you invest in high-quality health reporting that captures your custom conditions, you can detect and fix issues for your running application much more easily.

Nota

Começamos o subsistema de integridade para atender a uma necessidade de atualizações monitoradas.We started the health subsystem to address a need for monitored upgrades. Service Fabric fornece atualizações monitoradas de aplicativo e cluster que garantem disponibilidade total, sem tempo de inatividade e pouca intervenção do usuário.Service Fabric provides monitored application and cluster upgrades that ensure full availability, no downtime and minimal to no user intervention. Para atingir essas metas, a atualização verifica a integridade com base nas políticas de atualização configuradas.To achieve these goals, the upgrade checks health based on configured upgrade policies. Uma atualização pode continuar somente quando a integridade respeita os limites desejados.An upgrade can proceed only when health respects desired thresholds. Caso contrário, a atualização será revertida automaticamente ou pausada para dar aos administradores a oportunidade de corrigir os problemas.Otherwise, the upgrade is either automatically rolled back or paused to give administrators a chance to fix the issues. Para saber mais sobre atualizações de aplicativos, consulte Este artigo.To learn more about application upgrades, see this article.

Repositório de integridadeHealth store

O repositório de integridade mantém informações relacionadas à integridade sobre entidades no cluster para fácil recuperação e avaliação.The health store keeps health-related information about entities in the cluster for easy retrieval and evaluation. Ele é implementado como um Service Fabric serviço de estado persistente para garantir alta disponibilidade e escalabilidade.It is implemented as a Service Fabric persisted stateful service to ensure high availability and scalability. O repositório de integridade faz parte do aplicativo Fabric:/System e está disponível quando o cluster está em execução.The health store is part of the fabric:/System application, and it is available when the cluster is up and running.

Entidades de integridade e hierarquiaHealth entities and hierarchy

As entidades de integridade são organizadas em uma hierarquia lógica que captura interações e dependências entre diferentes entidades.The health entities are organized in a logical hierarchy that captures interactions and dependencies among different entities. O repositório de integridade cria automaticamente entidades de integridade e hierarquia com base em relatórios recebidos de componentes de Service Fabric.The health store automatically builds health entities and hierarchy based on reports received from Service Fabric components.

As entidades de integridade espelham as entidades de Service Fabric.The health entities mirror the Service Fabric entities. (Por exemplo, a entidade de aplicativo de integridade corresponde a uma instância de aplicativo implantada no cluster, enquanto a entidade do nó de integridade corresponde a um nó de Cluster Service Fabric.) A hierarquia de integridade captura as interações das entidades do sistema e é a base para a avaliação de integridade avançada.(For example, health application entity matches an application instance deployed in the cluster, while health node entity matches a Service Fabric cluster node.) The health hierarchy captures the interactions of the system entities, and it is the basis for advanced health evaluation. Você pode aprender sobre os principais conceitos de Service Fabric em Service Fabric visão geral técnica.You can learn about key Service Fabric concepts in Service Fabric technical overview. Para obter mais informações sobre o aplicativo, consulte modelo de aplicativo Service Fabric.For more on application, see Service Fabric application model.

As entidades de integridade e a hierarquia permitem que o cluster e os aplicativos sejam efetivamente relatados, depurados e monitorados.The health entities and hierarchy allow the cluster and applications to be effectively reported, debugged, and monitored. O modelo de integridade fornece uma representação precisa e granular da integridade das muitas partes móveis no cluster.The health model provides an accurate, granular representation of the health of the many moving pieces in the cluster.

Entidades de integridade.Health entities. As entidades de integridade, organizadas em uma hierarquia com base em relações pai-filho.The health entities, organized in a hierarchy based on parent-child relationships.

As entidades de integridade são:The health entities are:

  • Cluster.Cluster. Representa a integridade de um Cluster Service Fabric.Represents the health of a Service Fabric cluster. Os relatórios de integridade do cluster descrevem as condições que afetam o cluster inteiro.Cluster health reports describe conditions that affect the entire cluster. Essas condições afetam várias entidades no cluster ou no próprio cluster.These conditions affect multiple entities in the cluster or the cluster itself. Com base na condição, o reporter não pode restringir o problema a um ou mais filhos não íntegros.Based on the condition, the reporter can't narrow the issue down to one or more unhealthy children. Os exemplos incluem o cérebro da divisão de cluster devido ao particionamento de rede ou problemas de comunicação.Examples include the brain of the cluster splitting due to network partitioning or communication issues.
  • .Node. Representa a integridade de um nó de Service Fabric.Represents the health of a Service Fabric node. Os relatórios de integridade do nó descrevem as condições que afetam a funcionalidade do nó.Node health reports describe conditions that affect the node functionality. Normalmente, eles afetam todas as entidades implantadas em execução.They typically affect all the deployed entities running on it. Os exemplos incluem um nó sem espaço em disco (ou outras propriedades em todo o computador, como memória, conexões) e quando um nó está inoperante.Examples include node out of disk space (or other machine-wide properties, such as memory, connections) and when a node is down. A entidade de nó é identificada pelo nome do nó (cadeia de caracteres).The node entity is identified by the node name (string).
  • Aplicativo.Application. Representa a integridade de uma instância do aplicativo em execução no cluster.Represents the health of an application instance running in the cluster. Os relatórios de integridade do aplicativo descrevem as condições que afetam a integridade geral do aplicativo.Application health reports describe conditions that affect the overall health of the application. Eles não podem ser restringidos a filhos individuais (serviços ou aplicativos implantados).They can't be narrowed down to individual children (services or deployed applications). Os exemplos incluem a interação de ponta a ponta entre diferentes serviços no aplicativo.Examples include the end-to-end interaction among different services in the application. A entidade de aplicativo é identificada pelo nome do aplicativo (URI).The application entity is identified by the application name (URI).
  • Serviço.Service. Representa a integridade de um serviço em execução no cluster.Represents the health of a service running in the cluster. Os relatórios de integridade do serviço descrevem as condições que afetam a integridade geral do serviço.Service health reports describe conditions that affect the overall health of the service. O reporter não pode restringir o problema a uma partição ou réplica não íntegra.The reporter can't narrow down the issue to an unhealthy partition or replica. Os exemplos incluem uma configuração de serviço (como porta ou compartilhamento de arquivo externo) que está causando problemas para todas as partições.Examples include a service configuration (such as port or external file share) that is causing issues for all partitions. A entidade de serviço é identificada pelo nome do serviço (URI).The service entity is identified by the service name (URI).
  • Partição.Partition. Representa a integridade de uma partição de serviço.Represents the health of a service partition. Os relatórios de integridade de partição descrevem as condições que afetam o conjunto de réplicas inteiro.Partition health reports describe conditions that affect the entire replica set. Os exemplos incluem quando o número de réplicas está abaixo da contagem de destino e quando uma partição está em perda de quorum.Examples include when the number of replicas is below target count and when a partition is in quorum loss. A entidade de partição é identificada pela ID de partição (GUID).The partition entity is identified by the partition ID (GUID).
  • Réplica.Replica. Representa a integridade de uma réplica de serviço com estado ou de uma instância de serviço sem estado.Represents the health of a stateful service replica or a stateless service instance. A réplica é a menor unidade que os Watchdogs e os componentes do sistema podem relatar para um aplicativo.The replica is the smallest unit that watchdogs and system components can report on for an application. Para serviços com estado, os exemplos incluem uma réplica primária que não pode replicar operações para secundários e replicação lenta.For stateful services, examples include a primary replica that can't replicate operations to secondaries and slow replication. Além disso, uma instância sem estado pode relatar quando está ficando sem recursos ou tem problemas de conectividade.Also, a stateless instance can report when it is running out of resources or has connectivity issues. A entidade de réplica é identificada pela ID de partição (GUID) e pela ID de réplica ou instância (longa).The replica entity is identified by the partition ID (GUID) and the replica or instance ID (long).
  • DeployedApplication.DeployedApplication. Representa a integridade de um aplicativo em execução em um nó.Represents the health of an application running on a node. Os relatórios de integridade do aplicativo implantados descrevem condições específicas ao aplicativo no nó que não podem ser reduzidas para pacotes de serviço implantados no mesmo nó.Deployed application health reports describe conditions specific to the application on the node that can't be narrowed down to service packages deployed on the same node. Os exemplos incluem erros quando o pacote de aplicativos não pode ser baixado nesse nó e emite problemas de configuração de entidades de segurança de aplicativo no nó.Examples include errors when application package can't be downloaded on that node and issues setting up application security principals on the node. O aplicativo implantado é identificado pelo nome do aplicativo (URI) e pelo nome do nó (cadeia de caracteres).The deployed application is identified by application name (URI) and node name (string).
  • DeployedServicePackage.DeployedServicePackage. Representa a integridade de um pacote de serviço em execução em um nó no cluster.Represents the health of a service package running on a node in the cluster. Ele descreve as condições específicas de um pacote de serviço que não afetam os outros pacotes de serviço no mesmo nó para o mesmo aplicativo.It describes conditions specific to a service package that do not affect the other service packages on the same node for the same application. Os exemplos incluem um pacote de códigos no pacote de serviço que não pode ser iniciado e um pacote de configuração que não pode ser lido.Examples include a code package in the service package that cannot be started and a configuration package that cannot be read. O pacote de serviço implantado é identificado pelo nome do aplicativo (URI), nome do nó (cadeia de caracteres), nome do manifesto do serviço (cadeia de caracteres) e ID de ativação do pacote de serviço (cadeia de caracteres).The deployed service package is identified by application name (URI), node name (string), service manifest name (string), and service package activation ID (string).

A granularidade do modelo de integridade torna mais fácil detectar e corrigir problemas.The granularity of the health model makes it easy to detect and correct issues. Por exemplo, se um serviço não estiver respondendo, é possível relatar que a instância do aplicativo não está íntegra.For example, if a service is not responding, it is feasible to report that the application instance is unhealthy. No entanto, o relatório nesse nível não é o ideal, pois o problema pode não estar afetando todos os serviços dentro desse aplicativo.Reporting at that level is not ideal, however, because the issue might not be affecting all the services within that application. O relatório deve ser aplicado ao serviço não íntegro ou a uma partição filho específica, se mais informações apontarem para essa partição.The report should be applied to the unhealthy service or to a specific child partition, if more information points to that partition. Os dados são automaticamente percorrendo pela hierarquia e uma partição não íntegra torna-se visível nos níveis de serviço e aplicativo.The data automatically surfaces through the hierarchy, and an unhealthy partition is made visible at service and application levels. Essa agregação ajuda a identificar e resolver a causa raiz do problema mais rapidamente.This aggregation helps to pinpoint and resolve the root cause of the issue more quickly.

A hierarquia de integridade é composta por relações pai-filho.The health hierarchy is composed of parent-child relationships. Um cluster é composto por nós e aplicativos.A cluster is composed of nodes and applications. Os aplicativos têm serviços e aplicativos implantados.Applications have services and deployed applications. Os aplicativos implantados implantaram pacotes de serviço.Deployed applications have deployed service packages. Os serviços têm partições e cada partição tem uma ou mais réplicas.Services have partitions, and each partition has one or more replicas. Há uma relação especial entre nós e entidades implantadas.There is a special relationship between nodes and deployed entities. Um nó não íntegro como relatado por seu componente de sistema de autoridade, o serviço de Gerenciador de Failover, afeta os aplicativos implantados, pacotes de serviço e réplicas implantados nele.An unhealthy node as reported by its authority system component, the Failover Manager service, affects the deployed applications, service packages, and replicas deployed on it.

A hierarquia de integridade representa o estado mais recente do sistema com base nos relatórios de integridade mais recentes, que são quase informações em tempo real.The health hierarchy represents the latest state of the system based on the latest health reports, which is almost real-time information. Os Watchdogs internos e externos podem relatar as mesmas entidades com base em lógica específica do aplicativo ou em condições monitoradas personalizadas.Internal and external watchdogs can report on the same entities based on application-specific logic or custom monitored conditions. Os relatórios do usuário coexistem com os relatórios do sistema.User reports coexist with the system reports.

Planeje investir em como relatar e responder à integridade durante o design de um serviço de nuvem grande.Plan to invest in how to report and respond to health during the design of a large cloud service. Esse investimento antecipado torna o serviço mais fácil de depurar, monitorar e operar.This up-front investment makes the service easier to debug, monitor, and operate.

Estados de integridadeHealth states

Service Fabric usa três Estados de integridade para descrever se uma entidade está íntegra ou não: OK, aviso e erro.Service Fabric uses three health states to describe whether an entity is healthy or not: OK, warning, and error. Qualquer relatório enviado para o repositório de integridade deve especificar um desses Estados.Any report sent to the health store must specify one of these states. O resultado da avaliação de integridade é um desses Estados.The health evaluation result is one of these states.

Os Estados de integridade possíveis são:The possible health states are:

  • OK.OK. A entidade está íntegra.The entity is healthy. Não há problemas conhecidos relatados sobre ele ou seus filhos (quando aplicável).There are no known issues reported on it or its children (when applicable).
  • Aviso.Warning. A entidade tem alguns problemas, mas ainda pode funcionar corretamente.The entity has some issues, but it can still function correctly. Por exemplo, há atrasos, mas eles ainda não causam problemas funcionais.For example, there are delays, but they do not cause any functional issues yet. Em alguns casos, a condição de aviso pode ser corrigida sem intervenção externa.In some cases, the warning condition may fix itself without external intervention. Nesses casos, os relatórios de integridade aumentam a conscientização e fornecem visibilidade do que está acontecendo.In these cases, health reports raise awareness and provide visibility into what is going on. Em outros casos, a condição de aviso pode degradar um problema grave sem intervenção do usuário.In other cases, the warning condition may degrade into a severe problem without user intervention.
  • Erro.Error. A entidade não está íntegra.The entity is unhealthy. A ação deve ser tomada para corrigir o estado da entidade, pois ela não funciona corretamente.Action should be taken to fix the state of the entity, because it can't function properly.
  • Desconhecido.Unknown. A entidade não existe no repositório de integridade.The entity doesn't exist in the health store. Esse resultado pode ser obtido das consultas distribuídas que mesclam os resultados de vários componentes.This result can be obtained from the distributed queries that merge results from multiple components. Por exemplo, a consulta obter lista de nós vaipara failovermanager, Clustermanager e healthmanager; a consulta obter lista de aplicativos vai para Clustermanager e healthmanager.For example, the get node list query goes to FailoverManager, ClusterManager, and HealthManager; get application list query goes to ClusterManager and HealthManager. Essas consultas mesclam os resultados de vários componentes do sistema.These queries merge results from multiple system components. Se outro componente do sistema retornar uma entidade que não está presente no Health Store, o resultado mesclado terá um estado de integridade desconhecido.If another system component returns an entity that is not present in health store, the merged result has unknown health state. Uma entidade não está no repositório porque os relatórios de integridade ainda não foram processados ou a entidade foi limpa após a exclusão.An entity is not in store because health reports have not yet been processed or the entity has been cleaned up after deletion.

Políticas de integridadeHealth policies

O repositório de integridade aplica as políticas de integridade para determinar se uma entidade está íntegra com base em seus relatórios e seus filhos.The health store applies health policies to determine whether an entity is healthy based on its reports and its children.

Nota

As políticas de integridade podem ser especificadas no manifesto do cluster (para avaliação de integridade do cluster e do nó) ou no manifesto do aplicativo (para avaliação do aplicativo e qualquer um de seus filhos).Health policies can be specified in the cluster manifest (for cluster and node health evaluation) or in the application manifest (for application evaluation and any of its children). As solicitações de avaliação de integridade também podem passar por políticas de avaliação de integridade personalizadas, que são usadas somente para essa avaliação.Health evaluation requests can also pass in custom health evaluation policies, which are used only for that evaluation.

Por padrão, Service Fabric aplica regras estritas (tudo deve estar íntegro) para a relação hierárquica pai-filho.By default, Service Fabric applies strict rules (everything must be healthy) for the parent-child hierarchical relationship. Se mesmo um dos filhos tiver um evento não íntegro, o pai será considerado não íntegro.If even one of the children has one unhealthy event, the parent is considered unhealthy.

Política de integridade do clusterCluster health policy

A política de integridade do cluster é usada para avaliar o estado de integridade do cluster e os Estados de integridade do nó.The cluster health policy is used to evaluate the cluster health state and node health states. A política pode ser definida no manifesto do cluster.The policy can be defined in the cluster manifest. Se não estiver presente, a política padrão (zero falhas toleradas) será usada.If it is not present, the default policy (zero tolerated failures) is used. A política de integridade do cluster contém:The cluster health policy contains:

  • ConsiderWarningAsError.ConsiderWarningAsError. Especifica se os relatórios de integridade de aviso devem ser tratados como erros durante a avaliação de integridade.Specifies whether to treat warning health reports as errors during health evaluation. Padrão: false.Default: false.
  • MaxPercentUnhealthyApplications.MaxPercentUnhealthyApplications. Especifica a porcentagem máxima tolerada de aplicativos que podem não estar íntegros antes que o cluster seja considerado com erro.Specifies the maximum tolerated percentage of applications that can be unhealthy before the cluster is considered in error.
  • MaxPercentUnhealthyNodes.MaxPercentUnhealthyNodes. Especifica o percentual máximo tolerado de nós que podem não estar íntegros antes que o cluster seja considerado com erro.Specifies the maximum tolerated percentage of nodes that can be unhealthy before the cluster is considered in error. Em clusters grandes, alguns nós estão sempre inativos ou fora para reparos, portanto, esse percentual deve ser configurado para tolerar isso.In large clusters, some nodes are always down or out for repairs, so this percentage should be configured to tolerate that.
  • ApplicationTypeHealthPolicyMap.ApplicationTypeHealthPolicyMap. O mapa da política de integridade do tipo de aplicativo pode ser usado durante a avaliação de integridade do cluster para descrever tipos de aplicativos especiais.The application type health policy map can be used during cluster health evaluation to describe special application types. Por padrão, todos os aplicativos são colocados em um pool e avaliados com MaxPercentUnhealthyApplications.By default, all applications are put into a pool and evaluated with MaxPercentUnhealthyApplications. Se alguns tipos de aplicativos devem ser tratados de forma diferente, eles podem ser retirados do pool global.If some application types should be treated differently, they can be taken out of the global pool. Em vez disso, eles são avaliados em relação aos percentuais associados ao nome do tipo de aplicativo no mapa.Instead, they are evaluated against the percentages associated with their application type name in the map. Por exemplo, em um cluster, há milhares de aplicativos de tipos diferentes e algumas instâncias de aplicativo de controle de um tipo de aplicativo especial.For example, in a cluster there are thousands of applications of different types, and a few control application instances of a special application type. Os aplicativos de controle nunca devem estar em erro.The control applications should never be in error. Você pode especificar MaxPercentUnhealthyApplications globais para 20% para tolerar algumas falhas, mas para o tipo de aplicativo "ControlApplicationType", defina MaxPercentUnhealthyApplications como 0.You can specify global MaxPercentUnhealthyApplications to 20% to tolerate some failures, but for the application type "ControlApplicationType" set the MaxPercentUnhealthyApplications to 0. Dessa forma, se alguns dos muitos aplicativos não estiverem íntegros, mas abaixo do percentual não íntegro global, o cluster será avaliado como aviso.This way, if some of the many applications are unhealthy, but below the global unhealthy percentage, the cluster would be evaluated to Warning. Um estado de integridade de aviso não afeta a atualização do cluster ou outro monitoramento disparado pelo estado de integridade do erro.A warning health state does not impact cluster upgrade or other monitoring triggered by Error health state. Mas mesmo um aplicativo de controle em erro tornaria o cluster não íntegro, que dispara a reversão ou pausa a atualização do cluster, dependendo da configuração da atualização.But even one control application in error would make cluster unhealthy, which triggers roll back or pauses the cluster upgrade, depending on the upgrade configuration. Para os tipos de aplicativo definidos no mapa, todas as instâncias de aplicativo são retiradas do pool global de aplicativos.For the application types defined in the map, all application instances are taken out of the global pool of applications. Eles são avaliados com base no número total de aplicativos do tipo de aplicativo, usando o MaxPercentUnhealthyApplications específico do mapa.They are evaluated based on the total number of applications of the application type, using the specific MaxPercentUnhealthyApplications from the map. Todos os demais aplicativos permanecem no pool global e são avaliados com MaxPercentUnhealthyApplications.All the rest of the applications remain in the global pool and are evaluated with MaxPercentUnhealthyApplications.

O exemplo a seguir é um trecho de um manifesto de cluster.The following example is an excerpt from a cluster manifest. Para definir entradas no mapa de tipo de aplicativo, Prefixe o nome do parâmetro com "ApplicationTypeMaxPercentUnhealthyApplications-", seguido pelo nome do tipo de aplicativo.To define entries in the application type map, prefix the parameter name with "ApplicationTypeMaxPercentUnhealthyApplications-", followed by the application type name.

<FabricSettings>
  <Section Name="HealthManager/ClusterHealthPolicy">
    <Parameter Name="ConsiderWarningAsError" Value="False" />
    <Parameter Name="MaxPercentUnhealthyApplications" Value="20" />
    <Parameter Name="MaxPercentUnhealthyNodes" Value="20" />
    <Parameter Name="ApplicationTypeMaxPercentUnhealthyApplications-ControlApplicationType" Value="0" />
  </Section>
</FabricSettings>

Política de integridade do aplicativoApplication health policy

A política de integridade do aplicativo descreve como a avaliação de eventos e a agregação de Estados filho é feita para aplicativos e seus filhos.The application health policy describes how the evaluation of events and child-states aggregation is done for applications and their children. Ele pode ser definido no manifesto do aplicativo, ApplicationManifest. xml, no pacote de aplicativos.It can be defined in the application manifest, ApplicationManifest.xml, in the application package. Se nenhuma política for especificada, o Service Fabric assumirá que a entidade não está íntegra se tiver um relatório de integridade ou um filho no estado de integridade de aviso ou erro.If no policies are specified, Service Fabric assumes that the entity is unhealthy if it has a health report or a child at the warning or error health state. As políticas configuráveis são:The configurable policies are:

  • ConsiderWarningAsError.ConsiderWarningAsError. Especifica se os relatórios de integridade de aviso devem ser tratados como erros durante a avaliação de integridade.Specifies whether to treat warning health reports as errors during health evaluation. Padrão: false.Default: false.
  • MaxPercentUnhealthyDeployedApplications.MaxPercentUnhealthyDeployedApplications. Especifica a porcentagem máxima tolerada de aplicativos implantados que podem não estar íntegros antes que o aplicativo seja considerado com erro.Specifies the maximum tolerated percentage of deployed applications that can be unhealthy before the application is considered in error. Essa porcentagem é calculada pela divisão do número de aplicativos implantados não íntegros durante o número de nós nos quais os aplicativos estão atualmente implantados no cluster.This percentage is calculated by dividing the number of unhealthy deployed applications over the number of nodes that the applications are currently deployed on in the cluster. A computação arredonda até tolerar uma falha em pequenos números de nós.The computation rounds up to tolerate one failure on small numbers of nodes. Porcentagem padrão: zero.Default percentage: zero.
  • DefaultServiceTypeHealthPolicy.DefaultServiceTypeHealthPolicy. Especifica a política de integridade do tipo de serviço padrão, que substitui a política de integridade padrão para todos os tipos de serviço no aplicativo.Specifies the default service type health policy, which replaces the default health policy for all service types in the application.
  • ServiceTypeHealthPolicyMap.ServiceTypeHealthPolicyMap. Fornece um mapa de políticas de integridade do serviço por tipo de serviço.Provides a map of service health policies per service type. Essas políticas substituem as políticas de integridade do tipo de serviço padrão para cada tipo de serviço especificado.These policies replace the default service type health policies for each specified service type. Por exemplo, se um aplicativo tiver um tipo de serviço de gateway sem estado e um tipo de serviço de mecanismo com estado, você poderá configurar as políticas de integridade para sua avaliação de forma diferente.For example, if an application has a stateless gateway service type and a stateful engine service type, you can configure the health policies for their evaluation differently. Ao especificar a política por tipo de serviço, você pode obter um controle mais granular da integridade do serviço.When you specify policy per service type, you can gain more granular control of the health of the service.

Política de integridade do tipo de serviçoService type health policy

A política de integridade do tipo de serviço especifica como avaliar e agregar os serviços e os filhos dos serviços.The service type health policy specifies how to evaluate and aggregate the services and the children of services. A política contém:The policy contains:

  • MaxPercentUnhealthyPartitionsPerService.MaxPercentUnhealthyPartitionsPerService. Especifica o percentual máximo tolerado de partições não íntegras antes que um serviço seja considerado não íntegro.Specifies the maximum tolerated percentage of unhealthy partitions before a service is considered unhealthy. Porcentagem padrão: zero.Default percentage: zero.
  • MaxPercentUnhealthyReplicasPerPartition.MaxPercentUnhealthyReplicasPerPartition. Especifica o percentual máximo tolerado de réplicas não íntegras antes que uma partição seja considerada não íntegra.Specifies the maximum tolerated percentage of unhealthy replicas before a partition is considered unhealthy. Porcentagem padrão: zero.Default percentage: zero.
  • MaxPercentUnhealthyServices.MaxPercentUnhealthyServices. Especifica a porcentagem máxima tolerada de serviços não íntegros antes que o aplicativo seja considerado não íntegro.Specifies the maximum tolerated percentage of unhealthy services before the application is considered unhealthy. Porcentagem padrão: zero.Default percentage: zero.

O exemplo a seguir é um trecho de um manifesto de aplicativo:The following example is an excerpt from an application manifest:

    <Policies>
        <HealthPolicy ConsiderWarningAsError="true" MaxPercentUnhealthyDeployedApplications="20">
            <DefaultServiceTypeHealthPolicy
                   MaxPercentUnhealthyServices="0"
                   MaxPercentUnhealthyPartitionsPerService="10"
                   MaxPercentUnhealthyReplicasPerPartition="0"/>
            <ServiceTypeHealthPolicy ServiceTypeName="FrontEndServiceType"
                   MaxPercentUnhealthyServices="0"
                   MaxPercentUnhealthyPartitionsPerService="20"
                   MaxPercentUnhealthyReplicasPerPartition="0"/>
            <ServiceTypeHealthPolicy ServiceTypeName="BackEndServiceType"
                   MaxPercentUnhealthyServices="20"
                   MaxPercentUnhealthyPartitionsPerService="0"
                   MaxPercentUnhealthyReplicasPerPartition="0">
            </ServiceTypeHealthPolicy>
        </HealthPolicy>
    </Policies>

Avaliação de integridadeHealth evaluation

Os usuários e os serviços automatizados podem avaliar a integridade de qualquer entidade a qualquer momento.Users and automated services can evaluate health for any entity at any time. Para avaliar a integridade de uma entidade, o repositório de integridade agrega todos os relatórios de integridade na entidade e avalia todos os seus filhos (quando aplicável).To evaluate an entity's health, the health store aggregates all health reports on the entity and evaluates all its children (when applicable). O algoritmo de agregação de integridade usa políticas de integridade que especificam como avaliar relatórios de integridade e como agregar Estados de integridade filho (quando aplicável).The health aggregation algorithm uses health policies that specify how to evaluate health reports and how to aggregate child health states (when applicable).

Agregação do relatório de integridadeHealth report aggregation

Uma entidade pode ter vários relatórios de integridade enviados por diferentes relatórios (componentes do sistema ou Watchdogs) em propriedades diferentes.One entity can have multiple health reports sent by different reporters (system components or watchdogs) on different properties. A agregação usa as políticas de integridade associadas, especialmente o membro ConsiderWarningAsError da política de integridade de aplicativo ou de cluster.The aggregation uses the associated health policies, in particular the ConsiderWarningAsError member of application or cluster health policy. ConsiderWarningAsError especifica como avaliar os avisos.ConsiderWarningAsError specifies how to evaluate warnings.

O estado de integridade agregado é disparado pelos piores relatórios de integridade na entidade.The aggregated health state is triggered by the worst health reports on the entity. Se houver pelo menos um relatório de integridade de erro, o estado de integridade agregado será um erro.If there is at least one error health report, the aggregated health state is an error.

Agregação de relatório de integridade com relatório de erros.

Uma entidade de integridade que tem um ou mais relatórios de integridade de erro é avaliada como erro.A health entity that has one or more error health reports is evaluated as Error. O mesmo é verdadeiro para um relatório de integridade expirado, independentemente de seu estado de integridade.The same is true for an expired health report, regardless of its health state.

Se não houver nenhum relatório de erros e um ou mais avisos, o estado de integridade agregado será aviso ou erro, dependendo do sinalizador de política ConsiderWarningAsError.If there are no error reports and one or more warnings, the aggregated health state is either warning or error, depending on the ConsiderWarningAsError policy flag.

Agregação de relatório de integridade com relatório de aviso e ConsiderWarningAsError false.

Agregação de relatório de integridade com relatório de aviso e ConsiderWarningAsError definido como false (padrão).Health report aggregation with warning report and ConsiderWarningAsError set to false (default).

Agregação de integridade filhoChild health aggregation

O estado de integridade agregado de uma entidade reflete os Estados de integridade filho (quando aplicável).The aggregated health state of an entity reflects the child health states (when applicable). O algoritmo para agregar Estados de integridade filho usa as políticas de integridade aplicáveis com base no tipo de entidade.The algorithm for aggregating child health states uses the health policies applicable based on the entity type.

Agregação de integridade de entidades filho.

Agregação filho com base nas políticas de integridade.Child aggregation based on health policies.

Depois que o repositório de integridade tiver avaliado todos os filhos, ele agregará seus Estados de integridade com base na porcentagem máxima configurada de filhos não íntegros.After the health store has evaluated all the children, it aggregates their health states based on the configured maximum percentage of unhealthy children. Esse percentual é obtido da política com base na entidade e no tipo filho.This percentage is taken from the policy based on the entity and child type.

  • Se todos os filhos tiverem Estados OK, o estado de integridade agregado filho será OK.If all children have OK states, the child aggregated health state is OK.
  • Se os filhos tiverem Estados OK e de aviso, o estado de integridade agregado filho será aviso.If children have both OK and warning states, the child aggregated health state is warning.
  • Se houver filhos com Estados de erro que não respeitam a porcentagem máxima permitida de filhos não íntegros, o estado de integridade do pai agregado será um erro.If there are children with error states that do not respect the maximum allowed percentage of unhealthy children, the aggregated parent health state is an error.
  • Se os filhos com Estados de erro respeitarem a porcentagem máxima permitida de filhos não íntegros, o estado de integridade do pai agregado será aviso.If the children with error states respect the maximum allowed percentage of unhealthy children, the aggregated parent health state is warning.

Relatório de integridadeHealth reporting

Os componentes do sistema, os aplicativos de malha do sistema e os Watchdogs internos/externos podem relatar Service Fabric entidades.System components, System Fabric applications, and internal/external watchdogs can report against Service Fabric entities. Os relatórios fazem as determinações locais da integridade das entidades monitoradas, com base nas condições que estão monitorando.The reporters make local determinations of the health of the monitored entities, based on the conditions they are monitoring. Eles não precisam examinar nenhum estado global ou dados agregados.They don't need to look at any global state or aggregate data. O comportamento desejado é ter relatórios simples e não organismos complexos que precisam examinar muitas coisas para inferir quais informações enviar.The desired behavior is to have simple reporters, and not complex organisms that need to look at many things to infer what information to send.

Para enviar dados de integridade para o repositório de integridade, um reporter precisa identificar a entidade afetada e criar um relatório de integridade.To send health data to the health store, a reporter needs to identify the affected entity and create a health report. Para enviar o relatório, use a API FabricClient. HealthClient. ReportHealth , as APIs de integridade de Partition relatório expostas nos objetos ou CodePackageActivationContext , cmdlets do PowerShell ou REST.To send the report, use the FabricClient.HealthClient.ReportHealth API, report health APIs exposed on the Partition or CodePackageActivationContext objects, PowerShell cmdlets, or REST.

Relatórios de integridadeHealth reports

Os relatórios de integridade para cada uma das entidades no cluster contêm as seguintes informações:The health reports for each of the entities in the cluster contain the following information:

  • SourceId.SourceId. Uma cadeia de caracteres que identifica exclusivamente o reporter do evento de integridade.A string that uniquely identifies the reporter of the health event.

  • Identificador de entidade.Entity identifier. Identifica a entidade em que o relatório é aplicado.Identifies the entity where the report is applied. Ele difere com base no tipo de entidade:It differs based on the entity type:

    • Em.Cluster. Nenhum.None.
    • Nó.Node. Nome do nó (cadeia de caracteres).Node name (string).
    • Aplicativo.Application. Nome do aplicativo (URI).Application name (URI). Representa o nome da instância do aplicativo implantada no cluster.Represents the name of the application instance deployed in the cluster.
    • Serviço.Service. Nome do serviço (URI).Service name (URI). Representa o nome da instância de serviço implantada no cluster.Represents the name of the service instance deployed in the cluster.
    • Particion.Partition. ID da partição (GUID).Partition ID (GUID). Representa o identificador exclusivo da partição.Represents the partition unique identifier.
    • Replica.Replica. A ID da réplica do serviço com estado ou a ID da instância de serviço sem estado (INT64).The stateful service replica ID or the stateless service instance ID (INT64).
    • DeployedApplication.DeployedApplication. Nome do aplicativo (URI) e nome do nó (cadeia de caracteres).Application name (URI) and node name (string).
    • DeployedServicePackage.DeployedServicePackage. Nome do aplicativo (URI), nome do nó (cadeia de caracteres) e nome do manifesto do serviço (cadeia de caracteres).Application name (URI), node name (string), and service manifest name (string).
  • Propriedade.Property. Uma cadeia de caracteres (não uma enumeração fixa) que permite ao reporter categorizar o evento de integridade para uma propriedade específica da entidade.A string (not a fixed enumeration) that allows the reporter to categorize the health event for a specific property of the entity. Por exemplo, o reporter A pode relatar a integridade da propriedade "Storage" do Node01 e o reporter B pode relatar a integridade da propriedade "Connectivity" do Node01.For example, reporter A can report the health of the Node01 "Storage" property and reporter B can report the health of the Node01 "Connectivity" property. No repositório de integridade, esses relatórios são tratados como eventos de integridade separados para a entidade Node01.In the health store, these reports are treated as separate health events for the Node01 entity.

  • Descrição.Description. Uma cadeia de caracteres que permite a um relator fornecer informações detalhadas sobre o evento de integridade.A string that allows a reporter to provide detailed information about the health event. SourceID, Propertye HealthState devem descrever totalmente o relatório.SourceId, Property, and HealthState should fully describe the report. A descrição adiciona informações legíveis ao relatório.The description adds human-readable information about the report. O texto torna mais fácil para os administradores e usuários entenderem o relatório de integridade.The text makes it easier for administrators and users to understand the health report.

  • HealthState.HealthState. Uma Enumeração que descreve o estado de integridade do relatório.An enumeration that describes the health state of the report. Os valores aceitos são OK, Warning e Error.The accepted values are OK, Warning, and Error.

  • TimeToLive.TimeToLive. Um TimeSpan que indica por quanto tempo o relatório de integridade é válido.A timespan that indicates how long the health report is valid. Junto com RemoveWhenExpired, ele permite que o repositório de integridade saiba como avaliar eventos expirados.Coupled with RemoveWhenExpired, it lets the health store know how to evaluate expired events. Por padrão, o valor é infinito e o relatório é válido para sempre.By default, the value is infinite, and the report is valid forever.

  • RemoveWhenExpired.RemoveWhenExpired. Um booliano.A boolean. Se definido como true, o relatório de integridade expirado será removido automaticamente do repositório de integridade e o relatório não afetará a avaliação da integridade da entidade.If set to true, the expired health report is automatically removed from the health store, and the report doesn't impact entity health evaluation. Usado quando o relatório é válido apenas por um período de tempo especificado, e o reporter não precisa limpá-lo explicitamente. Ele também é usado para excluir relatórios do repositório de integridade (por exemplo, um Watchdog é alterado e para de enviar relatórios com a origem e a propriedade anteriores).Used when the report is valid for a specified period of time only, and the reporter doesn't need to explicitly clear it out. It's also used to delete reports from the health store (for example, a watchdog is changed and stops sending reports with previous source and property). Ele pode enviar um relatório com um breve TimeToLive junto com o RemoveWhenExpired para limpar qualquer estado anterior do repositório de integridade.It can send a report with a brief TimeToLive along with RemoveWhenExpired to clear up any previous state from the health store. Se o valor for definido como false, o relatório expirado será tratado como um erro na avaliação de integridade.If the value is set to false, the expired report is treated as an error on the health evaluation. O valor falso sinaliza para o repositório de integridade que a origem deve relatar periodicamente sobre essa propriedade.The false value signals to the health store that the source should report periodically on this property. Caso contrário, deve haver algo errado com o Watchdog.If it doesn't, then there must be something wrong with the watchdog. A integridade do Watchdog é capturada considerando-se o evento como um erro.The watchdog's health is captured by considering the event as an error.

  • SequenceNumber.SequenceNumber. Um inteiro positivo que precisa estar cada vez maior, representa a ordem dos relatórios.A positive integer that needs to be ever-increasing, it represents the order of the reports. Ele é usado pelo repositório de integridade para detectar relatórios obsoletos que são recebidos tardiamente devido a atrasos na rede ou outros problemas.It is used by the health store to detect stale reports that are received late because of network delays or other issues. Um relatório será rejeitado se o número de sequência for menor ou igual ao número aplicado mais recentemente para a mesma entidade, origem e propriedade.A report is rejected if the sequence number is less than or equal to the most recently applied number for the same entity, source, and property. Se não for especificado, o número de sequência será gerado automaticamente.If it is not specified, the sequence number is generated automatically. É necessário colocar o número de sequência somente ao relatar transições de estado.It is necessary to put in the sequence number only when reporting on state transitions. Nessa situação, a origem precisa lembrar quais relatórios foram enviados e manter as informações para recuperação no failover.In this situation, the source needs to remember which reports it sent and keep the information for recovery on failover.

Essas quatro informações-SourceID, identificador de entidade, propriedade e HealthState – são necessárias para cada relatório de integridade.These four pieces of information--SourceId, entity identifier, Property, and HealthState--are required for every health report. A cadeia de caracteres SourceID não pode iniciar com o prefixo "System. ", que é reservado para relatórios do sistema.The SourceId string is not allowed to start with the prefix "System.", which is reserved for system reports. Para a mesma entidade, há apenas um relatório para a mesma fonte e propriedade.For the same entity, there is only one report for the same source and property. Vários relatórios para a mesma origem e propriedade substituem uns aos outros, seja no lado do cliente de integridade (se estiverem em lotes) ou no lado do repositório de integridade.Multiple reports for the same source and property override each other, either on the health client side (if they are batched) or on the health store side. A substituição é baseada em números de sequência; os relatórios mais recentes (com números de sequência mais altos) substituem os relatórios mais antigos.The replacement is based on sequence numbers; newer reports (with higher sequence numbers) replace older reports.

Eventos de integridadeHealth events

Internamente, o repositório de integridade mantém os eventos de integridade, que contêm todas as informações dos relatórios e os metadados adicionais.Internally, the health store keeps health events, which contain all the information from the reports, and additional metadata. Os metadados incluem a hora em que o relatório foi fornecido ao cliente de integridade e a hora em que ele foi modificado no lado do servidor.The metadata includes the time the report was given to the health client and the time it was modified on the server side. Os eventos de integridade são retornados por consultas de integridade.The health events are returned by health queries.

Os metadados adicionados contêm:The added metadata contains:

  • SourceUtcTimestamp.SourceUtcTimestamp. A hora em que o relatório foi fornecido ao cliente de integridade (tempo Universal Coordenado).The time the report was given to the health client (Coordinated Universal Time).
  • LastModifiedUtcTimestamp.LastModifiedUtcTimestamp. A hora em que o relatório foi modificado pela última vez no lado do servidor (tempo Universal Coordenado).The time the report was last modified on the server side (Coordinated Universal Time).
  • IsExpired.IsExpired. Um sinalizador para indicar se o relatório expirou quando a consulta foi executada pelo repositório de integridade.A flag to indicate whether the report was expired when the query was executed by the health store. Um evento pode ser expirado somente se RemoveWhenExpired for false.An event can be expired only if RemoveWhenExpired is false. Caso contrário, o evento não será retornado pela consulta e será removido do repositório.Otherwise, the event is not returned by query and is removed from the store.
  • LastOkTransitionAt, LastWarningTransitionAt, LastErrorTransitionAt.LastOkTransitionAt, LastWarningTransitionAt, LastErrorTransitionAt. A última hora para transições de OK/aviso/erro.The last time for OK/warning/error transitions. Esses campos fornecem o histórico das transições de estado de integridade para o evento.These fields give the history of the health state transitions for the event.

Os campos de transição de estado podem ser usados para alertas mais inteligentes ou informações de eventos de integridade "históricas".The state transition fields can be used for smarter alerts or "historical" health event information. Eles permitem cenários como:They enable scenarios such as:

  • Alertar quando uma propriedade estiver em aviso/erro por mais de X minutos.Alert when a property has been at warning/error for more than X minutes. A verificação da condição por um período de tempo evita alertas em condições temporárias.Checking the condition for a period of time avoids alerts on temporary conditions. Por exemplo, um alerta se o estado de integridade tiver sido aviso por mais de cinco minutos pode ser convertido em (HealthState = = Warning e Now-LastWarningTransitionTime > 5 minutos).For example, an alert if the health state has been warning for more than five minutes can be translated into (HealthState == Warning and Now - LastWarningTransitionTime > 5 minutes).
  • Alertar somente em condições que foram alteradas nos últimos X minutos.Alert only on conditions that have changed in the last X minutes. Se um relatório já estava em erro antes da hora especificada, ele pode ser ignorado porque já estava sinalizado anteriormente.If a report was already at error before the specified time, it can be ignored because it was already signaled previously.
  • Se uma propriedade estiver alternando entre aviso e erro, determine por quanto tempo ele não está íntegro (ou seja, não OK).If a property is toggling between warning and error, determine how long it has been unhealthy (that is, not OK). Por exemplo, um alerta se a propriedade não tiver sido íntegra por mais de cinco minutos pode ser convertida em (HealthState! = OK e Now-LastOkTransitionTime > 5 minutos).For example, an alert if the property hasn't been healthy for more than five minutes can be translated into (HealthState != Ok and Now - LastOkTransitionTime > 5 minutes).

Exemplo: Relatar e avaliar a integridade do aplicativoExample: Report and evaluate application health

O exemplo a seguir envia um relatório de integridade por meio do PowerShell no Application Fabric:/WordCount da fonte mywatchdog.The following example sends a health report through PowerShell on the application fabric:/WordCount from the source MyWatchdog. O relatório de integridade contém informações sobre a propriedade de integridade "disponibilidade" em um estado de integridade de erro, com TimeToLive infinito.The health report contains information about the health property "availability" in an error health state, with infinite TimeToLive. Em seguida, ele consulta a integridade do aplicativo, que retorna erros de estado de integridade agregados e os eventos de integridade relatados na lista de eventos de integridade.Then it queries the application health, which returns aggregated health state errors and the reported health events in the list of health events.

PS C:\> Send-ServiceFabricApplicationHealthReport –ApplicationName fabric:/WordCount –SourceId "MyWatchdog" –HealthProperty "Availability" –HealthState Error

PS C:\> Get-ServiceFabricApplicationHealth fabric:/WordCount -ExcludeHealthStatistics


ApplicationName                 : fabric:/WordCount
AggregatedHealthState           : Error
UnhealthyEvaluations            :
                                  Error event: SourceId='MyWatchdog', Property='Availability'.

ServiceHealthStates             :
                                  ServiceName           : fabric:/WordCount/WordCountService
                                  AggregatedHealthState : Error

                                  ServiceName           : fabric:/WordCount/WordCountWebService
                                  AggregatedHealthState : Ok

DeployedApplicationHealthStates :
                                  ApplicationName       : fabric:/WordCount
                                  NodeName              : _Node_0
                                  AggregatedHealthState : Ok

                                  ApplicationName       : fabric:/WordCount
                                  NodeName              : _Node_2
                                  AggregatedHealthState : Ok

                                  ApplicationName       : fabric:/WordCount
                                  NodeName              : _Node_3
                                  AggregatedHealthState : Ok

                                  ApplicationName       : fabric:/WordCount
                                  NodeName              : _Node_4
                                  AggregatedHealthState : Ok

                                  ApplicationName       : fabric:/WordCount
                                  NodeName              : _Node_1
                                  AggregatedHealthState : Ok

HealthEvents                    :
                                  SourceId              : System.CM
                                  Property              : State
                                  HealthState           : Ok
                                  SequenceNumber        : 360
                                  SentAt                : 3/22/2016 7:56:53 PM
                                  ReceivedAt            : 3/22/2016 7:56:53 PM
                                  TTL                   : Infinite
                                  Description           : Application has been created.
                                  RemoveWhenExpired     : False
                                  IsExpired             : False
                                  Transitions           : Error->Ok = 3/22/2016 7:56:53 PM, LastWarning = 1/1/0001 12:00:00 AM

                                  SourceId              : MyWatchdog
                                  Property              : Availability
                                  HealthState           : Error
                                  SequenceNumber        : 131032204762818013
                                  SentAt                : 3/23/2016 3:27:56 PM
                                  ReceivedAt            : 3/23/2016 3:27:56 PM
                                  TTL                   : Infinite
                                  Description           :
                                  RemoveWhenExpired     : False
                                  IsExpired             : False
                                  Transitions           : Ok->Error = 3/23/2016 3:27:56 PM, LastWarning = 1/1/0001 12:00:00 AM

Uso do modelo de integridadeHealth model usage

O modelo de integridade permite que os serviços de nuvem e a plataforma de Service Fabric subjacente sejam dimensionados, pois as determinações de monitoramento e integridade são distribuídas entre os diferentes monitores no cluster.The health model allows cloud services and the underlying Service Fabric platform to scale, because monitoring and health determinations are distributed among the different monitors within the cluster. Outros sistemas têm um único serviço centralizado no nível de cluster que analisa todas as informações potencialmente úteis emitidas pelos serviços.Other systems have a single, centralized service at the cluster level that parses all the potentially useful information emitted by services. Essa abordagem prejudica sua escalabilidade.This approach hinders their scalability. Ele também não permite que eles coletem informações específicas para ajudar a identificar problemas e problemas potenciais o mais próximo possível da causa raiz.It also doesn't allow them to collect specific information to help identify issues and potential issues as close to the root cause as possible.

O modelo de integridade é muito usado para monitoramento e diagnóstico, para avaliar a integridade do cluster e do aplicativo e para atualizações monitoradas.The health model is used heavily for monitoring and diagnosis, for evaluating cluster and application health, and for monitored upgrades. Outros serviços usam dados de integridade para executar reparos automáticos, criar histórico de integridade de cluster e emitir alertas em determinadas condições.Other services use health data to perform automatic repairs, build cluster health history, and issue alerts on certain conditions.

Passos SeguintesNext steps

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

Usar relatórios de integridade do sistema para solução de problemasUse system health reports for troubleshooting

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

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

Monitorar e diagnosticar serviços localmenteMonitor and diagnose services locally

Atualização do aplicativo Service FabricService Fabric application upgrade