Muster für Überwachung der Integrität von EndpunktenHealth Endpoint Monitoring pattern

Implementieren Sie Funktionsprüfungen in einer Anwendung, auf die externe Tools in regelmäßigen Abständen über verfügbar gemachte Endpunkte zugreifen können.Implement functional checks in an application that external tools can access through exposed endpoints at regular intervals. Dies kann helfen, die ordnungsgemäße Ausführung von Anwendungen und Diensten zu überprüfen.This can help to verify that applications and services are performing correctly.

Kontext und ProblemContext and problem

Es ist eine bewährte Praxis und oft eine Geschäftsanforderung, Webanwendungen und Back-End-Dienste zu überwachen, um sicherzustellen, dass sie verfügbar sind und einwandfrei funktionieren.It's a good practice, and often a business requirement, to monitor web applications and back-end services, to ensure they're available and performing correctly. Allerdings lassen sich Dienste, die in der Cloud ausgeführt werden, schwieriger als lokale Dienste überwachen.However, it's more difficult to monitor services running in the cloud than it is to monitor on-premises services. Beispielsweise haben Sie nicht die volle Kontrolle über die Hostingumgebung, und die Dienste hängen in der Regel von anderen Diensten ab, die von Plattform- und anderen Anbietern bereitgestellt werden.For example, you don't have full control of the hosting environment, and the services typically depend on other services provided by platform vendors and others.

Es gibt viele Faktoren, die sich auf cloudbasierte Anwendungen auswirken, wie z.B. die Netzwerklatenz, Leistung und Verfügbarkeit der zugrunde liegenden Compute- und Speichersysteme und die Netzwerkbandbreite zwischen ihnen.There are many factors that affect cloud-hosted applications such as network latency, the performance and availability of the underlying compute and storage systems, and the network bandwidth between them. Aufgrund dieser Faktoren kann der Dienst ganz oder teilweise ausfallen.The service can fail entirely or partially due to any of these factors. Daher müssen Sie in regelmäßigen Abständen überprüfen, ob der Dienst ordnungsgemäß funktioniert, um den erforderlichen Verfügbarkeitsgrad sicherzustellen, der Teil Ihrer Vereinbarung zum Servicelevel (SLA) sein kann.Therefore, you must verify at regular intervals that the service is performing correctly to ensure the required level of availability, which might be part of your service level agreement (SLA).

LösungSolution

Implementieren Sie die Integritätsüberwachung, indem Sie Anforderungen an einen Endpunkt der Anwendung senden.Implement health monitoring by sending requests to an endpoint on the application. Die Anwendung muss die notwendigen Prüfungen durchführen und eine Statusangabe zurückgeben.The application should perform the necessary checks, and return an indication of its status.

Eine Überwachungsprüfung der Integrität kombiniert typischerweise zwei Faktoren:A health monitoring check typically combines two factors:

  • Die Prüfungen (falls vorhanden), die von der Anwendung oder dem Dienst als Antwort auf die Anforderung zur Überprüfung der Integrität des Endpunkts ausgeführt werden.The checks (if any) performed by the application or service in response to the request to the health verification endpoint.
  • Die Analyse der Ergebnisse durch das Tool oder Framework, das die Integritätsprüfung durchführt.Analysis of the results by the tool or framework that performs the health verification check.

Der Antwortcode gibt den Status der Anwendung und optional der von ihr verwendeten Komponenten oder Dienste an.The response code indicates the status of the application and, optionally, any components or services it uses. Die Wartezeit- oder Antwortzeitprüfung wird vom Überwachungstool oder -framework durchgeführt.The latency or response time check is performed by the monitoring tool or framework. Die Abbildung zeigt eine Übersicht über das Muster.The figure provides an overview of the pattern.

Übersicht über das Muster

Andere Prüfungen, die vom Code für die Integritätsüberwachung in der Anwendung durchgeführt werden können, sind z.B:Other checks that might be carried out by the health monitoring code in the application include:

  • Überprüfung der Verfügbarkeit und Antwortzeit eines Cloudspeichers oder einer DatenbankChecking cloud storage or a database for availability and response time.
  • Überprüfung anderer Ressourcen oder Dienste, die sich in der Anwendung befinden oder an anderer Stelle, aber von der Anwendung verwendet werdenChecking other resources or services located in the application, or located elsewhere but used by the application.

Es stehen Dienste und Tools zur Verfügung, die Webanwendungen überwachen, indem sie eine Anforderung an einen konfigurierbaren Satz von Endpunkten senden und die Ergebnisse im Abgleich mit einer Reihe konfigurierbarer Regeln auswerten.Services and tools are available that monitor web applications by submitting a request to a configurable set of endpoints, and evaluating the results against a set of configurable rules. Es ist relativ einfach, einen Dienstendpunkt zu erstellen, dessen einziger Zweck es ist, einige Funktionstests auf das System anzuwenden.It's relatively easy to create a service endpoint whose sole purpose is to perform some functional tests on the system.

Typische Prüfungen, die von den Überwachungstools durchgeführt werden können, sind z.B:Typical checks that can be performed by the monitoring tools include:

  • Validieren des Antwortcodes.Validating the response code. Die HTTP-Antwort 200 (OK) gibt beispielsweise an, dass die Anwendung fehlerfrei antwortet.For example, an HTTP response of 200 (OK) indicates that the application responded without error. Das Überwachungssystem kann auch auf andere Antwortcodes prüfen, um umfassendere Ergebnisse zu liefern.The monitoring system might also check for other response codes to give more comprehensive results.
  • Überprüfung des Inhalts der Antwort, um Fehler zu erkennen, auch wenn der Statuscode 200 (OK) zurückgegeben wird.Checking the content of the response to detect errors, even when a 200 (OK) status code is returned. Hierdurch können Fehler erkannt werden, die nur einen Teil der zurückgegebenen Antwort der Webseite oder des Diensts betreffen.This can detect errors that affect only a section of the returned web page or service response. Zum Beispiel die Überprüfung des Titels einer Seite oder die Suche nach einer bestimmten Wortgruppe, die angibt, dass die richtige Seite zurückgegeben wurde.For example, checking the title of a page or looking for a specific phrase that indicates the correct page was returned.
  • Messung der Antwortzeit, die eine Kombination aus der Netzwerklatenz und der Zeit angibt, die die Anwendung für die Ausführung der Anforderung benötigt hat.Measuring the response time, which indicates a combination of the network latency and the time that the application took to execute the request. Ein steigender Wert kann auf ein auftauchendes Problem mit der Anwendung oder dem Netzwerk hinweisen.An increasing value can indicate an emerging problem with the application or network.
  • Überprüfung von Ressourcen oder Diensten außerhalb der Anwendung wie z.B. ein Content Delivery Network, das von der Anwendung verwendet wird, um Inhalte aus globalen Caches bereitzustellen.Checking resources or services located outside the application, such as a content delivery network used by the application to deliver content from global caches.
  • Überprüfung des Ablaufs von SSL-Zertifikaten.Checking for expiration of SSL certificates.
  • Messung der Antwortzeit eines DNS-Lookups nach der URL der Anwendung zum Messen von DNS-Latenz und DNS-Fehlern.Measuring the response time of a DNS lookup for the URL of the application to measure DNS latency and DNS failures.
  • Validierung der URL, die vom DNS-Lookup zurückgegeben wird, um richtige Einträge sicherzustellen.Validating the URL returned by the DNS lookup to ensure correct entries. Dies kann helfen, böswillige Umleitungen von Anforderungen bei einem erfolgreichen Angriff auf den DNS-Server zu vermeiden.This can help to avoid malicious request redirection through a successful attack on the DNS server.

Es ist auch nützlich, diese Prüfungen nach Möglichkeit von verschiedenen lokalen oder gehosteten Standorten aus durchzuführen, um die Antwortzeiten zu messen und zu vergleichen.It's also useful, where possible, to run these checks from different on-premises or hosted locations to measure and compare response times. Idealerweise sollten Sie Anwendungen von Standorten aus überwachen, die sich in der Nähe von Kunden befinden, um einen genauen Überblick über die Leistung jedes Standorts zu erhalten.Ideally you should monitor applications from locations that are close to customers to get an accurate view of the performance from each location. Zusätzlich zur Bereitstellung eines zuverlässigeren Prüfmechanismus können die Ergebnisse Ihnen helfen, den Bereitstellungsort für die Anwendung zu bestimmen und zu entscheiden, ob sie in mehr als einem Rechenzentrum bereitgestellt werden soll.In addition to providing a more robust checking mechanism, the results can help you decide on the deployment location for the application—and whether to deploy it in more than one datacenter.

Außerdem sollten Tests auf alle von Kunden verwendeten Dienstinstanzen angewendet werden, um sicherzustellen, dass die Anwendung für alle Kunden einwandfrei funktioniert.Tests should also be run against all the service instances that customers use to ensure the application is working correctly for all customers. Wenn beispielsweise der Kundenspeicher auf mehr als ein Speicherkonto verteilt ist, sollte der Überwachungsprozess alle diese Konten überprüfen.For example, if customer storage is spread across more than one storage account, the monitoring process should check all of these.

Probleme und ÜberlegungenIssues and considerations

Beachten Sie die folgenden Punkte bei der Entscheidung, wie dieses Muster implementiert werden soll:Consider the following points when deciding how to implement this pattern:

Validierung der Antwort.How to validate the response. Ist zum Beispiel bloß der Statuscode 200 (OK) ausreichend, um zu bestätigen, dass die Anwendung ordnungsgemäß funktioniert?For example, is just a single 200 (OK) status code sufficient to verify the application is working correctly? Obwohl dies die grundlegendste Kennzahl für die Anwendungsverfügbarkeit und die Minimalimplementierung dieses Musters ist, liefert es wenig Informationen über die Vorgänge, Trends und mögliche anstehende Probleme in der Anwendung.While this provides the most basic measure of application availability, and is the minimum implementation of this pattern, it provides little information about the operations, trends, and possible upcoming issues in the application.

Stellen Sie sicher, dass die Anwendung 200 (OK) richtigerweise nur dann zurückgibt, wenn die Zielressource gefunden und verarbeitet wird.Make sure that the application correctly returns a 200 (OK) only when the target resource is found and processed. In einigen Szenarien, wie z.B. bei Verwendung einer Masterseite als Host der Zielwebseite, sendet der Server den Statuscode 200 (OK) statt 404 (Nicht gefunden) zurück, auch wenn die Zielinhaltsseite nicht gefunden wurde.In some scenarios, such as when using a master page to host the target web page, the server sends back a 200 (OK) status code instead of a 404 (Not Found) code, even when the target content page was not found.

Die Anzahl der Endpunkte, die für eine Anwendung verfügbar gemacht werden.The number of endpoints to expose for an application. Ein Ansatz sieht vor, dass mindestens ein Endpunkt für die Kerndienste, die die Anwendung verwendet, und ein weiterer Endpunkt für Dienste mit geringerer Priorität verfügbar gemacht wird, sodass jedem Überwachungsergebnis unterschiedliche Wichtigkeitsstufen zugewiesen werden können.One approach is to expose at least one endpoint for the core services that the application uses and another for lower priority services, allowing different levels of importance to be assigned to each monitoring result. Erwägen Sie außerdem, weitere Endpunkte, wie z.B. einen für jeden Kerndienst, für mehr Granularität bei der Überwachung verfügbar zu machen.Also consider exposing more endpoints, such as one for each core service, for additional monitoring granularity. Beispielsweise kann eine Integritätsprüfung die Datenbank, den Speicher und einen externen Geocodierungsdienst einer Anwendung überprüfen, wobei jede Komponente einen anderen Grad an Verfügbarkeit und Antwortzeit erfordert.For example, a health verification check might check the database, storage, and an external geocoding service that an application uses, with each requiring a different level of uptime and response time. Die Anwendung kann immer noch funktionieren, auch wenn der Geocodierungsdienst oder eine andere Hintergrundaufgabe für einige Minuten nicht verfügbar ist.The application could still be healthy if the geocoding service, or some other background task, is unavailable for a few minutes.

Ob für die Überwachung derselbe Endpunkt verwendet werden soll, der für den allgemeinen Zugriff verwendet wird, wobei aber auf dem Endpunkt für den allgemeinen Zugriff ein bestimmter Pfad gewählt wird, der für die Überprüfung der Integrität bestimmt ist, z.B. „/HealthCheck/{GUID}/“.Whether to use the same endpoint for monitoring as is used for general access, but to a specific path designed for health verification checks, for example, /HealthCheck/{GUID}/ on the general access endpoint. Auf diese Weise können einige Funktionstests in der Anwendung von den Überwachungstools ausgeführt werden, wie z.B. das Hinzufügen einer neuen Benutzerregistrierung, das Anmelden und die Erteilung eines Testauftrags, während gleichzeitig überprüft wird, ob der allgemeine Zugriffsendpunkt verfügbar ist.This allows some functional tests in the application to be run by the monitoring tools, such as adding a new user registration, signing in, and placing a test order, while also verifying that the general access endpoint is available.

Die Art der Informationen, die im Dienst als Antwort auf Überwachungsanforderungen gesammelt werden sollen, und wie diese Informationen zurückgegeben werden können.The type of information to collect in the service in response to monitoring requests, and how to return this information. Die meisten vorhandenen Tools und Frameworks untersuchen nur den HTTP-Statuscode, den der Endpunkt zurückgibt.Most existing tools and frameworks look only at the HTTP status code that the endpoint returns. Um zusätzliche Informationen zurückzugeben und zu überprüfen, müssen Sie möglicherweise ein Überwachungshilfsprogramm oder einen Dienst selbst erstellen.To return and validate additional information, you might have to create a custom monitoring utility or service.

Umfang der zu sammelnden Informationen.How much information to collect. Eine übermäßige Verarbeitungslast während der Überprüfung kann die Anwendung ausbremsen und somit Auswirkungen auf andere Benutzer haben.Performing excessive processing during the check can overload the application and impact other users. Die dafür benötigte Zeit kann das Zeitlimit des Überwachungssystems überschreiten, sodass die Anwendung als nicht verfügbar markiert wird.The time it takes might exceed the timeout of the monitoring system so it marks the application as unavailable. Die meisten Anwendungen bieten eine Instrumentierung wie Fehlerhandler und Leistungsindikatoren, die die Leistung und detaillierte Fehlerinformationen protokollieren. Dies kann ausreichend sein, anstatt zusätzliche Informationen nach einer Integritätsprüfung zurückzugeben.Most applications include instrumentation such as error handlers and performance counters that log performance and detailed error information, this might be sufficient instead of returning additional information from a health verification check.

Zwischenspeichern des Endpunktstatus.Caching the endpoint status. Ein zu häufiges Durchführen der Integritätsprüfung kann mit hoher Systemlast verbunden sein.It could be expensive to run the health check too frequently. Wenn der Integritätsstatus beispielsweise über ein Dashboard gemeldet wird, möchten Sie nicht, dass jede Anforderung aus dem Dashboard eine Integritätsprüfung auslöst.If the health status is reported through a dashboard, for example, you don't want every request from the dashboard to trigger a health check. Lassen Sie stattdessen den Systemstatus regelmäßig überprüfen und den Status zwischenspeichern.Instead, periodically check the system health and cache the status. Machen Sie einen Endpunkt verfügbar, der den Status aus dem Cache zurückgibt.Expose an endpoint that returns the cached status.

Konfigurieren der Sicherheit der Überwachungsendpunkte zum Schutz vor öffentlichem Zugriff. Durch diesen kann die Anwendung böswilligen Angriffen ausgesetzt sein, aufgrund der Offenlegung sensibler Informationen gefährdet werden oder Opfer von Denial-of-Service-Angriffen (DoS) werden.How to configure security for the monitoring endpoints to protect them from public access, which might expose the application to malicious attacks, risk the exposure of sensitive information, or attract denial of service (DoS) attacks. Typischerweise sollte dies in der Anwendungskonfiguration erfolgen, damit problemlos eine Aktualisierung ohne Neustart der Anwendung durchgeführt werden kann.Typically this should be done in the application configuration so that it can be updated easily without restarting the application. Erwägen Sie eine oder mehrere der folgenden Vorgehensweisen:Consider using one or more of the following techniques:

  • Schützen Sie den Endpunkt, indem eine Authentifizierung angefordert wird.Secure the endpoint by requiring authentication. Sie können dies tun, indem Sie einen Authentifizierungssicherheitsschlüssel im Anforderungsheader verwenden oder Anmeldeinformationen mit der Anforderung übergeben, sofern der Überwachungsdienst oder das Tool die Authentifizierung unterstützt.You can do this by using an authentication security key in the request header or by passing credentials with the request, provided that the monitoring service or tool supports authentication.

    • Verwenden Sie einen verborgenen oder ausgeblendeten Endpunkt.Use an obscure or hidden endpoint. Machen Sie z.B. den Endpunkt an einer anderen IP-Adresse verfügbar als an der, die von der standardmäßigen Anwendungs-URL verwendet wird. Konfigurieren Sie den Endpunkt an einem nicht standardmäßigen HTTP-Port, und/oder verwenden Sie einen komplexen Pfad zur Testseite.For example, expose the endpoint on a different IP address to that used by the default application URL, configure the endpoint on a nonstandard HTTP port, and/or use a complex path to the test page. In der Regel können Sie in der Anwendungskonfiguration zusätzliche Endpunktadressen und -ports angeben und bei Bedarf Einträge für diese Endpunkte dem DNS-Server hinzufügen, um die direkte Angabe der IP-Adresse zu vermeiden.You can usually specify additional endpoint addresses and ports in the application configuration, and add entries for these endpoints to the DNS server if required to avoid having to specify the IP address directly.

    • Machen Sie eine Methode auf einem Endpunkt verfügbar, die einen Parameter wie einen Schlüsselwert oder einen Wert für die Betriebsart akzeptiert.Expose a method on an endpoint that accepts a parameter such as a key value or an operation mode value. Je nach Wert, der für diesen Parameter angegeben wird, kann der Code beim Empfangen einer Anforderung einen oder mehrere bestimmte Tests durchführen oder den Fehler 404 (Nicht gefunden) zurückgeben, wenn der Parameterwert nicht erkannt wird.Depending on the value supplied for this parameter, when a request is received the code can perform a specific test or set of tests, or return a 404 (Not Found) error if the parameter value isn't recognized. Die erkannten Parameterwerte können in der Anwendungskonfiguration festgelegt werden.The recognized parameter values could be set in the application configuration.

      DoS-Angriffe haben wahrscheinlich weniger Auswirkungen auf einen separaten Endpunkt, auf dem grundlegende Funktionstests durchgeführt werden, ohne den Betrieb der Anwendung zu beeinträchtigen.DoS attacks are likely to have less impact on a separate endpoint that performs basic functional tests without compromising the operation of the application. Vermeiden Sie im Idealfall Tests, die vertrauliche Informationen preisgeben.Ideally, avoid using a test that might expose sensitive information. Wenn Sie Informationen zurückgeben müssen, die für einen Angreifer nützlich sein könnten, überlegen Sie, wie Sie den Endpunkt und die Daten vor unbefugtem Zugriff schützen können.If you must return information that might be useful to an attacker, consider how you'll protect the endpoint and the data from unauthorized access. In diesem Fall reicht es nicht aus, sich nur auf Verschleierung zu verlassen.In this case just relying on obscurity isn't enough. Außerdem sollten Sie in Erwägung ziehen, eine HTTPS-Verbindung zu verwenden und sensible Daten zu verschlüsseln, obwohl dies die Verarbeitungslast des Servers erhöht.You should also consider using an HTTPS connection and encrypting any sensitive data, although this will increase the load on the server.

  • Zugreifen auf einen Endpunkt, der durch Authentifizierung geschützt ist.How to access an endpoint that's secured using authentication. Nicht alle Tools und Frameworks können so konfiguriert werden, dass Anmeldeinformationen in die Anforderung der Integritätsprüfung einbezogen werden.Not all tools and frameworks can be configured to include credentials with the health verification request. Beispielsweise können die in Microsoft Azure integrierten Funktionen zur Integritätsprüfung keine Authentifizierungsinformationen bereitstellen.For example, Microsoft Azure built-in health verification features can't provide authentication credentials. Einige Alternativen von Drittanbietern sind Pingdom, Panopta, NewRelic und Statuscake.Some third-party alternatives are Pingdom, Panopta, NewRelic, and Statuscake.

  • Sicherstellen, dass der Überwachungs-Agent richtig funktioniert.How to ensure that the monitoring agent is performing correctly. Ein Ansatz sieht vor, einen Endpunkt verfügbar zu machen, der einfach einen Wert aus der Anwendungskonfiguration oder einen Zufallswert zurückgibt, der zum Testen des Agents verwendet werden kann.One approach is to expose an endpoint that simply returns a value from the application configuration or a random value that can be used to test the agent.

    Stellen Sie außerdem sicher, dass das Überwachungssystem sich selbst überprüft, z.B. durch einen Selbsttest und integrierten Test, um falsche positive Ergebnisse zu vermeiden.Also ensure that the monitoring system performs checks on itself, such as a self-test and built-in test, to avoid it issuing false positive results.

Verwendung dieses MustersWhen to use this pattern

Dieses Muster ist hilfreich:This pattern is useful for:

  • Überwachung von Websites und Webanwendungen auf Verfügbarkeit.Monitoring websites and web applications to verify availability.
  • Überwachung von Websites und Webanwendungen auf ordnungsgemäßen Betrieb.Monitoring websites and web applications to check for correct operation.
  • Überwachung von Diensten auf mittlerer Ebene oder gemeinsam genutzten Diensten, um einen Fehler zu erkennen und zu isolieren, der andere Anwendungen stören könnte.Monitoring middle-tier or shared services to detect and isolate a failure that could disrupt other applications.
  • Ergänzen Sie die vorhandene Instrumentierung in der Anwendung, z.B. Leistungsindikatoren und Fehlerhandler.Complementing existing instrumentation in the application, such as performance counters and error handlers. Die Integritätsprüfung macht die Protokollierung und Prüfung in der Anwendung nicht überflüssig.Health verification checking doesn't replace the requirement for logging and auditing in the application. Die Instrumentierung kann nützliche Informationen für ein bestehendes Framework liefern, das Leistungsindikatoren und Fehlerprotokolle überwacht, um Fehlfunktionen oder andere Probleme zu erkennen.Instrumentation can provide valuable information for an existing framework that monitors counters and error logs to detect failures or other issues. Sie kann jedoch keine Informationen liefern, wenn die Anwendung nicht verfügbar ist.However, it can't provide information if the application is unavailable.

BeispielExample

Die folgenden Codebeispiele, die der HealthCheckController-Klasse entnommen wurden (ein Beispiel, das dieses Muster veranschaulicht, ist auf GitHub verfügbar), demonstrieren das Verfügbarmachen eines Endpunkts für die Durchführung einer Reihe von Integritätsprüfungen.The following code examples, taken from the HealthCheckController class (a sample that demonstrates this pattern is available on GitHub), demonstrates exposing an endpoint for performing a range of health checks.

Die CoreServices-Methode, die unten in C# gezeigt wird, wendet eine Reihe von Prüfungen auf Dienste an, die in der Anwendung verwendet werden.The CoreServices method, shown below in C#, performs a series of checks on services used in the application. Wenn alle Tests fehlerfrei verlaufen, gibt die Methode den Statuscode 200 (OK) zurück.If all of the tests run without error, the method returns a 200 (OK) status code. Wenn einer der Tests eine Ausnahme auslöst, gibt die Methode den Statuscode 500 (Interner Fehler) zurück.If any of the tests raises an exception, the method returns a 500 (Internal Error) status code. Die Methode kann im Falle eines Fehlers optional zusätzliche Informationen zurückgeben, sofern das Überwachungstool oder -framework diese nutzen kann.The method could optionally return additional information when an error occurs, if the monitoring tool or framework is able to use it.

public ActionResult CoreServices()
{
  try
  {
    // Run a simple check to ensure the database is available.
    DataStore.Instance.CoreHealthCheck();

    // Run a simple check on our external service.
    MyExternalService.Instance.CoreHealthCheck();
  }
  catch (Exception ex)
  {
    Trace.TraceError("Exception in basic health check: {0}", ex.Message);

    // This can optionally return different status codes based on the exception.
    // Optionally it could return more details about the exception.
    // The additional information could be used by administrators who access the
    // endpoint with a browser, or using a ping utility that can display the
    // additional information.
    return new HttpStatusCodeResult((int)HttpStatusCode.InternalServerError);
  }
  return new HttpStatusCodeResult((int)HttpStatusCode.OK);
}

Die ObscurePath-Methode zeigt, wie Sie einen Pfad in der Anwendungskonfiguration lesen und als Endpunkt für Tests verwenden können.The ObscurePath method shows how you can read a path from the application configuration and use it as the endpoint for tests. Dieses Beispiel in C# zeigt auch, wie Sie eine ID als Parameter akzeptieren und verwenden können, um nach gültigen Anforderungen zu suchen.This example, in C#, also shows how you can accept an ID as a parameter and use it to check for valid requests.

public ActionResult ObscurePath(string id)
{
  // The id could be used as a simple way to obscure or hide the endpoint.
  // The id to match could be retrieved from configuration and, if matched,
  // perform a specific set of tests and return the result. If not matched it
  // could return a 404 (Not Found) status.

  // The obscure path can be set through configuration to hide the endpoint.
  var hiddenPathKey = CloudConfigurationManager.GetSetting("Test.ObscurePath");

  // If the value passed does not match that in configuration, return 404 (Not Found).
  if (!string.Equals(id, hiddenPathKey))
  {
    return new HttpStatusCodeResult((int)HttpStatusCode.NotFound);
  }

  // Else continue and run the tests...
  // Return results from the core services test.
  return this.CoreServices();
}

Die TestResponseFromConfig-Methode zeigt, wie Sie einen Endpunkt verfügbar machen können, der eine Überprüfung auf einen bestimmten Konfigurationseinstellungswert durchführt.The TestResponseFromConfig method shows how you can expose an endpoint that performs a check for a specified configuration setting value.

public ActionResult TestResponseFromConfig()
{
  // Health check that returns a response code set in configuration for testing.
  var returnStatusCodeSetting = CloudConfigurationManager.GetSetting(
                                                          "Test.ReturnStatusCode");

  int returnStatusCode;

  if (!int.TryParse(returnStatusCodeSetting, out returnStatusCode))
  {
    returnStatusCode = (int)HttpStatusCode.OK;
  }

  return new HttpStatusCodeResult(returnStatusCode);
}

Überwachen von Endpunkten in von Azure gehosteten AnwendungenMonitoring endpoints in Azure hosted applications

Es folgen Optionen für die Überwachung von Endpunkten in Azure-Anwendungen:Some options for monitoring endpoints in Azure applications are:

  • Verwenden Sie die integrierten Überwachungsfunktionen von Azure.Use the built-in monitoring features of Azure.

  • Verwenden Sie einen Dienst oder ein Framework eines Drittanbieters wie Microsoft System Center Operations Manager.Use a third-party service or a framework such as Microsoft System Center Operations Manager.

  • Erstellen Sie selbst ein Hilfsprogramm oder einen Dienst, das/der auf Ihrem eigenen oder einem gehosteten Server ausgeführt wird.Create a custom utility or a service that runs on your own or on a hosted server.

    Auch wenn Azure eine recht umfassende Reihe von Überwachungsoptionen bietet, können Sie zusätzliche Dienste und Tools nutzen, um zusätzliche Informationen bereitzustellen.Even though Azure provides a reasonably comprehensive set of monitoring options, you can use additional services and tools to provide extra information. Der Azure-Verwaltungsdienst bietet einen integrierten Überwachungsmechanismus für Warnungsregeln.Azure Management Services provides a built-in monitoring mechanism for alert rules. Im Abschnitt „Warnungen“ auf der Seite der Verwaltungsdienste im Azure-Portal können Sie bis zu zehn Warnungsregeln pro Abonnement für Ihre Dienste konfigurieren.The alerts section of the management services page in the Azure portal allows you to configure up to ten alert rules per subscription for your services. Diese Regeln geben eine Bedingung und einen Schwellenwert für einen Dienst an, wie z.B. die CPU-Auslastung oder Anzahl der Anforderungen oder Fehler pro Sekunde. Der Dienst kann automatisch E-Mail-Benachrichtigungen an Adressen senden, die Sie in jeder Regel definieren.These rules specify a condition and a threshold value for a service such as CPU load, or the number of requests or errors per second, and the service can automatically send email notifications to addresses you define in each rule.

Die Bedingungen, die Sie überwachen können, variieren je nach Hostingmechanismus, den Sie für Ihre Anwendung wählen (wie z. B. Azure Web Sites, Azure Cloud Services, Azure Virtual Machines oder Azure Mobile Services). Doch alle bieten die Möglichkeit, eine Warnungsregel zu erstellen, die einen Webendpunkt verwendet, den Sie in den Einstellungen für Ihren Dienst angeben.The conditions you can monitor vary depending on the hosting mechanism you choose for your application (such as Web Sites, Cloud Services, Virtual Machines, or Mobile Services), but all of these include the ability to create an alert rule that uses a web endpoint you specify in the settings for your service. Dieser Endpunkt muss rechtzeitig reagieren, damit das Warnsystem erkennen kann, dass die Anwendung ordnungsgemäß funktioniert.This endpoint should respond in a timely way so that the alert system can detect that the application is operating correctly.

Weitere Informationen finden Sie unter Erstellen von Warnungsbenachrichtigungen.Read more information about creating alert notifications.

Wenn Sie Ihre Anwendung in Azure Cloud Services-Web- und -Workerrollen oder Azure Virtual Machines hosten, können Sie einen der in Azure integrierten Dienste namens Traffic Manager nutzen.If you host your application in Azure Cloud Services web and worker roles or Virtual Machines, you can take advantage of one of the built-in services in Azure called Traffic Manager. Traffic Manager ist ein Routing- und Lastenausgleichsdienst, der Anforderungen an bestimmte Instanzen Ihrer gehosteten Cloud Services-Anwendung auf Grundlage einer Reihe von Regeln und Einstellungen verteilen kann.Traffic Manager is a routing and load-balancing service that can distribute requests to specific instances of your Cloud Services hosted application based on a range of rules and settings.

Zusätzlich zu den Routinganforderungen pingt Traffic Manager regelmäßig eine URL, einen Port und einen relativen Pfad, die/den Sie angeben, um festzustellen, welche Instanzen der in seinen Regeln definierten Anwendung aktiv sind und auf Anforderungen reagieren.In addition to routing requests, Traffic Manager pings a URL, port, and relative path that you specify on a regular basis to determine which instances of the application defined in its rules are active and are responding to requests. Wenn der Statuscode 200 (OK) erkannt wird, markiert Traffic Manager die Anwendung als verfügbar.If it detects a status code 200 (OK), it marks the application as available. Alle anderen Statuscodes bewirken, dass Traffic Manager die Anwendung als offline markiert.Any other status code causes Traffic Manager to mark the application as offline. Sie können den Status in der Traffic Manager-Konsole anzeigen und die Regel so konfigurieren, dass Anforderungen an andere Instanzen der Anwendung umgeleitet werden, die antworten.You can view the status in the Traffic Manager console, and configure the rule to reroute requests to other instances of the application that are responding.

Traffic Manager wartet jedoch nur zehn Sekunden auf eine Antwort von der Überwachungs-URL.However, Traffic Manager will only wait ten seconds to receive a response from the monitoring URL. Daher müssen Sie sicherstellen, dass Ihr Code zur Überprüfung des Integritätsstatus in dieser Zeit ausgeführt wird, wobei die Netzwerklatenz für den Roundtrip vom Traffic Manager zu Ihrer Anwendung und zurück berücksichtigt werden muss.Therefore, you should ensure that your health verification code executes in this time, allowing for network latency for the round trip from Traffic Manager to your application and back again.

Erfahren Sie mehr zur Verwendung von Traffic Manager zum Überwachen Ihrer Anwendungen.Read more information about using Traffic Manager to monitor your applications. Traffic Manager wird auch unter Multiple Datacenter Deployment Guidance (Bereitstellungsanleitung für mehrere Rechenzentren) erläutert.Traffic Manager is also discussed in Multiple Datacenter Deployment Guidance.

Der folgende Leitfaden kann für die Implementierung dieses Musters relevant sein:The following guidance can be useful when implementing this pattern:

  • Instrumentations- und Telemetrieanleitungen.Instrumentation and Telemetry Guidance. Die Überprüfung des Status von Diensten und Komponenten erfolgt in der Regel mithilfe von Tests. Es ist jedoch auch nützlich, über Informationen zu verfügen, um die Anwendungsleistung zu überwachen und Ereignisse zu erkennen, die zur Laufzeit auftreten.Checking the health of services and components is typically done by probing, but it's also useful to have information in place to monitor application performance and detect events that occur at runtime. Diese Daten können an Überwachungstools als Zusatzinformationen für die Integritätsüberwachung zurückgegeben werden.This data can be transmitted back to monitoring tools as additional information for health monitoring. In der Instrumentierungs- und Telemetrieanleitung wird das Erfassen von Ferndiagnoseinformationen untersucht, die mithilfe der Instrumentierung in Anwendungen gesammelt werden.Instrumentation and Telemetry Guidance explores gathering remote diagnostics information that's collected by instrumentation in applications.
  • Empfangen von WarnungsbenachrichtigungenReceiving alert notifications.
  • Zu diesem Muster gehört eine herunterladbare Beispielanwendung.This pattern includes a downloadable sample application.