Freigeben über


Überwachen von App Service-Instanzen mit der Integritätsprüfung

In diesem Artikel wird beschrieben, wie Sie die Integritätsprüfung im Azure-Portal verwenden, um Azure App Service-Instanzen zu überwachen. Die Integritätsprüfung erhöht die Verfügbarkeit Ihrer Anwendung, indem Anforderungen von fehlerhaften Instanzen weggeleitet und Instanzen ersetzt werden, wenn sie fehlerhaft bleiben. Dies geschieht, indem Sie Ihre Webanwendung jede Minute über einen von Ihnen ausgewählten Pfad pingen.

Diagramm, das die Funktionsweise der Gesundheitsprüfung zeigt.

Beachten Sie, dass /api/health nur ein Beispiel ist. Es gibt keinen Standardmäßigen Integritätsprüfungspfad. Sie müssen sicherstellen, dass der von Ihnen ausgewählte Pfad ein gültiger Pfad ist, der in Ihrer Anwendung vorhanden ist.

Funktionsweise der Gesundheitsprüfung

  • Wenn der Integritätsprüfung ein Pfad zu Ihrer App übergeben wird, pingt diese den Pfad bei allen Instanzen Ihrer App Service-App in Intervallen von 1 Minute.
  • Wenn eine Web-App, die auf einer bestimmten Instanz ausgeführt wird, nach 10 Anforderungen nicht mit einem Statuscode zwischen 200 und 299 (einschließlich) antwortet, stellt App Service fest, dass die Instanz fehlerhaft ist, und entfernt sie aus dem Lastenausgleich für diese Web-App. Die erforderliche Anzahl fehlerhafter Anforderungen, damit eine Instanz als fehlerhaft eingestuft wird, kann auf ein Minimum von zwei Anforderungen konfiguriert werden.
  • Nachdem die Instanz entfernt wurde, fährt die Integritätsprüfung mit dem Pingen fort. Wenn die Instanz mit einem fehlerfreien Statuscode (200-299) reagiert, wird die Instanz an das Lastenausgleichsmodul zurückgegeben.
  • Wenn die Web-App, die auf einer Instanz ausgeführt wird, eine Stunde lang fehlerhaft bleibt, wird die Instanz durch eine neue ersetzt.
  • Beim Aufskalieren pingt App Service den Pfad der Integritätsüberprüfung, um sicherzustellen, dass neue Instanzen bereit sind.

Hinweis

  • Die Integritätsprüfung folgt keinen 302-Umleitungen.
  • Höchstens wird eine Instanz pro Stunde ersetzt, und es gibt maximal drei Instanzen pro Tag pro App Service-Plan.
  • Wenn die Integritätsprüfung den Status Waiting for health check responsesendet, ist die Überprüfung wahrscheinlich aufgrund eines HTTP-Statuscodes von 307 fehlgeschlagen. Dieser Status kann auftreten, wenn Sie HTTPS-Umleitung aktiviert, aber deaktiviert haben HTTPS Only .

Aktivieren der Integritätsprüfung

Screenshot, der zeigt, wie Sie die Integritätsprüfung im Azure-Portal aktivieren.

  1. Um die Integritätsprüfung zu aktivieren, wechseln Sie zum Azure-Portal, und wählen Sie Ihre App Service-App aus.
  2. Wählen Sie im linken Bereich unter "Überwachung" die Option "Integritätsprüfung" aus.
  3. Wählen Sie Aktivieren aus, und geben Sie einen gültigen URL-Pfad für Ihre Anwendung an, z. B. /health oder /api/health.
  4. Klicken Sie auf Speichern.

Hinweis

  • Ihr App Service-Plan sollte auf zwei oder mehr Instanzen skaliert sein, um die Integritätsprüfung in vollem Umfang nutzen zu können.
  • Der Pfad der Gesundheitsüberprüfung sollte die wesentlichen Komponenten Ihrer Anwendung auf Ihre Funktionsfähigkeit überprüfen. Wenn Ihre Anwendung z. B. von einer Datenbank und einem Messagingsystem abhängig ist, sollte der Endpunkt der Integritätsüberprüfung eine Verbindung mit diesen Komponenten herstellen. Wenn die Anwendung keine Verbindung mit einer kritischen Komponente herstellen kann, sollte der Pfad einen Antwortcode auf 500-Ebene zurückgeben, um anzugeben, dass die App fehlerhaft ist. Wenn der Pfad innerhalb von einer Minute keine Antwort zurückgibt, wird der Ping der Integritätsprüfung ebenfalls als fehlerhaft betrachtet.
  • Stellen Sie beim Auswählen des Pfads für die Integritätsprüfung sicher, dass Sie einen Pfad auswählen, der nur dann einen Statuscode 200 zurückgibt, wenn die App vollständig hochgefahren ist.
  • Um die Integritätsprüfung für eine Funktions-App zu verwenden, müssen Sie einen Premium- oder dedizierten Hostingplan verwenden.
  • Ausführliche Informationen zur Integritätsprüfung für Funktions-Apps finden Sie unter Überwachen von Funktions-Apps mithilfe der Integritätsprüfung.

Achtung

Durch Änderungen an der Konfiguration der Integritätsprüfung wird Ihre App neu gestartet. Um die Auswirkungen auf Produktions-Apps zu minimieren, empfiehlt es sich, Stagingplätze zu konfigurieren und in die Produktion zu wechseln.

Konfiguration

Zusätzlich zum Konfigurieren der Optionen der Integritätsprüfung können Sie auch die folgenden App-Einstellungen konfigurieren:

Name der App-Einstellung Zulässige Werte BESCHREIBUNG
WEBSITE_HEALTHCHECK_MAXPINGFAILURES 2–10 Die Anzahl der fehlgeschlagenen Anforderungen, die erforderlich sind, damit eine Instanz als fehlerhaft eingestuft und aus dem Lastenausgleich entfernt wird. Wenn diese Einstellung beispielsweise auf 2 festgelegt ist, werden Ihre Instanzen nach zwei fehlgeschlagenen Pings entfernt. (Der Standardwert ist 10.)
WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT 1–100 Um zu vermeiden, dass die verbleibenden fehlerfreien Instanzen überlastet werden, werden standardmäßig nicht mehr als die Hälfte der Instanzen gleichzeitig aus dem Lastenausgleich ausgeschlossen. Wenn z. B. ein App Service-Plan auf vier Instanzen skaliert ist und drei fehlerhaft sind, werden zwei ausgeschlossen. Die anderen beiden Instanzen (eine fehlerfreie und eine fehlerhafte) empfangen weiterhin Anforderungen. In einem Szenario, in dem alle Instanzen fehlerhaft sind, wird keine ausgeschlossen.
Um dieses Verhalten zu überschreiben, legen Sie diese App-Einstellung auf einen Wert zwischen 1 und 100 fest. Ein höherer Wert führt dazu, dass mehr fehlerhafte Instanzen entfernt werden. (Der Standardwert ist 50.)

Authentifizierung und Sicherheit

Die Gesundheitsprüfung integriert sich in die Authentifizierungs- und Autorisierungsfeatures von App Service. Es sind keine anderen Einstellungen erforderlich, wenn diese Sicherheitsfeatures aktiviert sind.

Wenn Sie Ihr eigenes Authentifizierungssystem verwenden, muss der Integritätsprüfungspfad anonymen Zugriff zulassen. Um sicherheit für den Endpunkt "Integritätsprüfung" bereitzustellen, sollten Sie zuerst Features wie IP-Einschränkungen, Clientzertifikate oder ein virtuelles Netzwerk verwenden, um den Anwendungszugriff einzuschränken. Nachdem Sie diese Features eingerichtet haben, können Sie die Integritätsprüfungsanforderung authentifizieren, indem Sie den Header x-ms-auth-internal-token prüfen und überprüfen, ob sie dem SHA256-Hash der Umgebungsvariable WEBSITE_AUTH_ENCRYPTION_KEYentspricht. Wenn sie übereinstimmen, ist die Integritätsprüfungsanforderung gültig und stammt von App Service.

Hinweis

Speziell für die Azure Functions-Authentifizierung muss die Funktion, die als Endpunkt für die Integritätsprüfung dient, anonymen Zugriff zulassen.

using System;
using System.Security.Cryptography;
using System.Text;

/// <summary>
/// Method <c>HeaderMatchesEnvVar</c> returns true if <c>headerValue</c> matches WEBSITE_AUTH_ENCRYPTION_KEY.
/// </summary>
public bool HeaderMatchesEnvVar(string headerValue)
{
    var sha = SHA256.Create();
    string envVar = Environment.GetEnvironmentVariable("WEBSITE_AUTH_ENCRYPTION_KEY");
    string hash = Convert.ToBase64String(sha.ComputeHash(Encoding.UTF8.GetBytes(envVar)));
    return string.Equals(hash, headerValue, StringComparison.Ordinal);
}

Hinweis

Der Header x-ms-auth-internal-token ist nur in App Service für Windows verfügbar.

Instanzen

Nachdem die Integritätsprüfung aktiviert wurde, können Sie den Status Ihrer Anwendungsinstanzen über die Registerkarte " Instanzen " neu starten und überwachen. Auf der Registerkarte " Instanzen " werden der Name Ihrer Instanz und der Status der Instanz dieser Anwendung angezeigt. Sie können auch manuell einen erweiterten Anwendungsneustart über diese Registerkarte ausführen, indem Sie die Schaltfläche " Neu starten " auswählen.

Wenn der Status Ihrer Anwendungsinstanz fehlerhaft ist , können Sie den Arbeitsprozess der jeweiligen App manuell neu starten, indem Sie in der Tabelle die Schaltfläche " Neu starten " auswählen. Der Neustart wirkt sich nicht auf die anderen Anwendungen aus, die im gleichen App Service-Plan gehostet werden. Wenn andere Anwendungen denselben App Service-Plan wie die Instanz verwenden, werden sie im Bereich aufgeführt, der geöffnet wird, wenn Sie "Neu starten" auswählen.

Wenn Sie die Instanz neu starten und der Neustartvorgang fehlschlägt, haben Sie die Möglichkeit, den Worker zu ersetzen. (Pro Stunde kann nur eine Instanz ersetzt werden.) Diese Aktion wirkt sich auf alle Anwendungen aus, die denselben App Service-Plan verwenden.

Für Windows-Anwendungen können Sie Prozesse auch über den Prozess-Explorer anzeigen. Auf diese Weise erhalten Sie weitere Einblicke in die Prozesse der Instanz, einschließlich Threadanzahl, privater Arbeitsspeicher und gesamter CPU-Zeit.

Sammlung von Diagnoseinformationen

Für Windows-Anwendungen haben Sie die Möglichkeit, Diagnoseinformationen auf der Registerkarte " Integritätsprüfung " zu sammeln. Durch aktivieren der Diagnoseauflistung wird eine Regel zum automatischen Heilen hinzugefügt, die Speicherabbilder für fehlerhafte Instanzen erstellt und in einem bestimmten Speicherkonto speichert. Durch Aktivieren dieser Option werden die Konfigurationen für die automatische Reparatur geändert. Wenn Regeln für die automatische Reparatur vorhanden sind, empfiehlt es sich, dies über die App Service-Diagnose einzurichten.

Nachdem die Diagnosesammlung aktiviert wurde, können Sie ein Speicherkonto erstellen oder ein vorhandenes Konto für Ihre Dateien auswählen. Sie können nur Speicherkonten auswählen, die sich in derselben Region wie Ihre Anwendung befinden. Denken Sie daran, dass durch das Speichern die Anwendung neu gestartet wird. Wenn sich nach dem Speichern herausstellt, dass nach kontinuierlichem Pingen Ihre Standortinstanzen fehlerhaft sind, können Sie zu Ihrer Speicherkontoressource wechseln und die Speicherabbilder anzeigen.

Überwachung

Nachdem Sie den Integritätsprüfungspfad Ihrer Anwendung bereitgestellt haben, können Sie den Status Ihrer Website mithilfe von Azure Monitor überwachen. Wählen Sie auf der Seite " Integritätsprüfung " im Portal "Metriken " in der Symbolleiste aus. Dadurch wird eine neue Seite geöffnet, auf der Sie den Statusverlauf der Integritätsprüfung der Website sehen und eine neue Warnungsregel erstellen können. Die Statusmetrik "Integritätsprüfung" aggregiert die erfolgreichen Pings und zeigt Fehler nur an, wenn die Instanz basierend auf dem konfigurierten Schwellenwert für die Integritätsprüfung zum Lastenausgleich als fehlerhaft eingestuft wird. Dieser Wert ist standardmäßig auf 10 Minuten festgelegt, sodass es 10 aufeinander folgende Pings (1 pro Minute) für eine bestimmte Instanz als fehlerhaft betrachtet und nur dann in der Metrik angezeigt wird. Weitere Informationen zur Überwachung Ihrer Websites finden Sie unter Azure App Service-Kontingente und Metriken.

Begrenzungen

  • Die Integritätsprüfung kann für Free und Shared App Service-Pläne aktiviert werden, sodass Sie Metriken zur Integrität der Website haben und Warnungen einrichten können. Da kostenlose und freigegebene Websites jedoch keine Skalierung unterstützen, werden fehlerhafte Instanzen nicht automatisch ersetzt. Sie sollten auf den Basic-Tarif oder höher hochskalieren, damit Sie horizontal auf zwei oder mehr Instanzen skalieren und den vollen Vorteil der Integritätsprüfung nutzen können. Wir empfehlen diese Konfiguration für produktionsorientierte Anwendungen, da sie die Verfügbarkeit und Leistung Ihrer App erhöht.
  • Ein App Service-Plan kann maximal eine fehlerhafte Instanz pro Stunde und höchstens drei Instanzen pro Tag ersetzt erhalten.
  • Es gibt einen nicht konfigurierbaren Grenzwert für die Gesamtanzahl von Instanzen, die durch die Integritätsprüfung pro Skalierungseinheit ersetzt werden. Bei Erreichen dieses Grenzwerts werden keine fehlerhaften Instanzen mehr ersetzt. Dieser Wert wird alle 12 Stunden zurückgesetzt.

Häufig gestellte Fragen

Was geschieht, wenn meine App in einer einzigen Instanz ausgeführt wird?

Wenn Ihre App nur auf eine Instanz skaliert ist und fehlerhaft wird, wird sie nicht aus dem Lastenausgleich entfernt, da dadurch Ihre Anwendung vollständig ausfallen würde. Nach einer Stunde fortlaufender fehlerhafter Pings wird die Instanz jedoch ersetzt. Skalieren Sie auf zwei oder mehr Instanzen auf, um den Umleitungsvorteil der Integritätsprüfung zu erhalten. Wenn Ihre App in einer einzigen Instanz ausgeführt wird, können Sie die Integritätsprüfungsfunktion weiterhin verwenden, um den Status Ihrer Anwendung nachzuverfolgen.

Warum werden die Health-Check-Anfragen nicht in meinen Webserver-Protokollen angezeigt?

Die Gesundheitsprüfungsanfragen werden intern an Ihre Website gesendet, sodass die Anfrage nicht in den Webserverprotokollen angezeigt wird. Sie können Ihrem Integritätsprüfungscode Protokollanweisungen hinzufügen, um Protokolle darüber zu führen, wenn ihr Integritätsprüfungspfad gepingt wird.

Werden Gesundheitscheck-Anfragen über HTTP oder HTTPS gesendet?

Bei App Service für Windows und Linux werden die Integritätsprüfungsanforderungen über HTTPS gesendet, wenn auf der Website Nur HTTPS aktiviert ist. Andernfalls werden sie über HTTP gesendet.

Folgt die Integritätsprüfung den im Anwendungscode konfigurierten Weiterleitungen zwischen der Standarddomäne und der benutzerdefinierten Domäne?

Nein, das Feature „Gesundheitscheck“ überprüft den Pfad der Standarddomäne der Webanwendung. Wenn eine Umleitung von der Standarddomäne zu einer benutzerdefinierten Domäne vorhanden ist, ist der statuscode, den die Integritätsprüfung zurückgibt, nicht 200. Es wird eine Umleitung (301) sein, was den Worker als fehlerhaft kennzeichnet.

Was geschieht, wenn ich mehrere Apps im selben App Service-Plan habe?

Fehlerhafte Instanzen werden immer aus der Lastenausgleichsrotation entfernt, unabhängig von anderen Apps im App Service-Plan (bis zu dem in WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT angegebenen Prozentsatz). Wenn eine App in einer Instanz mehr als eine Stunde lang ungesund bleibt, wird die Instanz nur ersetzt, wenn alle anderen Apps, für die die Integritätsprüfung aktiviert ist, ebenfalls fehlerhaft sind. Apps, für die die Integritätsprüfung nicht aktiviert ist, werden nicht berücksichtigt.

Beispiel

Angenommen, Sie haben zwei Anwendungen (oder eine App mit einem Steckplatz) mit aktivierter Integritätsprüfung. Sie werden App A und App B genannt. Sie befinden sich im gleichen App Service-Plan, und der Plan wird auf vier Instanzen skaliert. Wenn App A auf zwei Instanzen fehlerhaft wird, sendet der Lastenausgleich auf diesen beiden Instanzen keine Anforderungen an App A mehr. Anforderungen auf diesen Instanzen werden weiterhin an App B weitergeleitet, vorausgesetzt, App B ist fehlerfrei. Wenn App A auf diesen beiden Instanzen für mehr als eine Stunde fehlerhaft bleibt, werden diese Instanzen nur ersetzt, wenn App B auf diesen Instanzen ebenfalls fehlerhaft ist. Wenn App B fehlerfrei ist, werden die Instanzen nicht ersetzt.

Diagramm des Beispielszenarios.

Hinweis

Wenn eine andere Website oder ein anderer Platz im Plan (App C) vorhanden ist, für die die Integritätsprüfung nicht aktiviert ist, wird sie für den Ersatz der Instanz nicht berücksichtigt.

Was ist, wenn alle meine Instanzen fehlerhaft sind?

Wenn alle Instanzen Ihrer Anwendung fehlerhaft sind, entfernt Der App-Dienst keine Instanzen aus dem Lastenausgleich. In diesem Szenario würde das Entfernen aller fehlerhaften App-Instanzen aus der Lastenausgleichsrotation effektiv zu einem Ausfall Ihrer Anwendung führen. Der Instanzersetzungsfall tritt jedoch weiterhin auf.

Was geschieht bei dem Austausch von Einschubfächern?

Die Integritätsprüfungskonfiguration ist nicht slotspezifisch. Nach einem Tausch wird daher die Integritätsprüfungskonfiguration des getauschten Steckplatzes auf den Zielplatz angewendet und umgekehrt. Wenn beispielsweise die Integritätsprüfung für ihren Stagingplatz aktiviert ist, wird der konfigurierte Endpunkt nach einem Tausch auf den Produktionsplatz angewendet. Wir empfehlen, eine konsistente Konfiguration sowohl für Produktions- als auch für Nichtproduktionsplätze zu verwenden, um unerwartetes Verhalten nach einem Swap zu verhindern.

Funktioniert die Integritätsprüfung in App-Dienstumgebungen?

Ja, die Integritätsprüfung ist für App Service Environment v3 verfügbar.