Einführung in die Service Fabric-IntegritätsüberwachungIntroduction to Service Fabric health monitoring

Mit Azure Service Fabric wird ein Integritätsmodell eingeführt, das eine umfassende, flexible und erweiterbare Integritätsevaluierung und -berichterstellung bietet.Azure Service Fabric introduces a health model that provides rich, flexible, and extensible health evaluation and reporting. Mithilfe dieses Modells lässt sich der Zustand des Clusters und der darin ausgeführten Dienste nahezu in Echtzeit überwachen.The model allows near-real-time monitoring of the state of the cluster and the services running in it. Sie können mühelos Integritätsdaten ermitteln und potenzielle Probleme beheben, bevor sie sich ausbreiten und umfangreiche Ausfälle verursachen.You can easily obtain health information and correct potential issues before they cascade and cause massive outages. In einem typischen Modell senden die Dienste Berichte basierend auf ihren lokalen Informationen. Anhand dieser Informationen wird ein Gesamtüberblick auf Clusterebene erstellt.In the typical model, services send reports based on their local views, and that information is aggregated to provide an overall cluster-level view.

Die Service Fabric-Komponenten verwenden dieses umfangreiche Integritätsmodell, um ihren aktuellen Zustand zu melden.Service Fabric components use this rich health model to report their current state. Sie können den gleichen Mechanismus verwenden, um Integritätsberichte für Anwendungen zu erstellen.You can use the same mechanism to report health from your applications. Wenn Sie in hochwertige Integritätsberichte zur Erfassung Ihrer individuellen Bedingungen investieren, können Sie Probleme für Ihre ausgeführte Anwendung viel leichter erkennen und beheben.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.

Hinweis

Das Integritätssubsystem wurde ursprünglich für das Überwachen von Upgrades eingeführt.We started the health subsystem to address a need for monitored upgrades. Service Fabric bietet überwachte Anwendungs- und Clusterupgrades mit uneingeschränkter Verfügbarkeit, ohne Ausfallzeit und mit minimaler oder sogar ganz ohne Benutzerinteraktion.Service Fabric provides monitored application and cluster upgrades that ensure full availability, no downtime and minimal to no user intervention. Um diese Ziele zu erreichen, überprüft das Upgrade die Integrität anhand der konfigurierten Aktualisierungsrichtlinien.To achieve these goals, the upgrade checks health based on configured upgrade policies. Ein Upgrade kann nur dann fortgesetzt werden, wenn die gewünschten Schwellenwerte für die Integrität berücksichtigt werden.An upgrade can proceed only when health respects desired thresholds. Werden die Schwellenwerte nicht erfüllt, wird entweder automatisch ein Rollback des Upgrades durchgeführt oder das Upgrade angehalten, damit Administratoren das Problem beheben können.Otherwise, the upgrade is either automatically rolled back or paused to give administrators a chance to fix the issues. Weitere Informationen zu Anwendungsupgrades finden Sie in diesem Artikel.To learn more about application upgrades, see this article.

IntegritätsspeicherHealth store

Der Integritätsspeicher speichert integritätsbezogene Informationen zu Entitäten im Cluster, um Informationen auf einfache Weise abrufen und evaluieren zu können.The health store keeps health-related information about entities in the cluster for easy retrieval and evaluation. Er ist als persistent zustandsbehafteter Service Fabric-Dienst implementiert, um Hochverfügbarkeit und Skalierbarkeit zu bieten.It is implemented as a Service Fabric persisted stateful service to ensure high availability and scalability. Der Integritätsspeicher ist Teil der Anwendung fabric:/System und verfügbar, sobald der Cluster eingerichtet wurde und ausgeführt wird.The health store is part of the fabric:/System application, and it is available when the cluster is up and running.

Integritätsentitäten und HierarchieHealth entities and hierarchy

Die Integritätsentitäten werden in einer logischen Hierarchie organisiert, die Interaktionen und Abhängigkeiten zwischen verschiedenen Entitäten erfasst.The health entities are organized in a logical hierarchy that captures interactions and dependencies among different entities. Der Integritätsspeicher erstellt die Entitäten und die Hierarchie basierend auf den von den Service Fabric-Komponenten gesendeten Berichten automatisch.The health store automatically builds health entities and hierarchy based on reports received from Service Fabric components.

Die Integritätsentitäten spiegeln die Service Fabric-Entitäten wider.The health entities mirror the Service Fabric entities. (Beispielsweise entspricht die Integritätsentität einer Anwendung einer im Cluster bereitgestellten Anwendungsinstanz, und die Integritätsentität eines Knotens entspricht einem Service Fabric-Clusterknoten.) Die Integritätshierarchie erfasst die Interaktionen der Systementitäten, und dies ist die Grundlage für die erweiterte Integritätsevaluierung.(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. Informationen zu den grundlegenden Service Fabric-Konzepten finden Sie unter Technische Übersicht über Service Fabric.You can learn about key Service Fabric concepts in Service Fabric technical overview. Weitere Informationen zu Anwendungen finden Sie unter Service Fabric-Anwendungsmodell.For more on application, see Service Fabric application model.

Die Integritätsentitäten und die Hierarchie ermöglichen das effektive Melden, Debuggen und Überwachen des Clusters und der Anwendungen.The health entities and hierarchy allow the cluster and applications to be effectively reported, debugged, and monitored. Das Integritätsmodell ermöglicht eine exakte, differenzierte Darstellung der Integrität der zahlreichen beweglichen Bestandteile eines Clusters.The health model provides an accurate, granular representation of the health of the many moving pieces in the cluster.

Integritätsentitäten.Health entities. In einer Hierarchie organisierte Integritätsentitäten, basierend auf Beziehungen zwischen übergeordneten und untergeordneten Elementen.The health entities, organized in a hierarchy based on parent-child relationships.

Zu den Integritätsentitäten zählen Folgende:The health entities are:

  • Cluster.Cluster. Stellt die Integrität eines Service Fabric-Clusters dar.Represents the health of a Service Fabric cluster. Clusterintegritätsberichte beschreiben Bedingungen, die Auswirkungen auf den gesamten Cluster haben.Cluster health reports describe conditions that affect the entire cluster. Diese Bedingungen wirken sich auf mehrere Entitäten im Cluster oder auf den Cluster selbst aus.These conditions affect multiple entities in the cluster or the cluster itself. Aufgrund des Zustands kann der Reporter das Problem nicht auf ein oder mehrere fehlerhafte untergeordnete Elemente eingrenzen.Based on the condition, the reporter can't narrow the issue down to one or more unhealthy children. Beispiele hierfür sind das Split-Brain-Syndrom des Clusters aufgrund von Problemen mit der Netzwerkpartitionierung oder der Kommunikation.Examples include the brain of the cluster splitting due to network partitioning or communication issues.
  • Node:Node. Stellt die Integrität eines Service Fabric-Knotens dar.Represents the health of a Service Fabric node. In Knotenintegritätsberichten werden Bedingungen beschrieben, die sich auf die Knotenfunktionen auswirken.Node health reports describe conditions that affect the node functionality. Sie wirken sich normalerweise auf alle bereitgestellten Entitäten aus, die darauf ausgeführt werden.They typically affect all the deployed entities running on it. Beispiele hierfür sind Knoten ohne verbleibenden Festplattenplatz (oder andere computerweite Eigenschaften, z.B. Arbeitsspeicher, Verbindungen) oder der Ausfall eines Knotens.Examples include node out of disk space (or other machine-wide properties, such as memory, connections) and when a node is down. Die Knotenentität wird anhand des Knotennamens (Zeichenfolge) identifiziert.The node entity is identified by the node name (string).
  • Anwendung.Application. Stellt die Integrität einer im Cluster ausgeführten Anwendungsinstanz dar.Represents the health of an application instance running in the cluster. In Berichten zur Anwendungsintegrität werden Bedingungen beschrieben, die sich auf die Gesamtintegrität der Anwendung auswirken.Application health reports describe conditions that affect the overall health of the application. Sie können nicht auf einzelne untergeordnete Elemente (Dienste oder bereitgestellte Anwendungen) eingegrenzt werden.They can't be narrowed down to individual children (services or deployed applications). Ein Beispiel hierfür ist die End-to-End-Interaktion zwischen verschiedenen Diensten in der Anwendung.Examples include the end-to-end interaction among different services in the application. Die Anwendungsentität wird anhand des Anwendungsnamens (URI) identifiziert.The application entity is identified by the application name (URI).
  • Dienst.Service. Stellt die Integrität eines im Cluster ausgeführten Diensts dar.Represents the health of a service running in the cluster. In Berichten zur Dienstintegrität werden Bedingungen beschrieben, die sich auf die Gesamtintegrität des Diensts auswirken.Service health reports describe conditions that affect the overall health of the service. Der Reporter kann das Problem nicht auf eine fehlerhafte Partition oder ein fehlerhaftes Replikat eingrenzen.The reporter can't narrow down the issue to an unhealthy partition or replica. Ein Beispiel hierfür ist eine Dienstkonfiguration (z. B. ein Port oder eine externe Dateifreigabe), die in allen Partitionen Probleme verursacht.Examples include a service configuration (such as port or external file share) that is causing issues for all partitions. Die Dienstentität wird anhand des Dienstnamens (URI) identifiziert.The service entity is identified by the service name (URI).
  • Partition.Partition. Stellt die Integrität einer Dienstpartition dar.Represents the health of a service partition. Partitionsintegritätsberichte beschreiben Bedingungen, die Auswirkungen auf die gesamte Replikatgruppe haben.Partition health reports describe conditions that affect the entire replica set. Beispiele hierfür sind eine Anzahl der Replikate unterhalb der Zielanzahl und eine Partition mit Quorumverlust.Examples include when the number of replicas is below target count and when a partition is in quorum loss. Die Entität für die Partition wird anhand der Partitions-ID (GUID) identifiziert.The partition entity is identified by the partition ID (GUID).
  • Replica: Stellt die Integrität eines zustandsbehafteten Dienstreplikats oder einer zustandslosen Dienstinstanz dar.Replica. Dies ist die kleinste Einheit einer Anwendung, für die Watchdogs und Systemkomponenten Berichte erstellen können.Represents the health of a stateful service replica or a stateless service instance. Das Replikat ist die kleinste Einheit, für das Watchdogs und Systemkomponenten Berichte für eine Anwendung erstellen können.The replica is the smallest unit that watchdogs and system components can report on for an application. Beispiele für zustandsbehaftete Dienste sind ein primäres Replikat, das Vorgänge nicht an sekundäre Replikate replizieren kann, oder eine langsame Replikation.For stateful services, examples include a primary replica that can't replicate operations to secondaries and slow replication. Die Replikatentität wird anhand der Partitions-ID (GUID) und der Replikat- bzw.Also, a stateless instance can report when it is running out of resources or has connectivity issues. Instanz-ID (lang) identifiziert.The replica entity is identified by the partition ID (GUID) and the replica or instance ID (long).
  • DeployedApplication.DeployedApplication. Stellt die Integrität einer auf einem Knoten ausgeführten Anwendung dar.Represents the health of an application running on a node. Integritätsberichte zu bereitgestellten Anwendungen beschreiben Bedingungen, die sich auf die Anwendung auf dem Knoten beziehen; das Eingrenzen auf Dienstpakete, die im gleichen Knoten bereitgestellt sind, ist nicht möglich.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. Beispiele: Fehler, wenn das Anwendungspaket nicht auf den Knoten heruntergeladen werden kann, oder Probleme beim Einrichten der Sicherheitsprinzipale der Anwendung auf dem Knoten.Examples include errors when application package can't be downloaded on that node and issues setting up application security principals on the node. Die bereitgestellte Anwendung wird anhand des Anwendungsnamens (URI) und des Knotennamens (Zeichenfolge) identifiziert.The deployed application is identified by application name (URI) and node name (string).
  • DeployedServicePackage.DeployedServicePackage. Stellt die Integrität des Dienstpakets dar, das auf einem Knoten im Cluster ausgeführt wird.Represents the health of a service package running on a node in the cluster. Es beschreibt Bedingungen, die sich auf das Dienstpaket beziehen und keine Auswirkungen auf andere Dienstpakete haben, die für die gleiche Anwendung auf demselben Knoten bereitgestellt sind.It describes conditions specific to a service package that do not affect the other service packages on the same node for the same application. Beispiele hierfür sind ein Codepaket im Dienstpaket, das nicht gestartet werden kann, und ein Konfigurationspaket, das nicht gelesen werden kann.Examples include a code package in the service package that cannot be started and a configuration package that cannot be read. Das bereitgestellte Dienstpaket wird anhand von Anwendungsname (URI), Knotenname (Zeichenfolge), Dienstmanifestname (Zeichenfolge) und Dienstpaketaktivierungs-ID (Zeichenfolge) identifiziert.The deployed service package is identified by application name (URI), node name (string), service manifest name (string), and service package activation ID (string).

Die Granularität des Integritätsmodells erleichtert das Erkennen und Beheben von Problemen.The granularity of the health model makes it easy to detect and correct issues. Wenn ein Dienst beispielsweise nicht reagiert, kann gemeldet werden, dass die Anwendungsinstanz nicht „integer“ (also fehlerhaft) ist.For example, if a service is not responding, it is feasible to report that the application instance is unhealthy. Eine Berichterstellung auf dieser Ebene ist nicht optimal, da das Problem unter Umständen nicht alle Dienste innerhalb dieser Anwendung betrifft.Reporting at that level is not ideal, however, because the issue might not be affecting all the services within that application. Der Bericht sollte auf den fehlerhaften Dienst oder eine bestimmte untergeordnete Partition angewendet werden, falls weitere Informationen auf diese Partition hindeuten.The report should be applied to the unhealthy service or to a specific child partition, if more information points to that partition. Die Daten werden automatisch in der Hierarchie angezeigt, und eine fehlerhafte Partition wird auf Dienst- und Anwendungsebene sichtbar gemacht.The data automatically surfaces through the hierarchy, and an unhealthy partition is made visible at service and application levels. Durch diese Aggregierung kann die zugrunde liegende Ursache des Problems schneller ermittelt und behoben werden.This aggregation helps to pinpoint and resolve the root cause of the issue more quickly.

Die Integritätshierarchie besteht aus Beziehungen zwischen übergeordneten und untergeordneten Elementen.The health hierarchy is composed of parent-child relationships. Ein Cluster besteht aus Knoten und Anwendungen.A cluster is composed of nodes and applications. Anwendungen verfügen über Dienste und bereitgestellte Anwendungen.Applications have services and deployed applications. Bereitgestellte Anwendungen verfügen über bereitgestellte Pakete.Deployed applications have deployed service packages. Dienste verfügen über Partitionen, wobei jede Partition über ein oder mehrere Replikate verfügt.Services have partitions, and each partition has one or more replicas. Zwischen Knoten und bereitgestellten Entitäten besteht eine besondere Beziehung.There is a special relationship between nodes and deployed entities. Ein von der übergeordneten Systemkomponente (Failover-Manager-Dienst) als fehlerhaft gemeldeter Knoten hat Auswirkungen auf die darauf bereitgestellten Anwendungen, Dienstpakete und Replikate.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.

Die Integritätshierarchie stellt den aktuellen Zustand des Systems basierend auf den aktuellen Integritätsberichten dar, d. h., die Informationen sind nahezu in Echtzeit verfügbar.The health hierarchy represents the latest state of the system based on the latest health reports, which is almost real-time information. Interne und externe Watchdogs können auf der Grundlage von anwendungsspezifischer Logik oder benutzerdefinierten überwachten Bedingungen Berichte zu den gleichen Entitäten erstellen.Internal and external watchdogs can report on the same entities based on application-specific logic or custom monitored conditions. Benutzerberichte können zusammen mit den Systemberichten verwendet werden.User reports coexist with the system reports.

Setzen Sie sich bei der Gestaltung eines umfangreichen Clouddiensts mit der Frage auseinander, wie Integritätsprobleme gemeldet und behandelt werden sollen.Plan to invest in how to report and respond to health during the design of a large cloud service. Diese vorab geleistete Investition vereinfacht das Debuggen, die Überwachung und den Betrieb des Diensts.This up-front investment makes the service easier to debug, monitor, and operate.

IntegritätszuständeHealth states

Service Fabric verwendet drei Zustände, um die Integrität einer Entität zu beschreiben: „OK“, „Warning“ und „Error“.Service Fabric uses three health states to describe whether an entity is healthy or not: OK, warning, and error. In jedem Bericht, der an den Integritätsspeicher gesendet wird, ist einer der Zustände angegeben.Any report sent to the health store must specify one of these states. Das Ergebnis der Integritätsevaluierung ist einer dieser Zustände.The health evaluation result is one of these states.

Mögliche Integritätszustände :The possible health states are:

  • OK.OK. Die Entität ist fehlerfrei.The entity is healthy. Es wurden keine bekannten Probleme für das Element oder eines seiner untergeordneten Elemente (falls zutreffend) gemeldet.There are no known issues reported on it or its children (when applicable).
  • Warnung.Warning. Die Entität weist einige Probleme auf, kann jedoch weiterhin ordnungsgemäß funktionieren.The entity has some issues, but it can still function correctly. Beispiel: Es treten Verzögerungen auf, diese bewirken jedoch bislang noch keine Funktionsprobleme.For example, there are delays, but they do not cause any functional issues yet. In einigen Fällen kann die Warnungsbedingung ohne externe Eingriffe von selbst aufgehoben werden.In some cases, the warning condition may fix itself without external intervention. In diesen Fällen bewirken Integritätsberichte die Bekanntgabe des Problems und bieten Einblicke in die stattfindenden Vorgänge.In these cases, health reports raise awareness and provide visibility into what is going on. In anderen Fällen kann sich die Warnungsbedingung ohne Benutzereingriff zu einem schwerwiegenden Problem entwickeln.In other cases, the warning condition may degrade into a severe problem without user intervention.
  • Error.Error. Die Entität ist fehlerhaft.The entity is unhealthy. Eine fehlerhafte Entität funktioniert nicht richtig, und der fehlerhafte Zustand der Entität muss durch einen Benutzereingriff behoben werden.Action should be taken to fix the state of the entity, because it can't function properly.
  • Unknown.Unknown. Die Entität ist im Integritätsspeicher nicht vorhanden.The entity doesn't exist in the health store. Dieses Ergebnis kann über die verteilten Abfragen abgerufen werden, mit denen Ergebnisse mehrerer Komponenten zusammengeführt werden.This result can be obtained from the distributed queries that merge results from multiple components. Die Abfrage zum Abrufen der Knotenliste wird beispielsweise an FailoverManager, ClusterManager und HealthManager gesendet, die Abfrage zum Abrufen der Anwendungsliste dagegen wird an ClusterManager und HealthManager gesendet.For example, the get node list query goes to FailoverManager, ClusterManager, and HealthManager; get application list query goes to ClusterManager and HealthManager. Diese Abfragen führen die Ergebnisse aus mehreren Systemkomponenten zusammen.These queries merge results from multiple system components. Gibt eine andere Systemkomponente eine Entität zurück, die im Integritätsspeicher nicht vorhanden ist, besitzt das zusammengeführte Ergebnis einen unbekannten Integritätszustand.If another system component returns an entity that is not present in health store, the merged result has unknown health state. Eine Entität befindet sich nicht im Speicher, da Integritätsberichte noch nicht verarbeitet wurden oder die Entität nach dem Löschen bereinigt wurde.An entity is not in store because health reports have not yet been processed or the entity has been cleaned up after deletion.

IntegritätsrichtlinienHealth policies

Der Integritätsspeicher wendet Integritätsrichtlinien an, um basierend auf den Berichten und untergeordneten Elementen einer Entität festzustellen, ob die Entität fehlerfrei ist.The health store applies health policies to determine whether an entity is healthy based on its reports and its children.

Hinweis

Integritätsrichtlinien werden im Clustermanifest (für die Integritätsevaluierung von Cluster und Knoten) oder im Anwendungsmanifest (für die Evaluierung einer Anwendung und der untergeordneten Elemente) angegeben.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). Integritätsevaluierungsanforderungen können auch benutzerdefinierte Richtlinien zur Integritätsevaluierung übergeben, die nur für diese eine Evaluierung verwendet werden.Health evaluation requests can also pass in custom health evaluation policies, which are used only for that evaluation.

Standardmäßig wendet Service Fabric strenge Regeln (alles muss fehlerfrei sein) auf hierarchische Beziehungen von über- und untergeordneten Elementen an.By default, Service Fabric applies strict rules (everything must be healthy) for the parent-child hierarchical relationship. Wenn auch nur eines der untergeordneten Elemente ein fehlerhaftes Ereignis aufweist, wird das übergeordnete Element als fehlerhaft angesehen.If even one of the children has one unhealthy event, the parent is considered unhealthy.

ClusterintegritätsrichtlinieCluster health policy

Die Clusterintegritätsrichtlinie wird zum Auswerten des Integritätszustands des Clusters und der Knoten verwendet.The cluster health policy is used to evaluate the cluster health state and node health states. Die Richtlinie kann im Clustermanifest definiert werden.The policy can be defined in the cluster manifest. Falls sie nicht vorhanden ist, wird die Standardrichtlinie (keine Fehler zulässig) verwendet.If it is not present, the default policy (zero tolerated failures) is used. Die Clusterintegritätsrichtlinie enthält Folgendes:The cluster health policy contains:

  • ConsiderWarningAsError.ConsiderWarningAsError. Gibt an, ob während der Integritätsevaluierung Integritätsberichte mit dem Ergebnis „Warning“ als Fehler zu behandeln sind.Specifies whether to treat warning health reports as errors during health evaluation. Standardwert: false.Default: false.
  • MaxPercentUnhealthyApplications.MaxPercentUnhealthyApplications. Gibt den maximal tolerierten Prozentsatz an Anwendungen an, die fehlerhaft sein können, bevor der Cluster als fehlerhaft behandelt wird.Specifies the maximum tolerated percentage of applications that can be unhealthy before the cluster is considered in error.
  • MaxPercentUnhealthyNodes.MaxPercentUnhealthyNodes. Gibt den maximal tolerierten Prozentsatz an Knoten an, die fehlerhaft sein können, bevor der Cluster als fehlerhaft behandelt wird.Specifies the maximum tolerated percentage of nodes that can be unhealthy before the cluster is considered in error. Beim Konfigurieren dieses Prozentsatzes muss berücksichtigt werden, dass in großen Clustern immer einige Knoten inaktiv oder aufgrund von Wartungsarbeiten nicht verfügbar sind.In large clusters, some nodes are always down or out for repairs, so this percentage should be configured to tolerate that.
  • ApplicationTypeHealthPolicyMap.ApplicationTypeHealthPolicyMap. Die Zuordnung der Anwendungstyp-Integritätsrichtlinie kann während der Clusterintegritätsevaluierung verwendet werden, um spezielle Anwendungstypen zu beschreiben.The application type health policy map can be used during cluster health evaluation to describe special application types. Standardmäßig werden alle Anwendungen in einen Pool eingefügt und anhand von MaxPercentUnhealthyApplications bewertet.By default, all applications are put into a pool and evaluated with MaxPercentUnhealthyApplications. Sollte bei bestimmten Anwendungstypen eine abweichende Behandlung erforderlich sein, können diese vom globalen Pool ausgenommen werden.If some application types should be treated differently, they can be taken out of the global pool. Sie werden dann stattdessen auf der Grundlage der Prozentwerte bewertet, die dem Namen ihres Anwendungstyps in der Zuordnung zugeordnet sind.Instead, they are evaluated against the percentages associated with their application type name in the map. Beispielsweise enthält ein Cluster Tausende von Anwendungen mit unterschiedlichen Typen und wenige Steueranwendungsinstanzen eines besonderen Anwendungstyps.For example, in a cluster there are thousands of applications of different types, and a few control application instances of a special application type. Die Steueranwendungen dürfen niemals einen Fehlerstatus aufweisen.The control applications should never be in error. Sie können den globalen MaxPercentUnhealthyApplications-Wert auf 20 Prozent festlegen, um einige Fehler zu tolerieren, für den Anwendungstyp „ControlApplicationType“ muss der MaxPercentUnhealthyApplications-Wert jedoch auf „0“ festgelegt werden.You can specify global MaxPercentUnhealthyApplications to 20% to tolerate some failures, but for the application type "ControlApplicationType" set the MaxPercentUnhealthyApplications to 0. Wenn einige der zahlreichen Anwendungen fehlerhaft sind, aber unter dem globalen Prozentsatz für fehlerhafte Anwendungen liegen, wird der Cluster mit einer Warnung ausgewertet.This way, if some of the many applications are unhealthy, but below the global unhealthy percentage, the cluster would be evaluated to Warning. Der Integritätszustand „Warnung“ wirkt sich nicht auf ein Clusterupgrade oder auf andere Überwachungen aus, die durch den Integritätszustand „Fehler“ ausgelöst werden.A warning health state does not impact cluster upgrade or other monitoring triggered by Error health state. Weist aber auch nur eine einzelne Steueranwendung den Zustand „Fehler“ auf, ist der gesamte Cluster fehlerhaft, was je nach Upgradekonfiguration zu einem Rollback oder zum Anhalten des Clusters führt.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. Für die in der Zuordnung definierten Anwendungstypen werden alle Anwendungsinstanzen aus dem globalen Anwendungspool entfernt.For the application types defined in the map, all application instances are taken out of the global pool of applications. Sie werden anhand des speziellen MaxPercentUnhealthyApplications-Werts aus der Zuordnung basierend auf der Gesamtanzahl von Anwendungen des Anwendungstyps ausgewertet.They are evaluated based on the total number of applications of the application type, using the specific MaxPercentUnhealthyApplications from the map. Die restlichen Anwendungen verbleiben im globalen Pool und werden mit MaxPercentUnhealthyApplications ausgewertet.All the rest of the applications remain in the global pool and are evaluated with MaxPercentUnhealthyApplications.

Das folgende Beispiel zeigt einen Auszug aus einem Clustermanifest.The following example is an excerpt from a cluster manifest. Ordnen Sie dem Parameternamen „ApplicationTypeMaxPercentUnhealthyApplications-“ gefolgt von dem Namen des Anwendungstyps als Präfixe zu, um Einträge in der Anwendungstypzuordnung zu definieren.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>

AnwendungsintegritätsrichtlinieApplication health policy

Die Anwendungsintegritätsrichtlinie beschreibt, wie die Auswertung von Ereignissen und Aggregationen der Zustände von untergeordneten Elementen für eine Anwendung und ihre untergeordneten Elemente erfolgen soll.The application health policy describes how the evaluation of events and child-states aggregation is done for applications and their children. Diese Richtlinie kann im Anwendungsmanifest ( ApplicationManifest.xml) im Anwendungspaket definiert werden.It can be defined in the application manifest, ApplicationManifest.xml, in the application package. Wenn keine Richtlinien angegeben sind, geht Service Fabric davon aus, dass die Entität fehlerhaft ist, sofern sie über einen Integritätsbericht oder ein untergeordnetes Element mit dem Integritätsstatus „Warning“ oder „Error“ verfügt.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. Die folgenden Richtlinien sind konfigurierbar:The configurable policies are:

  • ConsiderWarningAsError.ConsiderWarningAsError. Gibt an, ob während der Integritätsevaluierung Integritätsberichte mit dem Ergebnis „Warning“ als Fehler zu behandeln sind.Specifies whether to treat warning health reports as errors during health evaluation. Standardwert: false.Default: false.
  • MaxPercentUnhealthyDeployedApplications.MaxPercentUnhealthyDeployedApplications. Gibt den maximal tolerierten Prozentsatz an bereitgestellten Anwendungen an, die fehlerhaft sein können, bevor eine Anwendung als fehlerhaft behandelt wird.Specifies the maximum tolerated percentage of deployed applications that can be unhealthy before the application is considered in error. Zur Berechnung dieses Prozentsatzes wird die Anzahl fehlerhafter bereitgestellter Anwendungen durch die Anzahl von Knoten geteilt, auf denen die Anwendungen derzeit im Cluster bereitgestellt sind.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. Die Berechnung wird aufgerundet, um einen Fehler auf einer kleinen Anzahl von Knoten zu tolerieren.The computation rounds up to tolerate one failure on small numbers of nodes. Standardprozentsatz : null.Default percentage: zero.
  • DefaultServiceTypeHealthPolicy.DefaultServiceTypeHealthPolicy. Gibt die standardmäßige Diensttyp-Integritätsrichtlinie an, die die Standardintegritätsrichtlinie für alle Diensttypen in der Anwendung ersetzt.Specifies the default service type health policy, which replaces the default health policy for all service types in the application.
  • ServiceTypeHealthPolicyMap.ServiceTypeHealthPolicyMap. Bietet eine Übersicht über Dienstintegritätsrichtlinien pro Diensttyp.Provides a map of service health policies per service type. Diese Richtlinien ersetzen die standardmäßigen Diensttyp-Integritätsrichtlinien für die angegebenen Diensttypen.These policies replace the default service type health policies for each specified service type. Wenn also beispielsweise eine Anwendung einen zustandslosen Gatewaydiensttyp und einen zustandsbehafteten Engine-Diensttyp besitzt, können Sie für deren Evaluierung unterschiedliche Integritätsrichtlinien konfigurieren.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. Wenn Sie die Richtlinie pro Diensttyp angeben, können Sie die Integrität des Diensts genauer steuern.When you specify policy per service type, you can gain more granular control of the health of the service.

Diensttyp-IntegritätsrichtlinieService type health policy

Die Diensttyp-Integritätsrichtlinie gibt an, wie die Dienste und die untergeordneten Elemente von Diensten ausgewertet und aggregiert werden sollen.The service type health policy specifies how to evaluate and aggregate the services and the children of services. Die Richtlinie enthält Folgendes:The policy contains:

  • MaxPercentUnhealthyPartitionsPerService.MaxPercentUnhealthyPartitionsPerService. Gibt den maximal tolerierten Prozentsatz an fehlerhaften Partitionen an, ab dem ein Dienst als fehlerhaft angesehen wird.Specifies the maximum tolerated percentage of unhealthy partitions before a service is considered unhealthy. Standardprozentsatz : null.Default percentage: zero.
  • MaxPercentUnhealthyReplicasPerPartition.MaxPercentUnhealthyReplicasPerPartition. Gibt den maximal tolerierten Prozentsatz an fehlerhaften Replikaten an, ab dem eine Partition als fehlerhaft angesehen wird.Specifies the maximum tolerated percentage of unhealthy replicas before a partition is considered unhealthy. Standardprozentsatz : null.Default percentage: zero.
  • MaxPercentUnhealthyServices.MaxPercentUnhealthyServices. Gibt den maximal tolerierten Prozentsatz an fehlerhaften Diensten an, ab dem eine Anwendung als fehlerhaft angesehen wird.Specifies the maximum tolerated percentage of unhealthy services before the application is considered unhealthy. Standardprozentsatz : null.Default percentage: zero.

Das folgende Beispiel zeigt einen Auszug aus einem Anwendungsmanifest: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>

IntegritätsevaluierungHealth evaluation

Benutzer und automatisierte Dienste können die Integrität einer beliebigen Entität jederzeit evaluieren.Users and automated services can evaluate health for any entity at any time. Um die Integrität einer Entität zu evaluieren, aggregiert der Integritätsspeicher alle Integritätsberichte für die Entität und wertet alle untergeordneten Elemente (falls zutreffend) aus.To evaluate an entity's health, the health store aggregates all health reports on the entity and evaluates all its children (when applicable). Der Algorithmus für die Integritätsaggregation verwendet Integritätsrichtlinien, die angeben, wie Integritätsberichte ausgewertet und die Zustände untergeordneter Elemente aggregiert werden sollen (falls zutreffend).The health aggregation algorithm uses health policies that specify how to evaluate health reports and how to aggregate child health states (when applicable).

Aggregation von IntegritätsberichtenHealth report aggregation

Eine Entität kann mehrere Integritätsberichte aufweisen, die von unterschiedlichen Berichterstattern (Systemkomponenten oder Watchdogs) für verschiedene Eigenschaften gesendet wurden.One entity can have multiple health reports sent by different reporters (system components or watchdogs) on different properties. Die Aggregation verwendet die zugehörigen Integritätsrichtlinien, insbesondere das ConsiderWarningAsError-Element einer Anwendungs- oder Clusterintegritätsrichtlinie.The aggregation uses the associated health policies, in particular the ConsiderWarningAsError member of application or cluster health policy. „ConsiderWarningAsError“ gibt an, wie Warnungen ausgewertet werden sollen.ConsiderWarningAsError specifies how to evaluate warnings.

Der aggregierte Integritätszustand wird durch die schlechtesten Integritätsberichte für die Entität ausgelöst.The aggregated health state is triggered by the worst health reports on the entity. Wenn mindestens ein Integritätsbericht mit dem Ergebnis „Error“ vorliegt, lautet der aggregierte Integritätszustand „Error“.If there is at least one error health report, the aggregated health state is an error.

Aggregation der Integritätsberichte mit Berichtergebnis „Error“

Eine Integritätsentität, für die mindestens ein Integritätsbericht mit dem Ergebnis „Error“ vorliegt, wird als fehlerhaft interpretiert.A health entity that has one or more error health reports is evaluated as Error. Gleiches gilt für einen abgelaufen Integritätsbericht (unabhängig von dessen Integritätszustand).The same is true for an expired health report, regardless of its health state.

Wenn keine Fehler berichtet werden und eine oder mehrere Warnungen vorliegen, lautet der aggregierte Integritätszustand je nach Flag der ConsiderWarningsAsError-Richtlinie entweder „Warning“ oder „Error“.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.

Aggregation der Integritätsberichte mit Berichtergebnis „Warning“ und der Einstellung „false“ für ConsiderWarningAsError

Aggregation der Integritätsberichte mit dem Ergebnis „Warning“ und der Einstellung „false“ (Standard) für ConsiderWarningAsErrorHealth report aggregation with warning report and ConsiderWarningAsError set to false (default).

Aggregation der untergeordneten IntegritätChild health aggregation

Der aggregierte Integritätszustand einer Entität spiegelt die Zustände der untergeordneten Elemente wider (falls zutreffend).The aggregated health state of an entity reflects the child health states (when applicable). Der Algorithmus zum Aggregieren von Integritätszuständen untergeordneter Elemente verwendet die Integritätsrichtlinien basierend auf dem Entitätstyp.The algorithm for aggregating child health states uses the health policies applicable based on the entity type.

Aggregation der Integrität untergeordneter Entitäten

Aggregation untergeordneter Elemente basierend auf IntegritätsrichtlinienChild aggregation based on health policies.

Nachdem der Integritätsspeicher alle untergeordneten Elemente ausgewertet hat, werden deren Integritätszustände auf der Grundlage des konfigurierten maximalen Prozentsatzes für fehlerhafte untergeordnete Elemente aggregiert.After the health store has evaluated all the children, it aggregates their health states based on the configured maximum percentage of unhealthy children. Dieser Prozentsatz wird der Richtlinie auf der Grundlage der Entität und der Art des untergeordneten Elements entnommen.This percentage is taken from the policy based on the entity and child type.

  • Wenn alle untergeordneten Elemente den Zustand „OK“ aufweisen, lautet der aggregierte Integritätszustand „OK“.If all children have OK states, the child aggregated health state is OK.
  • Wenn sowohl untergeordnete Elemente mit dem Status „OK“ als auch mit dem Status „Warning“ vorliegen, lautet der aggregierte Integritätszustand „Warning“.If children have both OK and warning states, the child aggregated health state is warning.
  • Wenn untergeordnete Elemente mit dem Status „Error“ vorliegen und der maximal zulässige Prozentsatz für fehlerhafte untergeordnete Elemente überschritten wird, lautet der aggregierte Integritätszustand des übergeordneten Elements „Error“.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.
  • Wenn untergeordnete Elemente mit dem Zustand „Error“ vorliegen und der maximal zulässige Prozentsatz für fehlerhafte untergeordnete Elemente nicht überschritten wird, lautet der aggregierte Integritätszustand des übergeordneten Elements „Warning“.If the children with error states respect the maximum allowed percentage of unhealthy children, the aggregated parent health state is warning.

IntegritätsberichterstellungHealth reporting

Berichte für Service Fabric-Entitäten können von Systemkomponenten, System Fabric-Anwendungen und internen/externen Watchdogs erstellt werden.System components, System Fabric applications, and internal/external watchdogs can report against Service Fabric entities. Die Berichterstatter führen eine lokale Ermittlung der Integrität der überwachten Entitäten basierend auf den Bedingungen durch, die sie überwachen.The reporters make local determinations of the health of the monitored entities, based on the conditions they are monitoring. Globale Zustände oder aggregierte Daten werden von den Berichterstattern nicht berücksichtigt.They don't need to look at any global state or aggregate data. Das Ziel sind einfache Berichterstatter und keine komplexen Gebilde, die zahlreiche Aspekte prüfen müssen, um zu entscheiden, welche Informationen gesendet werden sollen.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.

Um die Integritätsdaten an den Integritätsspeicher zu senden, muss ein Berichterstatter die betroffene Entität identifizieren und einen Integritätsbericht erstellen.To send health data to the health store, a reporter needs to identify the affected entity and create a health report. Um den Bericht zu senden, verwenden Sie die FabricClient.HealthClient.ReportHealth-API, die in den Objekten Partition bzw. CodePackageActivationContext verfügbar gemachten Berichtsintegritäts-APIs, PowerShell-Cmdlets oder 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.

IntegritätsberichteHealth reports

Die Integritätsberichte für die einzelnen Entitäten im Cluster enthalten die folgenden Informationen:The health reports for each of the entities in the cluster contain the following information:

  • SourceId.SourceId. Eine Zeichenfolge, die den Berichterstatter des Integritätsereignisses eindeutig identifiziert.A string that uniquely identifies the reporter of the health event.

  • Entitätsbezeichner.Entity identifier. Identifiziert die Entität, für die der Bericht erstellt wird.Identifies the entity where the report is applied. Er unterscheidet sich abhängig vom Entitätstyp:It differs based on the entity type:

    • Cluster:Cluster. Keine.None.
    • Knoten:Node. Knotenname (Zeichenfolge).Node name (string).
    • Anwendung:Application. Anwendungsname (URI).Application name (URI). Stellt den Namen der im Cluster bereitgestellten Anwendungsinstanz dar.Represents the name of the application instance deployed in the cluster.
    • Dienst:Service. Dienstname (URI).Service name (URI). Stellt den Namen der im Cluster bereitgestellten Dienstinstanz dar.Represents the name of the service instance deployed in the cluster.
    • Partition:Partition. Partitions-ID (GUID).Partition ID (GUID). Stellt den eindeutigen Bezeichner der Partition dar.Represents the partition unique identifier.
    • Replikat:Replica. Die ID des zustandsbehafteten Dienstreplikats oder die ID der zustandslosen Dienstinstanz (INT64).The stateful service replica ID or the stateless service instance ID (INT64).
    • DeployedApplication:DeployedApplication. Anwendungsname (URI) und Knotenname (Zeichenfolge).Application name (URI) and node name (string).
    • DeployedServicePackage:DeployedServicePackage. Anwendungsname (URI), Knotenname (Zeichenfolge) und Dienstmanifestname (Zeichenfolge).Application name (URI), node name (string), and service manifest name (string).
  • Eigenschaft.Property. Ein Zeichenfolge (keine feste Enumeration), mit der Berichtersteller das Integritätsereignis für eine bestimmte Eigenschaft der Entität kategorisieren.A string (not a fixed enumeration) that allows the reporter to categorize the health event for a specific property of the entity. Beispiel: Reporter A kann einen Integritätsbericht für die Eigenschaft „Storage“ von Node01 erstellen, und Reporter B kann einen Integritätsbericht für die Eigenschaft „Connectivity“ von Node01 erstellen.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. Im Integritätsspeicher werden diese Berichte als separate Integritätsereignisse für die Entität „Node01“ behandelt.In the health store, these reports are treated as separate health events for the Node01 entity.

  • Beschreibung.Description. Eine Zeichenfolge, die es einem Berichterstatter ermöglicht, detaillierte Informationen zum Integritätsereignis bereitzustellen.A string that allows a reporter to provide detailed information about the health event. Die Verwendung von SourceId, Property und HealthState reicht in der Regel aus, um den Bericht vollständig zu beschreiben.SourceId, Property, and HealthState should fully describe the report. Mit der Beschreibung werden dem Bericht für Menschen lesbare Informationen hinzugefügt.The description adds human-readable information about the report. Der Text macht den Integritätsbericht für Administratoren und Benutzer leichter verständlich.The text makes it easier for administrators and users to understand the health report.

  • HealthState.HealthState. Eine Enumeration, die den Integritätszustand des Berichts beschreibt.An enumeration that describes the health state of the report. Zulässige Werte sind "Ok", "Warning" und "Error".The accepted values are OK, Warning, and Error.

  • TimeToLive.TimeToLive. Ein Zeitraum, der angibt, wie lange der Integritätsbericht gültig ist.A timespan that indicates how long the health report is valid. In Kombination mit RemoveWhenExpired weist dieser Wert den Integritätsspeicher an, wie abgelaufene Ereignisse ausgewertet werden sollen.Coupled with RemoveWhenExpired, it lets the health store know how to evaluate expired events. Der Zeitraum ist standardmäßig unendlich, und der Bericht ist immer gültig.By default, the value is infinite, and the report is valid forever.

  • RemoveWhenExpired.RemoveWhenExpired. Ein boolescher Wert.A boolean. Wenn dieser Wert auf „true“ festgelegt ist, wird der abgelaufene Integritätsbericht automatisch aus dem Integritätsspeicher entfernt, und der Bericht wirkt sich nicht auf die Integritätsevaluierung der Entität aus.If set to true, the expired health report is automatically removed from the health store, and the report doesn't impact entity health evaluation. Wird verwendet, wenn der Bericht nur für einen bestimmten Zeitraum gilt und der Berichterstatter den Bericht nicht explizit bereinigen muss. Das Verfahren wird auch zum Löschen von Berichten aus dem Integritätsspeicher verwendet (z. B. wird ein Watchdog geändert und beendet das Senden von Berichten für die vorherige Quelle und Eigenschaft).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). Hierbei kann ein Bericht mit einer kurzen TimeToLive zusammen mit RemoveWhenExpired gesendet werden, um alle vorherigen Zustände aus dem Integritätsspeicher zu löschen.It can send a report with a brief TimeToLive along with RemoveWhenExpired to clear up any previous state from the health store. Wenn der Wert auf „false“ festgelegt ist, wird der abgelaufene Bericht bei der Integritätsevaluierung als Fehler („Error“) behandelt.If the value is set to false, the expired report is treated as an error on the health evaluation. Mit dem Wert „false“ wird für den Integritätsspeicher angegeben, dass die Quelle regelmäßig Berichte zu dieser Eigenschaft senden soll.The false value signals to the health store that the source should report periodically on this property. Wenn dies nicht der Fall ist, muss ein Fehler für den Watchdog vorliegen.If it doesn't, then there must be something wrong with the watchdog. Die Integrität des Watchdogs wird berücksichtigt, indem das Ereignis als Fehler behandelt wird.The watchdog's health is captured by considering the event as an error.

  • SequenceNumber.SequenceNumber. Eine positive ganze Zahl, mit der die Reihenfolge der Berichte dargestellt wird und die daher stetig erhöht wird.A positive integer that needs to be ever-increasing, it represents the order of the reports. Der Wert wird vom Integritätsspeicher verwendet, um überfällige Berichte zu ermitteln, die wegen Netzwerkverzögerungen oder anderen Problemen verspätet empfangen werden.It is used by the health store to detect stale reports that are received late because of network delays or other issues. Ein Bericht wird abgelehnt, wenn die Sequenznummer kleiner oder gleich der zuletzt angewendeten Nummer für dieselbe Entität, Quelle und Eigenschaft ist.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. Wenn sie nicht angegeben wird, wird die Sequenznummer automatisch generiert.If it is not specified, the sequence number is generated automatically. Die Sequenznummer muss nur angegeben werden, wenn Berichte zu Statusübergängen erstellt werden.It is necessary to put in the sequence number only when reporting on state transitions. In diesem Fall muss für die Quelle gespeichert werden, welche Berichte gesendet werden, und die Informationen müssen für die Wiederherstellung bei einem Failover vorgehalten werden.In this situation, the source needs to remember which reports it sent and keep the information for recovery on failover.

Die vier Informationselemente – SourceId, Entitätsbezeichner, Property und HealthState – sind für jeden Integritätsbericht erforderlich.These four pieces of information--SourceId, entity identifier, Property, and HealthState--are required for every health report. Die SourceId-Zeichenfolge darf nicht mit dem Präfix System. beginnen, da dieses Präfix Systemberichten vorbehalten ist.The SourceId string is not allowed to start with the prefix "System.", which is reserved for system reports. Für eine Entität wird für dieselbe Quelle und Eigenschaft nur ein Bericht verwendet.For the same entity, there is only one report for the same source and property. Mehrere Berichte für die gleiche Quelle und Eigenschaft überschreiben sich gegenseitig – entweder aufseiten des Integritätsclients (bei einem Batch) oder aufseiten des Integritätsspeichers.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. Das Überschreiben erfolgt anhand von Sequenznummern. Neuere Berichte (mit höheren Sequenznummern) überschreiben ältere Berichte.The replacement is based on sequence numbers; newer reports (with higher sequence numbers) replace older reports.

IntegritätsereignisseHealth events

Intern werden im Integritätsspeicher Integritätsereignissegespeichert, die alle Informationen aus den Berichten sowie zusätzliche Metadaten enthalten.Internally, the health store keeps health events, which contain all the information from the reports, and additional metadata. Die Metadaten enthalten auch den Zeitpunkt, zu dem der Bericht an den Integritätsclient übergeben wurde, sowie den Zeitpunkt der Änderung auf der Serverseite.The metadata includes the time the report was given to the health client and the time it was modified on the server side. Die Integritätsereignisse werden von Integritätsabfragenzurückgegeben.The health events are returned by health queries.

Die hinzugefügten Metadaten enthalten Folgendes:The added metadata contains:

  • SourceUtcTimestamp.SourceUtcTimestamp. Gibt den Zeitpunkt an, an dem der Bericht an den Integritätsclient übergeben wurde (Coordinated Universal Time).The time the report was given to the health client (Coordinated Universal Time).
  • LastModifiedUtcTimestamp.LastModifiedUtcTimestamp. Gibt die Uhrzeit der letzten Änderung des Berichts auf der Serverseite (Coordinated Universal Time) an.The time the report was last modified on the server side (Coordinated Universal Time).
  • IsExpired.IsExpired. Ein Flag, mit dem angegeben wird, ob der Bericht zum Zeitpunkt der Ausführung der Abfrage durch den Integritätsspeicher bereits abgelaufen war.A flag to indicate whether the report was expired when the query was executed by the health store. Ein Ereignis kann nur ablaufen, wenn RemoveWhenExpired auf „false“ festgelegt ist.An event can be expired only if RemoveWhenExpired is false. Andernfalls wird das Ereignis von der Abfrage nicht zurückgegeben und aus dem Speicher entfernt.Otherwise, the event is not returned by query and is removed from the store.
  • LastOkTransitionAt, LastWarningTransitionAt, LastErrorTransitionAt.LastOkTransitionAt, LastWarningTransitionAt, LastErrorTransitionAt. Zeitpunkt des letzten Übergangs des Zustands „OK“/„Warning“/„Error“.The last time for OK/warning/error transitions. Diese Felder geben den Verlauf der Integritätszustandsübergänge für das Ereignis an.These fields give the history of the health state transitions for the event.

Die Felder für die Zustandsübergänge können für erweiterte Warnungen verwendet werden und geben Verlaufsinformationen für das Integritätsereignis an.The state transition fields can be used for smarter alerts or "historical" health event information. Sie ermöglichen beispielsweise folgende Szenarien:They enable scenarios such as:

  • Warnung ausgeben, wenn der Zustand einer Eigenschaft länger als X Minuten den Zustand „Warning/Error“ aufweist:Alert when a property has been at warning/error for more than X minutes. Die zeitlich begrenzte Überprüfung der Bedingung ermöglicht die Vermeidung von Warnungen bei vorübergehenden Bedingungen.Checking the condition for a period of time avoids alerts on temporary conditions. Eine Warnung, die ausgegeben wird, wenn der Integritätsstatus „Warning“ länger als 5 Minuten besteht, wird beispielsweise wie folgt angegeben: (HealthState == Warning and Now – LastWarningTransitionTime > 5 minutes).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).
  • Warnung nur zu Bedingungen ausgeben, die sich in den letzten X Minuten geändert haben:Alert only on conditions that have changed in the last X minutes. Wenn ein Bericht schon vor dem angegebenen Zeitpunkt den Zustand „Error“ erreicht hat, kann er ignoriert werden, da dies bereits signalisiert wurde.If a report was already at error before the specified time, it can be ignored because it was already signaled previously.
  • Beim Wechsel des Zustands einer Eigenschaft zwischen „Warning“ und „Error“ bestimmen, wie lange die Eigenschaft fehlerhaft (nicht „OK“) war.If a property is toggling between warning and error, determine how long it has been unhealthy (that is, not OK). Eine Warnung, die ausgegeben wird, wenn die Eigenschaft länger als fünf Minuten fehlerhaft war, wird beispielsweise wie folgt angegeben: (HealthState != Ok and Now - LastOkTransitionTime > 5 minutes).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).

Beispiel: Melden und Evaluieren der AnwendungsintegritätExample: Report and evaluate application health

Im folgenden Beispiel wird über PowerShell ein Integritätsbericht zur Anwendung fabric:/WordCount aus der Quelle MyWatchdog gesendet.The following example sends a health report through PowerShell on the application fabric:/WordCount from the source MyWatchdog. Der Integritätsbericht enthält Informationen zur Integritätseigenschaft „Availability“, die den Integritätszustand „Error“ und den TimeToLive-Wert „Infinite“ aufweist.The health report contains information about the health property "availability" in an error health state, with infinite TimeToLive. Anschließend wird die Anwendungsintegrität abgefragt. Die Abfrage gibt den aggregierten Integritätszustand „Error“ und die gemeldeten Integritätsereignisse in der Liste mit den Integritätsereignissen zurück.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

Verwendung des IntegritätsmodellsHealth model usage

Das Integritätsmodell ermöglicht die Skalierung der Clouddienste und der zugrundeliegenden Service Fabric-Plattform, da die Überwachung und Ermittlung der Integrität auf verschiedene Überwachungselemente im Cluster verteilt werden.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. Andere Systeme verfügen über einen einzelnen zentralen Dienst auf Clusterebene, der alle potenziell nützlichen Informationen analysiert, die von Diensten ausgegeben werden.Other systems have a single, centralized service at the cluster level that parses all the potentially useful information emitted by services. Dieser Ansatz beeinträchtigt die Skalierbarkeit.This approach hinders their scalability. Außerdem können keine spezifischen Informationen gesammelt werden, um die Grundursache von Problemen oder potenziellen Problemen so weit wie möglich einzugrenzen.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.

Das Integritätsmodell wird hauptsächlich für die Überwachung und Diagnose, Evaluierung der Cluster- und Anwendungsintegrität und Überwachung von Upgrades verwendet.The health model is used heavily for monitoring and diagnosis, for evaluating cluster and application health, and for monitored upgrades. Andere Dienste nutzen die Integritätsdaten, um automatische Reparaturen durchzuführen, Verläufe der Clusterintegrität zu erstellen und Warnungen bei bestimmten Bedingungen auszugeben.Other services use health data to perform automatic repairs, build cluster health history, and issue alerts on certain conditions.

Nächste SchritteNext steps

Anzeigen von Service Fabric-IntegritätsberichtenView Service Fabric health reports

Verwenden von Systemintegritätsberichten für die ProblembehandlungUse system health reports for troubleshooting

Melden und Überprüfen der DienstintegritätHow to report and check service health

Hinzufügen von benutzerdefinierten Service Fabric-IntegritätsberichtenAdd custom Service Fabric health reports

Lokales Überwachen und Diagnostizieren von DienstenMonitor and diagnose services locally

Service Fabric-AnwendungsupgradeService Fabric application upgrade