SystemüberwachungHealth monitoring

Über die Systemüberwachung können Sie nahezu in Echtzeit Informationen zum Zustand Ihrer Container und Microservices erhalten.Health monitoring can allow near-real-time information about the state of your containers and microservices. Die Systemüberwachung ist für verschieden Aspekte von Betriebsmicroservices wichtig und ist von besonderer Bedeutung, wenn Orchestratoren wie im Folgenden beschrieben ein Anwendungsupgrade in Phasen ausführen.Health monitoring is critical to multiple aspects of operating microservices and is especially important when orchestrators perform partial application upgrades in phases, as explained later.

Auf einem Microservice basierende Anwendungen verwenden häufig Takte oder Integritätsüberprüfungen, damit ihre Systemmonitore, Zeitpläne und Orchestratoren die verschiedenen Dienste überwachen können.Microservices-based applications often use heartbeats or health checks to enable their performance monitors, schedulers, and orchestrators to keep track of the multitude of services. Wenn Dienste nicht dazu fähig sind, nach Bedarf oder nach einem Plan Lebenszeichen von sich zu geben, können Risiken für Ihre Anwendung entstehen, wenn Sie Updates bereitstellen. Möglicherweise können Fehler auch zu spät ermittelt werden, wodurch kaskadierende Fehler nicht vermieden werden können, die zu größeren Ausfällen führen können.If services cannot send some sort of "I'm alive" signal, either on demand or on a schedule, your application might face risks when you deploy updates, or it might just detect failures too late and not be able to stop cascading failures that can end up in major outages.

Dienste in ihrer allgemeinen Form senden Zustandsberichte. Diese Informationen werden dann aggregiert, sodass eine allgemeine Übersicht zum Integritätsstatus Ihrer Anwendung erstellt werden kann.In the typical model, services send reports about their status, and that information is aggregated to provide an overall view of the state of health of your application. Wenn Sie einen Orchestrator verwenden, können Sie Integritätsinformationen zum Cluster Ihres Orchestratoren hinzufügen, damit der Cluster entsprechend agieren kann.If you're using an orchestrator, you can provide health information to your orchestrator's cluster, so that the cluster can act accordingly. Wenn Sie in Integritätsberichte von hoher Qualität investieren, die an Ihre Anwendung angepasst werden, können Sie Fehler der ausgeführte Anwendung viel einfacher ermitteln und beheben.If you invest in high-quality health reporting that's customized for your application, you can detect and fix issues for your running application much more easily.

Implementieren von Integritätsüberprüfungen in ASP.NET Core-DienstenImplement health checks in ASP.NET Core services

Beim Entwickeln eines ASP.NET Core-Microservice oder einer -Webanwendung können Sie das integrierte Feature für Integritätsprüfungen verwenden, das mit ASP.NET Core 2.2 veröffentlicht wurde (Microsoft.Extensions.Diagnostics.HealthChecks).When developing an ASP.NET Core microservice or web application, you can use the built-in health checks feature that was released in ASP .NET Core 2.2 (Microsoft.Extensions.Diagnostics.HealthChecks). Wie viele andere ASP.NET Core-Features enthalten die Integritätsprüfungen mehrere Dienste und eine Middleware.Like many ASP.NET Core features, health checks come with a set of services and a middleware.

Dienste und Middleware zur Überprüfung der Integrität sind einfach zu verwenden und stellen Funktionen bereit, mit denen Sie überprüfen können, ob eine beliebige externe Ressource, die für Ihre Anwendung (z. B. eine SQL Server-Datenbank oder eine Remote-API) erforderlich ist, ordnungsgemäß funktioniert.Health check services and middleware are easy to use and provide capabilities that let you validate if any external resource needed for your application (like a SQL Server database or a remote API) is working properly. Wenn Sie dieses Feature verwenden, können Sie außerdem die Voraussetzungen für die Integrität der Ressource festlegen. Dies wird nachfolgend näher erläutert.When you use this feature, you can also decide what it means that the resource is healthy, as we explain later.

Damit Sie dieses Feature effektiv nutzen können, müssen Sie zunächst Dienste in Ihren Microservices konfigurieren.To use this feature effectively, you need to first configure services in your microservices. Außerdem ist eine Front-End-Anwendung erforderlich, die Integritätsberichte abfragt.Second, you need a front-end application that queries for the health reports. Bei dieser Front-End-Anwendung kann es sich z.B. um eine benutzerdefinierte Anwendung zur Berichterstattung oder einen Orchestrator an sich handeln, der im Hinblick auf den Integritätszustand angemessen reagieren kann.That front-end application could be a custom reporting application, or it could be an orchestrator itself that can react accordingly to the health states.

Verwenden des HealthChecks-Features in Ihren Back-End-ASP.NET-MicroservicesUse the HealthChecks feature in your back-end ASP.NET microservices

In diesem Abschnitt erfahren Sie, wie das HealthChecks-Feature in einer ASP.NET Core 3.1 Web-API-Beispielanwendung implementiert wird, wenn das Paket Microsoft.Extensions.Diagnostics.HealthChecks verwendet wird.In this section, you'll learn how to implement the HealthChecks feature in a sample ASP.NET Core 3.1 Web API application when using the Microsoft.Extensions.Diagnostics.HealthChecks package. Die Implementierung dieses Features in großen Microservices wie eShopOnContainers wird im nächsten Abschnitt erläutert.The Implementation of this feature in a large-scale microservices like the eShopOnContainers is explained in the next section.

Damit Sie beginnen können, müssen Sie definieren, was die Integritätsstatus für die einzelnen Microservices ausmacht.To begin, you need to define what constitutes a healthy status for each microservice. In der Beispielanwendung wird definiert, dass der Microservice fehlerfrei ist, wenn seine API über HTTP zugänglich und die zugehörige SQL Server-Datenbank ebenfalls verfügbar ist.In the sample application, we define the microservice is healthy if its API is accessible via HTTP and its related SQL Server database is also available.

In .NET Core 3.1 mit den integrierten APIs können Sie wie folgt die Dienste konfigurieren und eine Integritätsprüfung für den Microservice sowie die abhängige SQL Server-Datenbank hinzufügen:In .NET Core 3.1, with the built-in APIs, you can configure the services, add a Health Check for the microservice and its dependent SQL Server database in this way:

// Startup.cs from .NET Core 3.1 Web API sample
//
public void ConfigureServices(IServiceCollection services)
{
    //...
    // Registers required services for health checks
    services.AddHealthChecks()
        // Add a health check for a SQL Server database
        .AddCheck(
            "OrderingDB-check",
            new SqlConnectionHealthCheck(Configuration["ConnectionString"]),
            HealthStatus.Unhealthy,
            new string[] { "orderingdb" });
}

Im obigen Code konfiguriert die services.AddHealthChecks()-Methode eine einfache HTTP-Überprüfung, die den Statuscode 200 mit der Meldung „Fehlerfrei“ zurückgibt.In the previous code, the services.AddHealthChecks() method configures a basic HTTP check that returns a status code 200 with "Healthy". Außerdem konfiguriert die AddCheck()-Erweiterungsmethode eine benutzerdefinierte SqlConnectionHealthCheck-Klasse, mit der die Integrität der zugehörigen SQL-Datenbank-Instanz geprüft wird.Further, the AddCheck() extension method configures a custom SqlConnectionHealthCheck that checks the related SQL Database's health.

Die AddCheck()-Methode fügt eine neue Integritätsprüfung mit einem festgelegten Namen und der Implementierung vom Typ IHealthCheck hinzu.The AddCheck() method adds a new health check with a specified name and the implementation of type IHealthCheck. Mit der Methode „AddCheck“ können Sie mehrere Integritätsprüfungen hinzufügen, sodass ein Microservice erst einen „fehlerfreien“ Status meldet, wenn alle Prüfungen den Status „Fehlerfrei“ zurückgeben.You can add multiple Health Checks using AddCheck method, so a microservice won't provide a "healthy" status until all its checks are healthy.

SqlConnectionHealthCheck ist eine benutzerdefinierte Klasse, die IHealthCheck implementiert, wodurch eine Verbindungszeichenfolge als Konstruktorparameter interpretiert und eine einfache Abfrage durchgeführt wird, um zu überprüfen, ob die Verbindung mit der SQL-Datenbank-Instanz erfolgreich ist.SqlConnectionHealthCheck is a custom class that implements IHealthCheck, which takes a connection string as a constructor parameter and executes a simple query to check if the connection to the SQL database is successful. Sie gibt HealthCheckResult.Healthy() zurück, wenn die Abfrage erfolgreich ausgeführt wurde, und Sie gibt FailureStatus mit der tatsächlichen Ausnahme zurück, wenn sie fehlschlägt.It returns HealthCheckResult.Healthy() if the query was executed successfully and a FailureStatus with the actual exception when it fails.

// Sample SQL Connection Health Check
public class SqlConnectionHealthCheck : IHealthCheck
{
    private static readonly string DefaultTestQuery = "Select 1";

    public string ConnectionString { get; }

    public string TestQuery { get; }

    public SqlConnectionHealthCheck(string connectionString)
        : this(connectionString, testQuery: DefaultTestQuery)
    {
    }

    public SqlConnectionHealthCheck(string connectionString, string testQuery)
    {
        ConnectionString = connectionString ?? throw new ArgumentNullException(nameof(connectionString));
        TestQuery = testQuery;
    }

    public async Task<HealthCheckResult> CheckHealthAsync(HealthCheckContext context, CancellationToken cancellationToken = default(CancellationToken))
    {
        using (var connection = new SqlConnection(ConnectionString))
        {
            try
            {
                await connection.OpenAsync(cancellationToken);

                if (TestQuery != null)
                {
                    var command = connection.CreateCommand();
                    command.CommandText = TestQuery;

                    await command.ExecuteNonQueryAsync(cancellationToken);
                }
            }
            catch (DbException ex)
            {
                return new HealthCheckResult(status: context.Registration.FailureStatus, exception: ex);
            }
        }

        return HealthCheckResult.Healthy();
    }
}

Beachten Sie, dass Select 1 die Abfrage ist, die im obigen Code zur Überprüfung der Integrität der Datenbank verwendet wird.Note that in the previous code, Select 1 is the query used to check the Health of the database. Orchestratoren wie Kubernetes führen regelmäßig zur Überwachung der Verfügbarkeit Ihrer Microservices Integritätsüberprüfungen durch, indem sie Anforderungen senden, um die Microservices zu testen.To monitor the availability of your microservices, orchestrators like Kubernetes periodically perform health checks by sending requests to test the microservices. Es ist wichtig, dass Ihre Datenbankabfragen effizient sind, damit diese Vorgänge schnell durchgeführt werden können und zu keiner erhöhten Ressourcennutzung führen.It's important to keep your database queries efficient so that these operations are quick and don’t result in a higher utilization of resources.

Fügen Sie abschließend eine Middleware hinzu, die auf den URL-Pfad /hc antwortet:Finally, add a middleware that responds to the url path /hc:

// Startup.cs from .NET Core 3.1 Web Api sample
//
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    //…
    app.UseEndpoints(endpoints =>
    {
        //...
        endpoints.MapHealthChecks("/hc");
        //...
    });
    //…
}

Wenn der Endpunkt <yourmicroservice>/hc aufgerufen wird, werden alle Integritätsüberprüfungen ausgeführt, die in der Startklasse in der AddHealthChecks()-Methode konfiguriert sind, und das Ergebnis wird angezeigt.When the endpoint <yourmicroservice>/hc is invoked, it runs all the health checks that are configured in the AddHealthChecks() method in the Startup class and shows the result.

Implementieren des HealthChecks-Features in eShopOnContainersHealthChecks implementation in eShopOnContainers

Microservices in eShopOnContainers hängen bei der Ausführung ihrer Aufgaben von mehreren Diensten ab.Microservices in eShopOnContainers rely on multiple services to perform its task. Der Catalog.API-Microservice von eShopOnContainers hängt beispielsweise von mehreren Diensten wie Azure Blob Storage, SQL Server und RabbitMQ ab.For example, the Catalog.API microservice from eShopOnContainers depends on many services, such as Azure Blob Storage, SQL Server, and RabbitMQ. Daher wurden ihm mit der AddCheck()-Methode mehrere Integritätsprüfungen hinzugefügt.Therefore, it has several health checks added using the AddCheck() method. Für jeden abhängigen Dienst müsste eine benutzerdefinierte IHealthCheck-Implementierung hinzugefügt werden, die den jeweiligen Integritätsstatus definiert.For every dependent service, a custom IHealthCheck implementation that defines its respective health status would need to be added.

Beim Open-Source-Projekt AspNetCore.Diagnostics.HealthChecks wird dieses Problem mit benutzerdefinierten Implementierungen von Integritätsprüfungen für jeden dieser auf .NET Core 3.1 basierenden Unternehmensdiensten gelöst.The open-source project AspNetCore.Diagnostics.HealthChecks solves this problem by providing custom health check implementations for each of these enterprise services, that are built on top of .NET Core 3.1. Jede Integritätsprüfung steht als individuelles NuGet-Paket zur Verfügung, das dem Projekt mühelos hinzugefügt werden kann.Each health check is available as an individual NuGet package that can be easily added to the project. In eShopOnContainers werden sie in allen enthaltenen Microservices verwendet.eShopOnContainers uses them extensively in all its microservices.

Zum Catalog.API-Microservice wurden beispielsweise folgende NuGet-Pakete hinzugefügt:For instance, in the Catalog.API microservice, the following NuGet packages were added:

Screenshot des NuGet-Pakets „AspNetCore.Diagnostics.HealthChecks“.

Abbildung 8-7.Figure 8-7. Mit AspNetCore.Diagnostics.HealthChecks in Catalog.API implementierte benutzerdefinierte IntegritätsprüfungenCustom Health Checks implemented in Catalog.API using AspNetCore.Diagnostics.HealthChecks

Im folgenden Code werden die Implementierungen der Integritätsprüfungen für jeden abhängigen Dienst hinzugefügt, und anschließend wird die Middleware konfiguriert:In the following code, the health check implementations are added for each dependent service and then the middleware is configured:

// Startup.cs from Catalog.api microservice
//
public static IServiceCollection AddCustomHealthCheck(this IServiceCollection services, IConfiguration configuration)
{
    var accountName = configuration.GetValue<string>("AzureStorageAccountName");
    var accountKey = configuration.GetValue<string>("AzureStorageAccountKey");

    var hcBuilder = services.AddHealthChecks();

    hcBuilder
        .AddSqlServer(
            configuration["ConnectionString"],
            name: "CatalogDB-check",
            tags: new string[] { "catalogdb" });

    if (!string.IsNullOrEmpty(accountName) && !string.IsNullOrEmpty(accountKey))
    {
        hcBuilder
            .AddAzureBlobStorage(
                $"DefaultEndpointsProtocol=https;AccountName={accountName};AccountKey={accountKey};EndpointSuffix=core.windows.net",
                name: "catalog-storage-check",
                tags: new string[] { "catalogstorage" });
    }
    if (configuration.GetValue<bool>("AzureServiceBusEnabled"))
    {
        hcBuilder
            .AddAzureServiceBusTopic(
                configuration["EventBusConnection"],
                topicName: "eshop_event_bus",
                name: "catalog-servicebus-check",
                tags: new string[] { "servicebus" });
    }
    else
    {
        hcBuilder
            .AddRabbitMQ(
                $"amqp://{configuration["EventBusConnection"]}",
                name: "catalog-rabbitmqbus-check",
                tags: new string[] { "rabbitmqbus" });
    }

    return services;
}

Fügen Sie abschließend die HealthCheck-Middleware hinzu, die am Endpunkt /hc lauscht:Finally, add the HealthCheck middleware to listen to “/hc” endpoint:

// HealthCheck middleware
app.UseHealthChecks("/hc", new HealthCheckOptions()
{
    Predicate = _ => true,
    ResponseWriter = UIResponseWriter.WriteHealthCheckUIResponse
});
}

Abfragen eines Berichts zum Integritätsstatus der MicroservicesQuery your microservices to report about their health status

Wenn Sie wie in diesem Artikel beschrieben Integritätsüberprüfungen konfiguriert haben, können Sie direkt über den Browser überprüfen, ob der Microservice einwandfrei funktioniert, sobald dieser in Docker ausgeführt wird.When you've configured health checks as described in this article and you have the microservice running in Docker, you can directly check from a browser if it's healthy. Sie müssen den Containerport im Docker-Host veröffentlichen, damit Sie über die externe Docker-Host-IP-Adresse oder localhost auf den Container zugreifen können, wie in Abbildung 8-8 gezeigt.You have to publish the container port in the Docker host, so you can access the container through the external Docker host IP or through localhost, as shown in figure 8-8.

Screenshot der von einer Integritätsprüfung zurückgegebenen JSON-Antwort.

Abbildung 8-8.Figure 8-8. Überprüfen des Integritätsstaus eines einzelnen Diensts über einen BrowserChecking health status of a single service from a browser

In diesem Test können Sie sehen, dass der Microservice Catalog.API (der auf Port 5101 ausgeführt wird) einwandfrei funktioniert, da er den HTTP-Status 200 und Statusinformationen im JSON-Format zurückgibt.In that test, you can see that the Catalog.API microservice (running on port 5101) is healthy, returning HTTP status 200 and status information in JSON. Der Dienst hat die Integrität seiner SQL Server-Datenbankabhängigkeit und RabbitMQ ebenfalls überprüft, weshalb die Integritätsprüfung sich selbst als „Fehlerfrei“ meldet.The service also checked the health of its SQL Server database dependency and RabbitMQ, so the health check reported itself as healthy.

Verwenden von ÜberwachungselementenUse watchdogs

Bei einem Überwachungselement handelt es sich um einen separaten Dienst, der die Integrität überprüfen und in mehreren Diensten geladen werden kann. Außerdem kann es Berichte zur Integrität der Microservices erstellen, indem es eine Abfrage an die bereit eingeführte HealthChecks-Bibliothek sendet.A watchdog is a separate service that can watch health and load across services, and report health about the microservices by querying with the HealthChecks library introduced earlier. Dadurch können Fehler vermieden werden, die anhand der Ansicht eines einzelnen Diensts nicht ermittelt werden könnten.This can help prevent errors that would not be detected based on the view of a single service. Überwachungselemente eignen sich außerdem zum Hosten von Code, über den ohne Benutzerinteraktion Abhilfemaßnahmen für bekannte Bedingungen ausgeführt werden können.Watchdogs also are a good place to host code that can perform remediation actions for known conditions without user interaction.

Das eShopOnContainers-Beispiel enthält eine Webseite, auf der wie in Abbildung 8-9 dargestellt Beispielberichte zur Integritätsüberprüfung angezeigt werden.The eShopOnContainers sample contains a web page that displays sample health check reports, as shown in Figure 8-9. Dabei handelt es sich um das einfachste Überwachungselement, da es nur den Zustand der Microservices und Webanwendungen in eShopOnContainers anzeigt.This is the simplest watchdog you could have since it only shows the state of the microservices and web applications in eShopOnContainers. In der Regel führt ein Überwachungselement Aktionen aus, wenn der Status „Fehlerhaft“ ermittelt wird.Usually a watchdog also takes actions when it detects unhealthy states.

AspNetCore.Diagnostics.HealthChecks stellt auch das NuGet-Paket AspNetCore.HealthChecks.UI bereit, das zum Anzeigen der Ergebnisse der Integritätsprüfung der konfigurierten URIs verwendet werden kann.Fortunately, AspNetCore.Diagnostics.HealthChecks also provides AspNetCore.HealthChecks.UI NuGet package that can be used to display the health check results from the configured URIs.

Screenshot des Integritätsstatus von eShopOnContainers in der Integritätsüberprüfungs-Benutzeroberfläche.

Abbildung 8-9.Figure 8-9. Beispielbericht zur Integritätsüberprüfung in eShopOnContainersSample health check report in eShopOnContainers

Dieser Überwachungsdienst fragt also den Endpunkt „/hc“ aller Microservices ab.In summary, this watchdog service queries each microservice's "/hc" endpoint. Dadurch werden alle darin definierten Integritätsüberprüfungen ausgeführt und ein allgemeiner Integritätsstatus zurückgegeben, der von diesen Überprüfungen abhängig ist.This will execute all the health checks defined within it and return an overall health state depending on all those checks. HealthChecksUI ist mit wenigen Konfigurationseinträgen und zwei Codezeilen, die zur Datei „Startup.cs“ des Überwachungsdiensts hinzugefügt werden müssen, leicht zu verarbeiten.The HealthChecksUI is easy to consume with a few configuration entries and two lines of code that needs to be added into the Startup.cs of the watchdog service.

Beispielkonfigurationsdatei für HealthChecksUI:Sample configuration file for health check UI:

// Configuration
{
  "HealthChecks-UI": {
    "HealthChecks": [
      {
        "Name": "Ordering HTTP Check",
        "Uri": "http://localhost:5102/hc"
      },
      {
        "Name": "Ordering HTTP Background Check",
        "Uri": "http://localhost:5111/hc"
      },
      //...
    ]}
}

Datei „Startup.cs“, die HealthChecksUI hinzufügt:Startup.cs file that adds HealthChecksUI:

// Startup.cs from WebStatus(Watch Dog) service
//
public void ConfigureServices(IServiceCollection services)
{
    //…
    // Registers required services for health checks
    services.AddHealthChecksUI();
}
//…
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
    //…
    app.UseHealthChecksUI(config=> config.UIPath = "/hc-ui");
    //…
}

Integritätsüberprüfungen, wenn Orchestratoren verwendet werdenHealth checks when using orchestrators

Orchestratoren wie Kubernetes und Service Fabric führen regelmäßig zur Überwachung der Verfügbarkeit Ihrer Microservices Integritätsüberprüfungen durch, indem sie Anforderungen senden, um diese Microservices zu testen.To monitor the availability of your microservices, orchestrators like Kubernetes and Service Fabric periodically perform health checks by sending requests to test the microservices. Wenn ein Orchestrator ermittelt, dass ein Dienst bzw. ein Container fehlerhaft ist, leitet er keine Anforderungen mehr an diese Instanz weiter.When an orchestrator determines that a service/container is unhealthy, it stops routing requests to that instance. Außerdem erstellt er dann in der Regel eine neue Instanz dieses Containers.It also usually creates a new instance of that container.

Beispielsweise können die meisten Orchestratoren Integritätsüberprüfungen verwenden, um Bereitstellungen ohne Ausfallzeit zu verwalten.For instance, most orchestrators can use health checks to manage zero-downtime deployments. Erst wenn sich der Status des Diensts bzw. Containers in „healthy“ (OK) ändert, leitet der Orchestrator wieder Datenverkehr an die Instanzen des Diensts bzw. Containers weiter.Only when the status of a service/container changes to healthy will the orchestrator start routing traffic to service/container instances.

Die Systemüberwachung ist besonders wichtig, wenn ein Orchestrator ein Anwendungsupgrade ausführt.Health monitoring is especially important when an orchestrator performs an application upgrade. Einige Orchestratoren (wie Azure Service Fabric) führen in Phasen Updates für Dienste aus. Sie aktualisieren also z.B. ein Fünftel der Clusteroberfläche für jedes Anwendungsupgrade.Some orchestrators (like Azure Service Fabric) update services in phases—for example, they might update one-fifth of the cluster surface for each application upgrade. Die Knoten, für die zur selben Zeit ein Upgrade ausgeführt wird, werden als Upgradedomäne bezeichnet.The set of nodes that's upgraded at the same time is referred to as an upgrade domain. Wenn für alle Upgradedomänen ein Upgrade ausgeführt wurde und für die Benutzer verfügbar sind, muss diese Upgradedomäne Integritätsüberprüfungen übergeben, bevor die Bereitstellung auf die nächste Upgradedomäne verschoben wird.After each upgrade domain has been upgraded and is available to users, that upgrade domain must pass health checks before the deployment moves to the next upgrade domain.

Berichtsmetriken des Diensts machen einen weiteren Aspekt der Dienstintegrität aus.Another aspect of service health is reporting metrics from the service. Dabei handelt es sich um eine erweiterte Funktion des Integritätsmodells einiger Orchestratoren wie Service Fabric.This is an advanced capability of the health model of some orchestrators, like Service Fabric. Metriken sind von Bedeutung, wenn Orchestratoren verwendet werden, da sie einen Ausgleich für die Ressourcennutzung schaffen.Metrics are important when using an orchestrator because they are used to balance resource usage. Metriken können außerdem auf Systemintegrität hindeuten.Metrics also can be an indicator of system health. Beispielsweise kann es sein, dass Sie über eine Anwendung mit vielen Microservices verfügen, wobei jede Instanz einen Bericht zu einer „Anforderungen pro Sekunde“-Metrik erstellt.For example, you might have an application that has many microservices, and each instance reports a requests-per-second (RPS) metric. Wenn ein Dienst mehre Ressourcen (z.B. den Arbeitsspeicher oder den Prozessor) als ein anderer Dienst verwendet, kann der Orchestrator Dienstinstanzen innerhalb des Clusters verschieben, um zu versuchen, die Ressourcenverwendung zu verwalten.If one service is using more resources (memory, processor, etc.) than another service, the orchestrator could move service instances around in the cluster to try to maintain even resource utilization.

Beachten Sie, dass Azure Service Fabric ein eigenes Modell zur Systemüberwachung umfasst, das umfassender ist als einfache Integritätsüberprüfungen.Note that Azure Service Fabric provides its own Health Monitoring model, which is more advanced than simple health checks.

Erweiterte Überwachung: Visualisierung, Analyse und WarnungenAdvanced monitoring: visualization, analysis, and alerts

Als letzter Schritt im Rahmen der Überwachung wird der Ereignisdatenstrom visualisiert, ein Bericht zur Leistung des Diensts wird erstellt, und es wird eine Warnung ausgegeben, wenn ein Problem erkannt wird.The final part of monitoring is visualizing the event stream, reporting on service performance, and alerting when an issue is detected. Sie können für diesen Bestandteil der Überwachung mehrere Lösungen verwenden.You can use different solutions for this aspect of monitoring.

Einerseits können Sie einfache benutzerdefinierte Anwendungen verwenden, die den Status Ihrer Dienste anzeigen, z. B. die im Zusammenhang mit AspNetCore.Diagnostics.HealthChecks erwähnten benutzerdefinierten Seiten.You can use simple custom applications showing the state of your services, like the custom page shown when explaining the AspNetCore.Diagnostics.HealthChecks. Andererseits können Sie auch Tools mit erweiterten Funktionen wie Azure Monitor verwenden, um Warnungen anhand des Datenstroms der Ereignisse auszulösen.Or you could use more advanced tools like Azure Monitor to raise alerts based on the stream of events.

Außerdem können Sie Microsoft Power BI oder andere Lösungen (z.B. Kibana oder Splunk) verwenden, um Daten zu visualisieren, wenn Sie alle Ereignisdatenströme gespeichert haben.Finally, if you're storing all the event streams, you can use Microsoft Power BI or other solutions like Kibana or Splunk to visualize the data.

Zusätzliche RessourcenAdditional resources