Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verteilte Anwendungen und Dienste, die in der Cloud ausgeführt werden, sind komplexe Softwareteile, die viele bewegliche Teile umfassen. In einer Produktionsumgebung ist es wichtig, nachzuverfolgen, wie Kunden Ihr System verwenden, die Ressourcenauslastung nachverfolgen und die Integrität und Leistung Ihres Systems überwachen. Sie können diese Informationen verwenden, um Probleme zu erkennen und zu beheben und potenzielle Probleme zu erfassen, bevor sie auftreten.
Überwachungs- und Diagnoseszenarien
Sie können die Überwachung verwenden, um Einblicke in die Funktionsweise eines Systems zu erhalten. Die Überwachung ist ein wichtiger Bestandteil der Aufrechterhaltung von QoS-Zielen (Quality of Service). Erfassen von Überwachungsdaten für die folgenden gängigen Szenarien:
Stellen Sie sicher, dass das System fehlerfrei bleibt.
Verfolgen Sie die Verfügbarkeit des Systems und seiner Komponenten.
Halten Sie die Leistung aufrecht, um sicherzustellen, dass der Durchsatz des Systems nicht unerwartet beeinträchtigt wird, da das Arbeitsvolumen steigt.
Stellen Sie sicher, dass das System die Service-Level-Agreements (SLAs) einhält.
Schützen Sie den Datenschutz und die Sicherheit des Systems, der Benutzer und deren Daten.
Nachverfolgen von Überwachungen oder behördlichen Vorgängen.
Überwachen Sie die tägliche Nutzung des Systems, und beheben Sie Trends, die zu Problemen führen können.
Verfolgen Sie probleme, die auftreten, vom anfänglichen Bericht bis hin zur Analyse möglicher Ursachen, Berichtigung, Softwareupdates und Bereitstellung.
Vorgänge nachverfolgen und Software-Releases debuggen.
Note
Dieser Artikel konzentriert sich auf die häufigsten Situationen für die Überwachung. Andere Szenarien sind möglicherweise weniger häufig oder spezifisch für Ihre Umgebung.
In den folgenden Abschnitten werden diese Szenarien ausführlicher beschrieben.
Gesundheitsüberwachung
Ein funktionsfähiges System läuft und kann Anfragen verarbeiten. Verwenden Sie die Integritätsüberwachung, um eine Momentaufnahme der aktuellen Integrität des Systems zu generieren, damit Sie überprüfen können, ob alle Komponenten wie erwartet funktionieren.
Einrichten von Warnungen
Das System sollte innerhalb von Sekunden eine Warnung auslösen, wenn ein Teil fehlerhaft ist. Warnungen können den Systemzustand anhand von Ampelsignalen anzeigen:
- Rot für fehlerhaft (das System stoppte)
- Gelb für teilweise funktionsfähig (das System läuft mit eingeschränkter Funktionalität)
- Grün für gesund
Ein umfassendes System zur Integritätsüberwachung zeigt Ihnen den Integritätsstatus der einzelnen Subsysteme und Komponenten, sodass Sie bestimmen können, welche Teile normal funktionieren und welche Teile Probleme haben.
Zustandsdaten erfassen
Die folgenden Quellen können die Rohdaten erzeugen, die für die Zustandsüberwachung erforderlich sind:
Verfolgen Sie die Ausführung von Benutzeranforderungen. Mithilfe dieser Informationen können Sie ermitteln, welche Anforderungen erfolgreich sind oder fehlschlagen und wie lange jede Anforderung dauert.
Überwachen Sie synthetische Benutzer. Dieser Prozess simuliert die Aktionen, die ein Benutzer ausführt, und folgt einer vordefinierten Reihe von Schritten. Erfassen Sie die Ergebnisse der einzelnen Schritte.
Protokollieren von Ausnahmen, Fehlern und Warnungen. Sie können diese Informationen aus ablaufverfolgungsanweisungen erfassen, die in den Anwendungscode eingebettet sind, und aus den Ereignisprotokollen von Diensten, auf die das System verweist.
Überwachen Sie den Zustand von Nicht-Microsoft-Diensten, die vom System verwendet werden. Möglicherweise müssen Sie die von diesen Diensten bereitgestellten Zustandsdaten abrufen und parsen.
Überwachen von Endpunkten
Erfassen Sie Umgebungsleistungsinformationen, z. B. cpu-Auslastung im Hintergrund oder Eingabe-/Ausgabevorgänge (E/A), einschließlich Netzwerkaktivitäten.
Gesundheitsdaten analysieren
Der Hauptfokus der Systemüberwachung besteht darin, schnell anzugeben, ob das System läuft. Die Sofortanalyse aktueller Daten kann eine Warnung auslösen, wenn eine kritische Komponente einen fehlerhaften Zustand aufweist.
Ein komplexeres System kann ein prädiktives Element enthalten, das eine kalte Analyse über aktuelle und aktuelle Workloads durchführt. Eine kalte Analyse kann Trends identifizieren und bestimmen, ob das System wahrscheinlich gesund bleibt oder mehr Ressourcen benötigt. Basieren Sie dieses prädiktive Element auf den folgenden kritischen Leistungsmetriken:
- Die Rate der Anforderungen, die an jeden Dienst oder Subsystem gerichtet sind
- Die Reaktionszeiten dieser Anfragen
- Das Datenvolumen, das zu und aus den einzelnen Diensten fließt
Wenn der Wert einer Metrik einen definierten Schwellenwert überschreitet, kann das System eine Warnung auslösen, um eine Skalierung hochzusetzen. Sie können auch Ressourcen hinzufügen, fehlerhafte Dienste neu starten oder Anforderungen mit niedrigerer Priorität drosseln, um die Systemintegrität aufrechtzuerhalten.
Verfügbarkeitsüberwachung
In einem fehlerfreien System sind alle Komponenten und Subsysteme verfügbar. Die Verfügbarkeitsüberwachung ist eng mit der Gesundheitsüberwachung verbunden. Die Systemüberwachung liefert einen sofortigen Überblick über den aktuellen Zustand des Systems. Die Verfügbarkeitsüberwachung verfolgt die Verfügbarkeit des Systems und seiner Komponenten, um Statistiken über die Betriebszeit zu generieren.
In vielen Systemen sind einige Komponenten, z. B. Datenbanken, mit integrierter Redundanz konfiguriert, um ein schnelles Failover zu ermöglichen, wenn ein schwerwiegender Fehler oder Verbindungsverlust auftritt. Sammeln Sie so viele Informationen wie möglich über diese Fehler, um die Ursache zu ermitteln, und ergreifen Sie Korrekturmaßnahmen, um Wiederholungen zu verhindern.
Die zum Nachverfolgen der Verfügbarkeit erforderlichen Daten hängen möglicherweise von mehreren Faktoren ab, die für die Anwendung, das System und die Umgebung spezifisch sind. Ein effektives Überwachungssystem erfasst die Verfügbarkeitsdaten, die diesen Faktoren auf niedriger Ebene entsprechen, und aggregiert sie dann, um ein Gesamtbild des Systems bereitzustellen. In einem E-Commerce-System kann beispielsweise die Geschäftsfunktionalität, die es einem Kunden ermöglicht, Bestellungen zu tätigen, vom Repository abhängen, in dem Bestelldetails gespeichert werden, und vom Zahlungssystem, das Geldtransaktionen verarbeitet. Die Verfügbarkeit des Auftragsplatzierungsfeatures hängt von der Verfügbarkeit des Repositorys und des Zahlungssubsystems ab.
Die Verfügbarkeitsüberwachungslösung bietet aktuelle und historische Ansichten des Verfügbarkeitsstatus jedes Subsystems. Sie werden schnell benachrichtigt, wenn ein oder mehrere Dienste fehlschlagen oder wenn Benutzer keine Verbindung mit Diensten herstellen können. Verwenden Sie diese Informationen, um Trends zu identifizieren, die dazu führen können, dass Subsysteme fehlschlagen. Sie können z. B. Verfügbarkeitsdaten verwenden, um zu erkennen, welche Dienste während der Spitzenverarbeitungszeit fehlschlagen.
Sammeln von Verfügbarkeitsdaten
Überwachen Sie synthetische Benutzer, protokollieren Sie Ausnahmen, Fehler und Warnungen und überwachen Sie Endpunkte, um die für die Verfügbarkeitsüberwachung erforderlichen Rohdaten zu generieren. Die Anwendung kann einen oder mehrere Health-Endpunkte bereitstellen, von denen jeder den Zugriff auf einen Funktionsbereich innerhalb des Systems überprüft. Das Überwachungssystem folgt einem definierten Zeitplan, um jeden Endpunkt zu pingen und die Ergebnisse zu sammeln, z. B. Erfolg oder Fehler.
Zeichnen Sie alle Timeouts, Netzwerkverbindungsfehler und Verbindungsversuche auf, und zeitstempeln Sie alle Daten.
Analysieren von Verfügbarkeitsdaten
Aggregieren und korrelieren Sie die Daten, um die folgenden Analysetypen zu unterstützen:
Die sofortige Verfügbarkeit des Systems und der Subsysteme.
Die Verfügbarkeitsfehlerraten des Systems und der Subsysteme. Korrelieren Sie Fehler mit bestimmten Aktivitäten, um die Ursachen eines Systemausfalls zu verstehen.
Eine historische Ansicht der Fehlerraten über einen bestimmten Zeitraum und die Auslastung des Systems, z. B. die Anzahl der Benutzeranforderungen, wenn ein Fehler auftritt.
Die Gründe für die Nichtverfügbarkeit des Systems oder Subsystems. Zu diesen Gründen gehören die Nichtausführung des Diensts, verlorene Konnektivität, Timeouts oder Fehlercodeantworten.
Sie können die prozentuale Verfügbarkeit eines Diensts über einen bestimmten Zeitraum berechnen, indem Sie die folgende Formel verwenden:
%Availability = ((Total Time – Total Downtime) / Total Time ) * 100
Verwenden Sie diese Formel für die SLA-Überwachung. Die Definition der Ausfallzeiten hängt vom Dienst ab. Der Azure DevOps Builddienst definiert z. B. Ausfallzeiten als Zeitraum in insgesamt akkumulierten Minuten, während der der Builddienst nicht verfügbar ist. Der Dienst wird für eine Minute als nicht verfügbar betrachtet, wenn alle fortlaufenden HTTP-Anforderungen in dieser Minute zu einem Fehlercode führen oder keine Antwort zurückgeben.
Leistungsüberwachung
Da sich die Anzahl der Benutzer erhöht, wächst die Größe der Datasets, auf die Benutzer zugreifen, und die Wahrscheinlichkeit, dass eine oder mehrere Komponenten fehlschlagen, wird wahrscheinlicher. Leistungsbeeinträchtigung tritt häufig auf, bevor Komponentenfehler auftreten. Wenn Sie Beeinträchtigungen erkennen können, können Sie proaktive Schritte ausführen, um Fehler zu verhindern.
Die Systemleistung hängt von mehreren Faktoren ab. In der Regel messen Sie jeden Faktor über Key Performance Indicators (KPIs), z. B. die Anzahl der Datenbanktransaktionen pro Sekunde oder das Volumen der Netzwerkanforderungen, die erfolgreich in einem bestimmten Zeitraum gewartet wurden. Einige dieser KPIs sind möglicherweise als spezifische Leistungskennzahlen verfügbar, während andere KPIs aus einer Kombination von Metriken abgeleitet werden können.
Note
Um festzustellen, ob die Leistung des Systems gut oder schlecht ist, müssen Sie dessen typisches Leistungsniveau kennen. Beobachten Sie das System, während es unter einer typischen Last funktioniert, und erfassen Sie die Daten für jeden KPI über einen bestimmten Zeitraum. Erwägen Sie, das System unter einer simulierten Auslastung in einer Testumgebung auszuführen und die entsprechenden Daten zu sammeln, bevor Sie es in einer Produktionsumgebung bereitstellen.
Sie sollten auch sicherstellen, dass die Leistungsüberwachung das System nicht überlastet. Passen Sie die Detailebene für die Daten an, die von der Leistungsüberwachung gesammelt werden, um Ihre Leistung zu optimieren.
Anforderungen für die Leistungsüberwachung
Zum Auswerten der Systemleistung benötigen Sie in der Regel die folgenden Informationen:
- Die Antwortraten für Benutzeranforderungen
- Die Anzahl der gleichzeitigen Benutzeranforderungen
- Das Volumen des Netzwerkdatenverkehrs
- Die Tarife, mit denen das System Geschäftstransaktionen abschließt
- Die durchschnittliche Verarbeitungszeit für Anforderungen
Verwenden Sie Tools, mit denen Sie die folgenden Korrelationen identifizieren können:
Die Anzahl gleichzeitiger Benutzer im Vergleich zu Anforderungslatenzzeiten oder wie lange es dauert, die Verarbeitung einer Anforderung zu starten, nachdem der Benutzer sie gesendet hat
Die Anzahl der gleichzeitigen Benutzer im Vergleich zur durchschnittlichen Antwortzeit oder wie lange es dauert, eine Anforderung nach dem Beginn der Verarbeitung abzuschließen.
Die Anzahl der Anforderungen im Vergleich zur Anzahl der Verarbeitungsfehler
Zusammen mit diesen allgemeinen Funktionalen Informationen erhalten Sie eine detaillierte Übersicht über die Leistung für jede Komponente im System. Leistungsindikatoren auf niedriger Ebene stellen diese Daten in der Regel bereit. Sie verfolgen die folgenden Informationen:
- Arbeitsspeichernutzung
- Anzahl der Threads
- CPU-Verarbeitungszeit
- Länge der Anforderungswarteschlange
- Datenträger- oder Netzwerk-Ein-/Ausgabe-Raten und Fehler
- Anzahl geschriebener oder gelesener Bytes
- Middleware-Indikatoren, z. B. Warteschlangenlänge
Alle Visualisierungen sollten es Ihnen ermöglichen, einen Zeitraum anzugeben. Die angezeigten Daten können eine Momentaufnahme der aktuellen Situation oder eine historische Ansicht der Leistung sein. Das System sollte Warnungen basierend auf jeder Leistungsmessung für jeden angegebenen Wert während eines bestimmten Zeitintervalls auslösen.
Erfassen von Leistungsdaten
Sammeln Sie allgemeine Leistungsdaten, z. B. Durchsatz, Anzahl gleichzeitiger Benutzer, Anzahl der Geschäftstransaktionen und Fehlerraten, indem Sie den Fortschritt der Anforderungen der Benutzer überwachen. Integrieren Sie Tracing-Anweisungen und Zeitmessungsinformationen an zentralen Stellen im Anwendungscode. Erfassen Sie alle Fehler, Ausnahmen und Warnungen mit ausreichenden Daten und korrelieren Sie sie mit den Anforderungen, die sie verursacht haben.
Erfassen Sie nach Möglichkeit Leistungsdaten für alle externen Systeme, die die Anwendung verwendet. Diese externen Systeme stellen möglicherweise eigene Leistungsindikatoren oder andere Features zum Anfordern von Leistungsdaten bereit. Wenn diese Methode nicht möglich ist, zeichnen Sie Informationen wie die Startzeit und die Endzeit jeder Anforderung an ein externes System sowie den Erfolgs-, Fehler- oder Warnstatus des Vorgangs auf.
Leistungsdaten auf niedriger Ebene für einzelne Komponenten in einem System sind möglicherweise über Features und Dienste verfügbar, z. B. Windows Leistungsindikatoren, die der Azure Monitor Agent sammelt.
Analysieren von Leistungsdaten
Die meisten Analysen aggregiert Leistungsdaten nach Benutzeranforderungstyp oder vom Subsystem oder Dienst, an das jede Anforderung gesendet wird. Ein Beispiel für eine Benutzeranfrage ist das Hinzufügen eines Artikels zu einem Einkaufswagen oder dem Auscheckvorgang in einem E-Commerce-System.
Eine weitere häufige Anforderung besteht darin, Leistungsdaten in Perzentilen zusammenzufassen. Beispielsweise können Sie die Antwortzeiten für 99% von Anforderungen, 95% von Anforderungen und 70% von Anforderungen ermitteln. Möglicherweise legen Sie SLA-Ziele oder andere Ziele für jedes Perzentil fest. Melden Sie laufende Ergebnisse in nahezu Echtzeit, um Probleme sofort zu erkennen. Aggregierte Ergebnisse im Laufe der Zeit für statistische Zwecke.
Latenzprobleme können sich auch auf die Leistung auswirken. Um die Ursache von Engpässen schnell zu identifizieren, bewerten Sie die Latenz jedes Schritts, den jede Anforderung ausführt. Die Leistungsdaten müssen eine Möglichkeit bieten, Leistungsmetriken für jeden Schritt zu korrelieren, um sie einer bestimmten Anforderung zuzuordnen.
Je nach Ihren Visualisierungsanforderungen kann es hilfreich sein, einen Datenwürfel zu generieren und zu speichern, der Ansichten der Rohdaten enthält. Dieser Datenwürfel kann eine komplexe, ungeplante Abfrage und Analyse von Leistungsinformationen ermöglichen.
Sicherheitsüberwachung
Alle kommerziellen Systeme, die vertrauliche Daten enthalten, müssen eine Sicherheitsstruktur implementieren. Die Vertraulichkeit der Daten bestimmt in der Regel, wie komplex der Sicherheitsmechanismus ist. Notieren Sie in einem System, für das Benutzer authentifiziert werden müssen, die folgenden Informationen:
Alle Anmeldeversuche und ob sie fehlschlagen oder erfolgreich sind
Alle Vorgänge, die von einem authentifizierten Benutzer ausgeführt werden, sowie die Details aller Ressourcen, auf die sie zugreifen
Wenn ein Benutzer eine Sitzung beendet und sich abmeldet
Die Überwachung kann dazu beitragen, Angriffe auf das System zu erkennen. Beispielsweise können mehrere fehlgeschlagene Anmeldeversuche auf einen Brute-Force-Angriff hinweisen. Ein unerwarteter Anstieg der Anforderungen kann das Ergebnis eines DDoS-Angriffs sein. Seien Sie bereit, alle Anforderungen an alle Ressourcen unabhängig von ihrer Quelle zu überwachen. Ein System, das über eine Anmeldelücke verfügt, kann Ressourcen versehentlich verfügbar machen, ohne dass sich ein Benutzer anmelden muss.
Anforderungen für die Sicherheitsüberwachung
Die Von der Sicherheitsüberwachung erfassten Daten können Ihnen dabei helfen:
Erkennen von versuchten Eindringversuchen durch eine nicht authentifizierte Entität.
Identifizieren Sie Versuche von Entitäten, Vorgänge für Daten auszuführen, auf die sie keinen Zugriff haben.
Ermitteln Sie, ob ein nicht authentifizierter Benutzer oder ein böswilliger authentifizierter Benutzer versucht, das System anzugreifen.
Um diese Aufgaben zu unterstützen, sollte das System Warnungen senden, wenn:
Ein Konto führt wiederholt fehlgeschlagene Anmeldeversuche innerhalb eines bestimmten Zeitraums durch.
Ein authentifiziertes Konto versucht wiederholt, während eines bestimmten Zeitraums auf eine verbotene Ressource zuzugreifen.
Eine große Anzahl nicht authentifizierter oder unautorisierter Anfragen erfolgen während eines bestimmten Zeitraums.
Richten Sie Warnungen ein, um die Hostadresse der Quelle für jede Anforderung einzuschließen. Wenn Sicherheitsverletzungen regelmäßig aus einem bestimmten Adressbereich auftreten, können Sie diese Hosts blockieren.
Ein wichtiger Bestandteil der Aufrechterhaltung der Sicherheit eines Systems ist die Möglichkeit, Aktionen schnell zu erkennen, die vom üblichen Muster abweichen. Sie können Informationen wie die Anzahl der fehlgeschlagenen oder erfolgreichen Anmeldeanforderungen visuell anzeigen, um Spitzen bei aktivitäten zu ungewöhnlichen Zeiten zu erkennen. Sie können diese Informationen auch verwenden, um die zeitbasierte automatische Skalierung einzurichten. Wenn Sie beispielsweise sehen, dass sich viele Benutzer regelmäßig zu einem bestimmten Zeitpunkt anmelden, können Sie zusätzliche Authentifizierungsdienste starten, um das Arbeitsvolumen zu verarbeiten. Fahren Sie diese Dienste herunter, sobald die Spitzenlast vorüber ist.
Sammeln von Sicherheitsdaten
Sicherheit ist ein allumfassender Aspekt der meisten verteilten Systeme, und die Überwachung generiert relevante Daten an mehreren Stellen im gesamten System. Übernehmen Sie einen SIEM-Ansatz (Security Information and Event Management), um Informationen zu sammeln, die aus Ereignissen resultieren, die von der Anwendung, Netzwerkausrüstung, Servern, Firewalls, Antivirensoftware und anderen Elementen zur Eindringprävention ausgelöst werden.
Die Sicherheitsüberwachung kann Daten von Tools außerhalb Ihrer Anwendung integrieren. Zu diesen Tools gehören Dienstprogramme, die Port-Scan-Aktivitäten von externen Agenturen und Netzwerkfiltern identifizieren, die Versuche erkennen, nicht authentifizierten Zugriff auf Ihre Anwendung und Ihre Daten zu erhalten. In einigen Fällen bilden die Bereitstellungstools für kontinuierliche Integration und kontinuierliche Bereitstellung (CI/CD) einen wichtigen Teil des Anwendungslebenszyklus. Diese Tools sollten auch anomales Verhalten kennzeichnen.
Analysieren von Sicherheitsdaten
Ein wichtiges Feature der Sicherheitsüberwachung besteht darin, dass daten aus vielen Quellen gesammelt werden. Die verschiedenen Formate und Detailebenen erfordern häufig eine komplexe Analyse, um die Daten in einem kohärenten Informationsthread zu kompilieren. Sie können fehlgeschlagene Anmeldungen oder wiederholte Versuche erkennen, nicht autorisierten Zugriff auf Ressourcen zu erlangen, aber eine komplexe automatisierte Verarbeitung von Sicherheitsdaten ist möglicherweise nicht machbar. In diesem Szenario müssen Sie die Daten zeitstempeln und in ein sicheres Repository in der ursprünglichen Form für die manuelle Analyse eines Experten schreiben.
SLA-Überwachung
Kommerzielle Systeme, die zahlende Kunden bedienen, geben Zusagen hinsichtlich der Systemleistung in Form von SLAs. SLAs legen fest, dass das System ein definiertes Arbeitsaufkommen innerhalb eines vereinbarten Zeitrahmens bewältigen kann, ohne dass kritische Informationen verloren gehen. SLA-Überwachung stellt sicher, dass das System messbare SLAs erfüllt.
Note
SLA-Überwachung ist eng mit der Leistungsüberwachung verbunden. Die Leistungsüberwachung stellt sicher, dass das System optimal funktioniert. Eine vertragliche Verpflichtung, die definiert, was optimal bedeutet, regelt die SLA-Überwachung.
Die folgenden Metriken definieren SLAs:
Gesamtsystemverfügbarkeit. Beispielsweise könnte eine Organisation sich dazu verpflichten, dass das System zu 99,9% der Zeit verfügbar ist. Dieser Prozentsatz entspricht nicht mehr als neun Stunden Ausfallzeiten pro Jahr oder ungefähr 10 Minuten pro Woche.
Betriebsdurchsatz. Dieser Aspekt wird häufig durch einen oder mehrere Höchstwerte ausgedrückt, etwa in Form der Zusage, dass das System bis zu 100.000 gleichzeitige Benutzeranfragen unterstützen oder 10.000 gleichzeitige Geschäftstransaktionen verarbeiten kann.
Betriebsantwortzeit. Das System muss möglicherweise auch Anforderungen mit einer definierten Rate verarbeiten. Beispielsweise müssen 99% aller Geschäftstransaktionen innerhalb von 2 Sekunden abgeschlossen werden, und es dauert keine einzelne Transaktion länger als 10 Sekunden.
Note
Einige Verträge für kommerzielle Systeme können auch SLAs für den Kundensupport enthalten. Sie muss beispielsweise innerhalb von fünf Minuten auf alle Helpdesk-Anfragen reagieren und 99% aller Probleme innerhalb eines Arbeitstags beheben. Effektives Issue-Tracking ist entscheidend dafür, diese SLAs einzuhalten.
Anforderungen für die SLA-Überwachung
Sie sollten schnell ermitteln können, ob das System eine SLA erfüllt. Wenn die SLA nicht erfüllt ist, müssen Sie die zugrunde liegenden Faktoren auswerten, um die Ursache einer substandarden Leistung zu ermitteln.
Sie können die folgenden allgemeinen Indikatoren visuell darstellen:
Der Prozentsatz der Dienstverfügbarkeit
Der Anwendungsdurchsatz, gemessen in Bezug auf erfolgreiche Transaktionen oder Vorgänge pro Sekunde
Die Anzahl der erfolgreichen oder fehlerhaften Anwendungsanforderungen
Die Anzahl der Anwendungs- und Systemfehler, Ausnahmen und Warnungen
Stellen Sie sicher, dass Sie alle diese Indikatoren nach einem bestimmten Zeitraum filtern können.
Ihre Cloudanwendung umfasst wahrscheinlich mehrere Subsysteme und Komponenten. Sie sollten in der Lage sein, einen allgemeinen Indikator wie die Gesamtbetriebszeit des Systems auszuwählen und zu bestimmen, welche zugrunde liegenden Elemente ihren Integritätsstatus beeinflussen.
Note
Legen Sie die Betriebszeit des Systems sorgfältig fest. In einem System, das Redundanz verwendet, um eine maximale Verfügbarkeit sicherzustellen, können einzelne Instanzen von Elementen fehlschlagen, das System kann jedoch funktionsfähig bleiben. Zur Systemzustandsüberwachung gibt die Betriebszeit des Systems die aggregierte Betriebszeit der einzelnen Elemente an und nicht unbedingt, ob das System stillsteht. Außerdem können Fehler isoliert sein, selbst wenn ein bestimmtes System nicht verfügbar ist, bleibt der Rest des Systems möglicherweise mit verringerter Funktionalität verfügbar. In einem E-Commerce-System kann ein Fehler verhindern, dass ein Kunde Bestellungen abgibt, der Kunde kann aber trotzdem den Produktkatalog durchsuchen.
Für Warnungszwecke sollte das System ein Ereignis auslösen, wenn eines der High-Level-Indikatoren einen angegebenen Schwellenwert überschreitet. Stellen Sie die Details auf niedrigerer Ebene für das Warnungssystem als Kontextdaten zur Verfügung.
Sammeln von SLA-Daten
Führen Sie die folgenden Aktionen aus, um die für die SLA-Überwachung erforderlichen Rohdaten zu erfassen:
- Endpunktüberwachung durchführen.
- Protokollieren von Ausnahmen, Fehlern und Warnungen.
- Verfolgen Sie die Ausführung von Benutzeranforderungen.
- Überwachen Sie die Verfügbarkeit aller Nicht-Microsoft-Dienste, die das System verwendet.
- Verwenden Sie Leistungsmetriken und Leistungszähler.
Alle Daten müssen zeit- und zeitstempelt sein.
Analysieren von SLA-Daten
Aggregieren Sie die SLA-Daten, um ein Bild der Gesamtleistung des Systems zu generieren. Sie sollten außerdem in der Lage sein, aggregierte Daten bis auf die Detaildaten herunterzubrechen, um zugrunde liegende Subsysteme auszuwerten. Beispielsweise sollten Sie in der Lage sein, die folgenden Aufgaben auszuführen:
Berechnen Sie die Gesamtzahl der Benutzeranforderungen während eines bestimmten Zeitraums, und bestimmen Sie die Erfolgs- und Fehlerrate dieser Anforderungen.
Kombinieren Sie die Antwortzeiten von Benutzeranforderungen, um eine Gesamtansicht der Systemantwortzeiten zu generieren.
Analysieren Sie den Fortschritt von Benutzeranforderungen, um die Gesamtantwortzeit in die Antwortzeiten einzelner Arbeitsaufgaben in der Anforderung aufzuteilen.
Ermitteln Sie die Gesamtverfügbarkeit des Systems als Prozentsatz der Betriebszeit für einen bestimmten Zeitraum.
Analysieren Sie die prozentuale Verfügbarkeit der einzelnen Komponenten und Dienste im System. Möglicherweise müssen Sie Protokolle analysieren, die von Nicht-Microsoft-Diensten erzeugt werden.
Kommerzielle Systeme müssen reale Leistungszahlen für einen bestimmten Zeitraum gegenüber SLAs melden. Sie können diese Informationen verwenden, um Gutschriften oder andere Rückzahlungsformen für Kunden zu berechnen, wenn Sie slAs während dieses Zeitraums nicht erfüllen. Sie können die Verfügbarkeit für einen Dienst berechnen, indem Sie die unter "Analysieren von Verfügbarkeitsdaten" beschriebene Technik verwenden.
Für interne Zwecke kann eine Organisation auch die Anzahl und Art von Vorfällen nachverfolgen, die dazu führen, dass Dienste fehlschlagen. Erfahren Sie, wie Sie diese Probleme schnell beheben oder beseitigen, damit Sie Ausfallzeiten reduzieren und SLAs erfüllen können.
Überwachung
Je nach Art der Anwendung können gesetzliche Vorschriften Anforderungen für die Überwachung der Benutzervorgänge und das Aufzeichnen aller Datenzugriffe angeben. Die Prüfung kann Nachweise liefern, die Kunden mit bestimmten Anfragen verknüpft. Nonrepudiation ist ein wichtiger Faktor in elektronischen Geschäftssystemen, um das Vertrauen zwischen einem Kunden und der Organisation aufrechtzuerhalten, die für die Anwendung oder den Dienst verantwortlich ist.
Anforderungen für die Überwachung
Sie müssen in der Lage sein, die Abfolge von Geschäftsvorgängen nachzuverfolgen, die Benutzer ausführen, damit Sie die Aktionen der Benutzer rekonstruieren können. Dieser Datensatz kann für Dokumentationszwecke oder als Teil einer forensischen Untersuchung erforderlich sein.
Überwachungsinformationen sind streng vertraulich. Es enthält wahrscheinlich Daten, die Systembenutzer und die Aufgaben identifiziert, die sie ausführen. Aus diesem Grund sind Überwachungsinformationen wahrscheinlich nur vertrauenswürdigen Analysten und nicht als Teil eines interaktiven Systems zur Verfügung. Der Analyst generiert eine Reihe von Berichten wie die folgenden Beispiele:
Berichte, die alle Aktivitäten aller Benutzer während eines bestimmten Zeitraums auflisten
Berichte, die die Chronologie der Aktivitäten eines einzelnen Benutzers detailliert darstellen.
Meldet die Abfolge von Vorgängen, die für eine oder mehrere Ressourcen ausgeführt werden
Sammeln von Überwachungsdaten
Zu den wichtigsten Informationsquellen für die Überwachung gehören:
- Das Sicherheitssystem, das die Benutzerauthentifizierung verwaltet.
- Ablaufverfolgungsprotokolle, die die Benutzeraktivität aufzeichnen.
- Sicherheitsprotokolle, die alle identifizierbaren und nicht identifizierten Netzwerkanforderungen nachverfolgen.
Regulatorische Anforderungen können das Format der Überwachungsdaten und deren Speicherung bestimmen. Wenn Sie die Daten in ihrem ursprünglichen Format aufzeichnen müssen, können Sie die Daten möglicherweise nicht bereinigen. Daher muss der Zugriff auf das Repository, das es speichert, eng geschützt sein, um Manipulationen zu verhindern.
Analysieren von Überwachungsdaten
Sie müssen in der Lage sein, auf Rohdaten vollständig und in der ursprünglichen Form zuzugreifen. Abgesehen von der Anforderung, gemeinsame Überwachungsberichte zu erstellen, sind die Tools für die Analyse dieser Daten wahrscheinlich spezialisiert und werden außerhalb des Systems gehalten.
Überwachung der Nutzung
Die Verwendungsüberwachung verfolgt, wie Kunden die Features und Komponenten einer Anwendung verwenden. Sie können die Daten verwenden, um:
Identifizieren Sie beliebte Features und potenzielle Hotspots im System. Elemente mit hohem Datenverkehr können von funktionaler Partitionierung oder Replikation profitieren, um die Last gleichmäßiger zu verteilen. Sie können diese Informationen auch verwenden, um zu bestimmen, welche Features selten verwendet werden und mögliche Kandidaten für den Ruhestand oder Ersatz in einer zukünftigen Version des Systems sind.
Rufen Sie Informationen über die betriebstechnischen Ereignisse des Systems unter normaler Verwendung ab. Beispielsweise können Sie auf einer E-Commerce-Website statistische Informationen über die Anzahl der Transaktionen und das Volumen der für sie verantwortlichen Kunden aufzeichnen. Sie können diese Informationen für die Kapazitätsplanung verwenden, wenn die Anzahl der Kunden wächst.
Erkennen Sie die Benutzerzufriedenheit mit der Leistung und Funktionalität des Systems. Wenn beispielsweise viele Kunden in einem E-Commerce-System regelmäßig ihre Einkaufswagen aufgeben, besteht möglicherweise ein Problem mit der Checkout-Funktionalität.
Generieren Sie Abrechnungsinformationen. Eine kommerzielle Anwendung oder ein mehrinstanzenfähiger Dienst kann Kunden für die von ihnen verwendeten Ressourcen belasten.
Erzwingen Sie Kontingente. Wenn ein Benutzer in einem Mandantensystem innerhalb eines bestimmten Zeitraums das bezahlte Kontingent an Verarbeitungszeit oder die zulässige Ressourcennutzung überschreitet, können Sie seinen Zugriff einschränken oder die Verarbeitung drosseln.
Erkennen Sie laute Nachbarprobleme. Um Fehleruntersuchungen oder Produktentscheidungen zu fördern, bestimmen Sie, ob der Datenverkehr gleichmäßig verteilt ist oder ob ein kleiner Satz von Benutzern den größten Teil des Datenverkehrs generiert. Wenn ein einzelner Benutzer erheblichen Datenverkehr erzeugt, muss die Funktion möglicherweise leistungsoptimiert werden. Alternativ können Sie zusätzliche Kontingente auferlegen, um den Datenverkehr zu reduzieren.
Anforderungen für die Nutzungsüberwachung
Zum Auswerten der Systemnutzung benötigen Sie in der Regel die folgenden Informationen:
Die Anzahl der Anforderungen, die jedes Subsystem verarbeitet und zu jeder Ressource leitet
Die Arbeit, die jeder Benutzer ausführt
Das Volumen der Datenspeicherung, die jeder Benutzer belegt
Die Ressourcen, auf die jeder Benutzer zugreift
Sie sollten auch in der Lage sein, Diagramme zu generieren. Häufige Beispiele sind Diagramme von Benutzern, die die meisten Ressourcen und die am häufigsten verwendeten Ressourcen oder Systemfeatures verbrauchen.
Nutzungsdaten sammeln
Sie können eine allgemeine Nutzungsnachverfolgung durchführen, indem Sie die Start- und Endzeiten jeder Anforderung und die Art der einzelnen Anforderungen, z. B. Lese- oder Schreibzugriff, notieren. Führen Sie die folgenden Aufgaben aus, um diese Informationen zu erfassen:
- Nachverfolgen der Benutzeraktivität.
- Erfassen Sie Leistungsindikatoren, die die Auslastung für jede Ressource messen.
- Überwachen Sie den Ressourcenverbrauch jedes Benutzers.
Für Abrechnungszwecke müssen Sie außerdem ermitteln, welche Benutzer welche Operationen ausführen und welche Ressourcen dabei verwendet werden. Stellen Sie sicher, dass die gesammelten Informationen detailliert genug sind, um die genaue Abrechnung zu unterstützen.
Problemverfolgung
Kunden und andere Benutzer melden möglicherweise Probleme, wenn unerwartete Ereignisse oder Verhaltensweisen im System auftreten. Die Problemverfolgung verwaltet diese Probleme, verknüpft Probleme mit den Bemühungen, sie zu beheben, und informiert Kunden über Lösungen.
Anforderungen für die Problemverfolgung
Verwenden Sie zum Nachverfolgen von Problemen ein separates System, mit dem Sie die Details von Problemen aufzeichnen und melden können, die benutzer melden. Diese Details umfassen die versuchten Aufgaben, Symptome des Problems, die Abfolge von Ereignissen und Fehlermeldungen oder Warnmeldungen.
Sammeln von Problemverfolgungsdaten
Die ursprüngliche Datenquelle für Problemverfolgungsdaten ist der Benutzer, der das Problem meldet. Dieser Benutzer kann möglicherweise die folgenden Details angeben:
Ein Absturzabbild, wenn die Anwendung eine Komponente enthält, die auf dem Desktop des Benutzers ausgeführt wird
Eine Bildschirmmomentaufnahme
Datum und Uhrzeit des Auftretens des Fehlers und anderer Umgebungsinformationen, z. B. der Standort des Benutzers
Verwenden Sie diese Informationen, um Das System zu debuggen und einen Backlog für zukünftige Softwareversionen zu erstellen.
Daten zur Vorgangsverfolgung analysieren
Verschiedene Benutzer melden möglicherweise dasselbe Problem, und das Problemverfolgungssystem sollte allgemeine Berichte zuordnen.
Erfassen Sie den Fortschritt der Fehlerbehebung zu jedem Bericht. Wenn Sie das Problem beheben, informieren Sie den Kunden über die Lösung.
Wenn ein Benutzer ein Problem meldet, das über eine bekannte Lösung im Problemverfolgungssystem verfügt, können Sie den Benutzer sofort über die Lösung informieren.
Ablaufverfolgung und Debugging von Software-Releases
Wenn ein Benutzer ein Problem meldet, ist er in der Regel nur der unmittelbaren Auswirkung bewusst, die er auf seine Vorgänge hat. Der Benutzer kann nur die Ergebnisse seiner eigenen Erfahrung melden. Diese Erfahrungen sind in der Regel ein sichtbares Symptom eines oder mehrerer grundlegender Probleme. In vielen Fällen muss ein Analyst die Chronologie der zugrunde liegenden Vorgänge analysieren, um die Ursache des Problems zu ermitteln. Dieser Prozess wird als Ursachenanalyse (Root-Cause Analysis, RCA) bezeichnet.
Note
RCA kann Ineffizienzen im Anwendungsentwurf aufdecken. In diesen Szenarien können Sie die betroffenen Elemente möglicherweise neu bearbeiten und als Teil einer nachfolgenden Version bereitstellen. Dieser Prozess erfordert eine sorgfältige Kontrolle, und Sie sollten die aktualisierten Komponenten genau überwachen.
Anforderungen für Ablaufverfolgung und Fehlersuche
Um unerwartete Ereignisse und andere Probleme nachzuverfolgen, müssen die Überwachungsdaten genügend Informationen bereitstellen, damit ein Analyst den Ursprung des Problems finden und die Abfolge von Ereignissen rekonstruieren kann. Anschließend kann ein Entwickler Änderungen vornehmen, um zu verhindern, dass das Problem erneut auftritt.
Tracing- und Debuggingdaten erfassen
Zur Problembehandlung verfolgen Sie alle Methoden und deren Parameter, die als Teil eines Vorgangs aufgerufen werden. Erstellen Sie dann eine Struktur, die den logischen Fluss durch das System darstellt, wenn ein Kunde eine bestimmte Anforderung vorgibt. Erfassen und protokollieren Sie Ausnahmen und Warnungen, die das System als Ergebnis dieses Flusses generiert.
Um das Debuggen zu unterstützen, stellt das System Hooks bereit, mit denen Sie Zustandsinformationen an wichtigen Stellen im System erfassen können. Oder das System kann detaillierte Schritt-für-Schritt-Informationen bereitstellen, während ausgewählte Vorgänge fortschreiten. Das Erfassen von Daten auf dieser Detailebene kann die Auslastung des Systems erhöhen und sollte ein temporärer Prozess sein. Verwenden Sie diesen Prozess, wenn ungewöhnliche und schwer replizierte Ereignisse auftreten oder wenn eine neue Version eine sorgfältige Überwachung erfordert, um sicherzustellen, dass die Elemente erwartungsgemäß funktionieren.
Die Überwachungs- und Diagnosepipeline
Die Überwachung eines umfangreichen verteilten Systems stellt eine erhebliche Herausforderung dar. Sie sollten nicht unbedingt jedes der szenarien berücksichtigen, die in den vorherigen Abschnitten isoliert beschrieben sind. Die für jede Situation erforderlichen Überwachungs- und Diagnosedaten überlappen sich, aber Möglicherweise müssen Sie diese Daten auf unterschiedliche Weise verarbeiten und präsentieren. Aus diesen Gründen betrachten Wir die Überwachung und Diagnostik ganzheitlicher Art.
Sie können sich den gesamten Überwachungs- und Diagnoseprozess als Pipeline vorstellen, die die im folgenden Diagramm dargestellten Phasen umfasst.
Das Diagramm zeigt, wie Überwachungs- und Diagnosedaten aus verschiedenen Quellen stammen. Die Instrumentierungs- und Sammlungsphasen helfen Ihnen, die Daten zu identifizieren, die Sie erfassen müssen, wo und wie sie erfasst werden müssen, und wie Sie die Daten so formatieren, dass Sie sie einfach analysieren können. Die Analyse- und Diagnosephase verwendet die Rohdaten und verwendet sie, um aussagekräftige Informationen zu generieren, die Sie verwenden können, um den Zustand des Systems zu bestimmen. Sie können diese Informationen verwenden, um zu bestimmen, welche möglichen Aktionen ausgeführt werden sollen, und die Ergebnisse dann wieder in die Instrumentierungs- und Sammlungsphasen einzufügen. Die Visualisierungs- und Alarmierungsphase bietet eine gut nutzbare Ansicht des Systemzustands. Mithilfe einer Reihe von Dashboards können Informationen nahezu in Echtzeit angezeigt werden. Sie kann Berichte, Grafiken und Diagramme generieren, die einen historischen Überblick über die Daten bieten und Ihnen helfen, langfristige Trends zu erkennen. Wenn Informationen angeben, dass ein KPI wahrscheinlich akzeptable Grenzen überschreitet, kann diese Phase auch eine Warnung auslösen. In einigen Fällen kann eine Warnung auch einen automatisierten Prozess auslösen, der versucht, Korrekturmaßnahmen zu ergreifen, z. B. die automatische Skalierung.
Diese Schritte bilden einen fortlaufenden Ablaufprozess, bei dem die Phasen parallel ausgeführt werden. Im Idealfall sollten alle Phasen dynamisch konfigurierbar sein. Zu einigen Punkten, insbesondere wenn ein System neu bereitgestellt wird oder Probleme auftreten, müssen Sie möglicherweise häufiger erweiterte Daten sammeln. Zu anderen Zeiten können Sie weiterhin allgemeine, wichtige Informationen erfassen, um sicherzustellen, dass das System ordnungsgemäß funktioniert.
Betrachten Sie den gesamten Überwachungsprozess als eine lebendige, fortlaufende Lösung, die auf Grundlage von Feedback kontinuierlich feinabgestimmt und verbessert werden muss. So können Sie beispielsweise damit beginnen, viele Faktoren zu messen, um den Systemzustand zu bestimmen, und Ihre Analyse im Laufe der Zeit verfeinern, um irrelevante Messgrößen auszusortieren.
Quellen der Überwachung und Diagnosedaten
Die Informationen, die der Überwachungsprozess verwendet, können aus mehreren Quellen stammen. Auf Anwendungsebene stammen Informationen aus Ablaufverfolgungsprotokollen, die Sie in den Systemcode integrieren. Entwickler sollten einen Standardansatz zum Nachverfolgen des Steuerungsflusses über ihren Code befolgen. Beispielsweise kann ein Eintrag in einer Methode eine Ablaufverfolgungsmeldung ausgeben, die den Namen der Methode, die aktuelle Uhrzeit, den Wert der einzelnen Parameter und andere relevante Informationen angibt. Möglicherweise möchten Sie auch die Einstiegs- und Ausgangszeiten aufzeichnen.
Protokollieren Sie alle Ausnahmen und Warnungen und stellen Sie sicher, dass Sie eine vollständige Ablaufverfolgung von geschachtelten Ausnahmen und Warnungen beibehalten. Erfassen Sie Informationen, die den Benutzer identifizieren, der die Code- und Aktivitätskorrelationsinformationen ausführt, um Anforderungen nachzuverfolgen, während sie das System durchlaufen. Protokollieren Sie Zugriffsversuche auf alle Ressourcen wie Nachrichtenwarteschlangen, Datenbanken, Dateien und andere abhängige Dienste. Sie können diese Informationen für Metering- und Überwachungszwecke verwenden.
Viele Anwendungen verwenden Bibliotheken und Frameworks, um allgemeine Aufgaben auszuführen, z. B. den Zugriff auf einen Datenspeicher oder die Kommunikation über ein Netzwerk. Möglicherweise können Sie diese Frameworks so konfigurieren, dass sie eigene Ablaufverfolgungsmeldungen und unformatierte Diagnoseinformationen bereitstellen, z. B. Transaktionsraten und Datenübertragungserfolge und Fehler.
Note
Viele moderne Frameworks veröffentlichen automatisch Leistungs- und Nachverfolgungsereignisse. Um diese Ereignisinformationen zu erfassen, müssen Sie eine Möglichkeit zum Abrufen und Speichern bereitstellen, bis Sie die Daten verarbeiten und analysieren können.
Das Betriebssystem, auf dem die Anwendung ausgeführt wird, kann eine Quelle für systemweite Informationen auf niedriger Ebene sein, z. B. Leistungsindikatoren, die die E/A-Raten, die Speicherauslastung und die CPU-Auslastung angeben. Es kann auch Fehler des Betriebssystems melden, z. B. das Fehler beim ordnungsgemäßen Öffnen einer Datei.
Berücksichtigen Sie auch die zugrunde liegende Infrastruktur und Komponenten, auf denen Ihr System ausgeführt wird. Virtuelle Computer (VMs), virtuelle Netzwerke und Speicherdienste können alle Quellen wichtiger Leistungsindikatoren auf Infrastrukturebene und andere Diagnosedaten sein.
Wenn Ihre Anwendung andere externe Dienste verwendet, z. B. einen Webserver oder ein Datenbankverwaltungssystem (DBMS), veröffentlichen diese Dienste möglicherweise ihre eigenen Ablaufverfolgungsinformationen, Protokolle und Leistungsindikatoren. Beispielsweise verfolgen dynamische Verwaltungsansichten (Dynamic Management Views, DMVs) in SQL Server Vorgänge nach, die in einer SQL-Server-Datenbank ausgeführt werden. Application Insights verfolgt Protokolle zur Aufzeichnung von Anforderungen, die an Azure App Service vorgenommen wurden.
Wenn Sie Systemkomponenten ändern und neue Versionen bereitstellen, ist es wichtig, dass Sie Jeder Version Probleme, Ereignisse und Metriken zuordnen können. Ordnen Sie diese Informationen der Releasepipeline zu, damit Sie Probleme mit einer bestimmten Version einer Komponente schnell nachverfolgen und beheben können.
Verwenden Sie die folgenden Strategien zum Sammeln von Überwachungs- und Diagnosedaten:
Anwendungs- und Systemüberwachung verwendet interne Quellen innerhalb der Anwendung, Anwendungsframeworks, Betriebssystem und Infrastruktur. Der Anwendungscode kann während des Lebenszyklus einer Clientanforderung eigene Überwachungsdaten zu wichtigen Punkten generieren. Die Anwendung kann Ablaufverfolgungsanweisungen enthalten, die Sie bei Bedarf aktivieren und deaktivieren können. Sie können die Diagnose auch dynamisch mithilfe eines Diagnoseframeworks einfügen. Diese Frameworks bieten typischerweise Plugins, die an verschiedene Instrumentierungspunkte in Ihrem Code angehängt werden und an diesen Punkten Trace-Daten erfassen.
Ihr Code oder die zugrunde liegende Infrastruktur kann auch Ereignisse an kritischen Punkten auslösen. Überwachungs-Agents, die für die Überwachung dieser Ereignisse konfiguriert sind, können die Ereignisinformationen aufzeichnen.
Echte Benutzerüberwachung zeichnet die Interaktionen zwischen einem Benutzer und der Anwendung auf und beobachtet den Fluss jeder Anforderung und Antwort. Verwenden Sie diese Informationen, um die Nutzung von jedem Benutzer zu ermitteln und zu bestimmen, ob Benutzer eine geeignete QoS erhalten, einschließlich schneller Reaktionszeiten, geringer Latenz und minimaler Fehler. Mithilfe der Daten können Sie Bereiche identifizieren, in denen Fehler am häufigsten auftreten. Sie können die Daten auch verwenden, um Bereiche zu identifizieren, in denen das System aufgrund von Hotspots in der Anwendung oder anderen Engpässen verlangsamt wird. Wenn Sie diesen Ansatz sorgfältig implementieren, können Sie möglicherweise die Abläufe der Benutzer über die Anwendung für Debugging- und Testzwecke rekonstruieren.
Important
Behandeln Sie daten, die von der echten Benutzerüberwachung erfasst werden, als streng vertraulich, da sie vertrauliche Materialien enthalten kann. Wenn Sie erfasste Daten speichern, speichern Sie sie sicher. Wenn Sie die Daten für Leistungsüberwachungs- oder Debuggingzwecke verwenden möchten, entfernen Sie zuerst alle personenbezogenen Daten.
Die synthetische Benutzerüberwachung erfordert, dass Sie Ihren eigenen Testclient schreiben, der einen Benutzer simuliert und eine konfigurierbare, aber typische Reihe von Vorgängen ausführt. Sie können die Leistung des Testclients nachverfolgen, um den Status des Systems zu ermitteln. Sie können auch mehrere Instanzen des Testclients im Rahmen eines Lasttests verwenden, um zu ermitteln, wie das System unter Last reagiert und welche Überwachungsausgabe unter diesen Bedingungen erzeugt wird.
Note
Sie können die reale und synthetische Benutzerüberwachung implementieren, indem Sie Code einschließen, der die Ausführung von Methodenaufrufen und anderen kritischen Teilen einer Anwendung überwacht und uhrzeitt.
Die Profilerstellung hilft Ihnen, die Anwendungsleistung zu überwachen und zu verbessern. Im Gegensatz zur echten Benutzerüberwachung und synthetischen Benutzerüberwachung, die auf funktionaler Ebene ausgeführt werden, erfasst die Profilerstellung Informationen auf niedrigerer Ebene, während die Anwendung ausgeführt wird. Implementieren Sie Profilerstellung, indem Sie den Ausführungszustand einer Anwendung regelmäßig samplingn oder bestimmen, welche Codeabschnitte die Anwendung zu einem bestimmten Zeitpunkt ausführt. Sie können auch Instrumentierung verwenden, die Probes in den Code an wichtigen Zeitpunkten einfügt, z. B. den Anfang und das Ende eines Methodenaufrufs. Die Prüfpunkte erfassen, welche Methoden der Aufruf aufgerufen hat, zu welchem Zeitpunkt und wie lange jeder Aufruf dauert. Anschließend können Sie diese Daten analysieren, um zu bestimmen, welche Teile der Anwendung Leistungsprobleme verursachen können.
Die Endpunktüberwachung verwendet einen oder mehrere Diagnoseendpunkte, die die Anwendung speziell für die Aktivierung der Überwachung verfügbar macht. Ein Endpunkt stellt einen Weg in den Anwendungscode bereit und kann Informationen zur Integrität des Systems zurückgeben. Verschiedene Endpunkte können sich auf verschiedene Aspekte der Funktionalität konzentrieren. Sie können Ihren eigenen Diagnose-Client schreiben, der regelmäßig Anfragen an diese Endpunkte sendet und die Antworten auswertet. Weitere Informationen finden Sie im Muster für die Überwachung von Gesundheitsendpunkten.
Fehlerabbilder auf Benutzerebene setzen voraus, dass die Anwendung eine Möglichkeit bereitstellt, eine Momentaufnahme des Anwendungszustands zu erfassen, wenn sie sich nicht wiederherstellen kann. Benutzer müssen diese Momentaufnahme auch freiwillig freigeben. Sie können nicht garantieren, dass eine Fehlerabbilddatei erstellt wird, aber Sie können die von ihr bereitgestellten Low-Level-Daten verwenden, um die Grundursache von Fehlern zu ermitteln. Dieses Szenario ist üblich, wenn die Fehler selten auftreten oder wenn Fehler nur in einem selten verwendeten Anwendungsfeature auftreten.
Für eine maximale Abdeckung sollten Sie eine Kombination dieser Techniken verwenden.
Eine Anwendung instrumentieren
Die Instrumentierung ist ein wichtiger Bestandteil des Überwachungsprozesses. Sie müssen Daten erfassen, die Ihnen dabei helfen, sinnvolle Entscheidungen über die Leistung und Integrität Ihres Systems zu treffen. Verwenden Sie die Instrumentierung, um genügend Informationen zu sammeln, um Die Leistung zu bewerten, Probleme zu diagnostizieren und Entscheidungen zu treffen, ohne sich bei einem Remoteproduktionsserver anzumelden, um manuell nachzuverfolgen und zu debuggen. Instrumentierungsdaten bestehen typischerweise aus Metriken und Informationen, die in Trace-Protokollen erfasst werden.
Ein Ablaufverfolgungsprotokoll kann Textdaten enthalten, die von der Anwendung geschrieben werden, oder binärdaten, die von einem Ablaufverfolgungsereignis erstellt werden, wenn die Anwendung ereignisablaufverfolgung für Windows (ETW) verwendet. Systemprotokolle, die Ereignisse aufzeichnen, die in Teilen der Infrastruktur, z. B. auf einem Webserver, auftreten, können ebenfalls Inhalte von Trace-Protokollen erzeugen. Textuelle Protokollmeldungen sind oft für Menschen lesbar, sollten jedoch in einem Format verfasst werden, das ein automatisiertes System ebenfalls leicht parsen kann.
Kategorisieren Sie auch Protokolle. Schreiben Sie nicht alle Ablaufverfolgungsdaten in ein einzelnes Protokoll. Verwenden Sie separate Protokolle, um die Traceausgabe aus verschiedenen Betriebsaspekten des Systems aufzuzeichnen. Anschließend können Sie Protokollnachrichten schnell filtern, indem Sie aus dem entsprechenden Protokoll lesen, anstatt eine einzelne langwierige Datei zu verarbeiten. Schreiben Sie niemals Informationen mit unterschiedlichen Sicherheitsanforderungen, z. B. Überwachungsinformationen und Debuggingdaten, in dasselbe Protokoll.
Note
Sie können ein Protokoll als Datei im Dateisystem implementieren oder in einem anderen Format speichern, z. B. ein Blob im BLOB-Speicher. Sie können auch Protokollinformationen in strukturiertem Speicher speichern, z. B. Zeilen in einer Tabelle.
Metriken sind im Allgemeinen ein Maß oder eine Zählung eines Aspekts oder einer Ressource im System zu einem bestimmten Zeitpunkt, mit einem oder mehreren zugehörigen Tags oder Dimensionen, auch als Stichproben bezeichnet. Eine einzelne Instanz einer Metrik ist nicht isoliert nützlich. Erfassen Sie stattdessen Metriken im Laufe der Zeit. Überlegen Sie, welche Metriken erfasst werden sollen und wie häufig. Das Generieren von Daten für Metriken zu oft kann zu viel Last auf das System bringen. Aber nicht genügend Daten zu erfassen, kann dazu führen, dass Sie die Umstände verpassen, die zu einem signifikanten Ereignis führen. Die Überlegungen variieren von Metrik zu Metrik. Die CPU-Auslastung auf einem Server kann z. B. von Sekunde zu Sekunde schwanken, aber eine hohe Auslastung ist nur dann ein Problem, wenn sie mehrere Minuten lang bestehen bleibt.
Informationen zum Korrelieren von Daten
Sie können einzelne Leistungsindikatoren auf Systemebene ganz einfach überwachen, Metriken für Ressourcen erfassen und Anwendungsablaufverfolgungsinformationen aus verschiedenen Protokolldateien abrufen. Einige Formen der Überwachung erfordern jedoch die Analyse- und Diagnosephase in der Überwachungspipeline, um daten zu korrelieren, die aus mehreren Quellen abgerufen wurden. Diese Rohdaten können mehrere Formen annehmen, und der Analyseprozess muss über ausreichende Instrumentierungsdaten verfügen, um diese verschiedenen Formulare zuzuordnen. Beispielsweise kann eine Thread-ID auf Der Ebene des Anwendungsframeworks eine Aufgabe identifizieren. Innerhalb einer Anwendung kann dieselbe Arbeit der Benutzer-ID für den Benutzer zugeordnet werden, der diese Aufgabe ausführt.
Eine 1:1-Zuordnung ist wahrscheinlich nicht zwischen Threads und Benutzeranforderungen vorhanden, da asynchrone Vorgänge möglicherweise dieselben Threads wiederverwenden, um Vorgänge für mehrere Benutzer auszuführen. Mehrere Threads können auch eine einzelne Anforderung verarbeiten, da die Ausführung über das System fließt. Ordnen Sie nach Möglichkeit jede Anforderung einer eindeutigen Aktivitäts-ID zu, die im Rahmen des Anforderungskontexts über das System weitergegeben wird. Die Technik zum Generieren und Einschließen von Aktivitäts-IDs in Ablaufverfolgungsinformationen hängt von der Technologie ab, die Sie zum Erfassen der Ablaufverfolgungsdaten verwenden.
Versehen Sie alle Überwachungsdaten auf dieselbe Weise mit einem Zeitstempel. Zeichnen Sie aus Gründen der Konsistenz alle Datums- und Uhrzeitangaben mithilfe von UTC auf. Mit dieser Methode können Sie Ereignisabfolgen einfacher nachverfolgen.
Note
Computer, die in verschiedenen Zeitzonen und Netzwerken arbeiten, werden möglicherweise nicht synchronisiert. Verlassen Sie sich nicht nur auf Zeitstempel, wenn Sie Instrumentierungsdaten korrelieren, die mehrere Computer umfassen.
Informationen, die in die Instrumentierungsdaten aufgenommen werden sollen
Berücksichtigen Sie die folgenden Punkte, wenn Sie entscheiden, welche Instrumentierungsdaten erfasst werden sollen:
Stellen Sie sicher, dass Informationen, die von Traceereignissen erfasst werden, maschinenlesbar und für Menschen lesbar sind. Übernehmen Sie gut definierte Schemas für diese Informationen, um die automatisierte Verarbeitung von Protokolldaten über Systeme hinweg zu erleichtern und den Betriebs- und Ingenieurmitarbeitern, die die Protokolle lesen, Konsistenz zu bieten. Schließen Sie Umgebungsinformationen ein, z. B. die Bereitstellungsumgebung, den Computer, auf dem der Prozess ausgeführt wird, die Details des Prozesses und den Aufrufstapel.
Aktivieren Sie die Profilerstellung nur bei Bedarf, da sie dem System erheblichen Aufwand hinzufügen kann. Profilerstellung mithilfe von Instrumentation zeichnet ein Ereignis auf, z. B. ein Methodenaufruf, jedes Mal, wenn es auftritt, während beim Sampling nur ausgewählte Ereignisse aufgezeichnet werden. Die Auswahl kann zeitbasiert sein, einmal alle n Sekunden oder häufigkeitsbasiert, einmal alle n Anforderungen. Wenn Ereignisse häufig auftreten, kann die Profilerstellung durch instrumentierung zu viel Belastung verursachen und die Gesamtleistung beeinträchtigen. In diesem Fall ist der Sampling-Ansatz bevorzugt. Wenn die Häufigkeit von Ereignissen jedoch niedrig ist, kann das Sampling sie nicht verpassen. In diesem Fall könnte die Instrumentierung der bessere Ansatz sein.
Stellen Sie ausreichenden Kontext bereit, damit ein Entwickler oder Administrator die Quelle jeder Anforderung ermitteln kann. Dieser Kontext kann eine Aktivitäts-ID enthalten, die eine bestimmte Instanz einer Anforderung oder Informationen identifiziert, die eine Aktivität mit der ausgeführten Rechenarbeit und den verwendeten Ressourcen korreliert. Diese Arbeit kann Prozess- und Maschinengrenzen überschreiten. Für die Messung sollte der Kontext auch direkt oder indirekt über andere korrelierte Informationen einen Verweis auf den Kunden enthalten, der die Anforderung auslöst. Dieser Kontext enthält wertvolle Informationen zum Anwendungszustand, wenn Sie Überwachungsdaten erfassen.
Notieren Sie alle Anforderungen und die Standorte oder Regionen, aus denen diese Anforderungen gestellt werden. Anhand dieser Informationen können Sie ermitteln, ob standortspezifische Hotspots vorhanden sind. Außerdem können Sie ermitteln, ob eine Anwendung oder die von ihr verwendeten Daten neu partitioniert werden sollen.
Erfassen und protokollieren Sie die Details von Ausnahmen sorgfältig. Häufig geht wichtige Debuginformationen aufgrund einer schlechten Ausnahmebehandlung verloren. Erfassen Sie die vollständigen Details der Von der Anwendung ausgelösten Ausnahmen, einschließlich innerer Ausnahmen und anderer Kontextinformationen. Beziehen Sie nach Möglichkeit die Aufrufliste ein.
Achten Sie auf Konsistenz bei den Daten, die von den verschiedenen Elementen Ihrer Anwendung erfasst werden. Konsistenz kann Ihnen helfen, Ereignisse zu analysieren und mit Benutzeranforderungen zu korrelieren. Erwägen Sie die Verwendung eines umfassenden und konfigurierbaren Protokollierungspakets zum Sammeln von Informationen, anstatt sich darauf zu verlassen, dass Entwickler denselben Ansatz verfolgen, während sie unterschiedliche Teile des Systems implementieren. Sammeln Sie Daten aus wichtigen Leistungsindikatoren, z. B. E/A-Volume, Netzwerkauslastung, Anzahl der Anforderungen, Arbeitsspeichernutzung und CPU-Auslastung. Einige Infrastrukturdienste stellen möglicherweise ihre eigenen Leistungsindikatoren bereit, z. B. die Anzahl der Verbindungen zu einer Datenbank, die Rate, mit der das System Transaktionen durchführt, und die Anzahl der Transaktionen, die erfolgreich sind oder fehlschlagen. Anwendungen können auch eigene spezifische Leistungsindikatoren definieren.
Protokollieren Sie alle Aufrufe an externe Dienste, z. B. Datenbanksysteme, Webdienste oder andere Dienste auf Systemebene, die Teil der Infrastruktur sind. Notieren Sie Informationen über die Zeit, die zum Ausführen der einzelnen Anrufe benötigt wird, und ob der Anruf erfolgreich ist oder fehlschlägt. Wenn möglich, erfassen Sie Informationen über alle Wiederholungsversuche und Fehlversuche für vorübergehende Fehler, die auftreten.
Sicherstellen der Kompatibilität mit Telemetriesystemen
In vielen Fällen werden die von der Instrumentierung erzeugten Informationen als Eine Reihe von Ereignissen generiert und zur Verarbeitung und Analyse an ein separates Telemetriesystem übergeben. Ein Telemetriesystem ist in der Regel unabhängig von bestimmten Anwendungen oder Technologien, erwartet jedoch, dass Informationen einem bestimmten Format folgen, das durch ein Schema definiert ist. Das Schema gibt einen Vertrag an, der die Datenfelder und Typen definiert, die das Telemetriesystem aufnehmen kann. Generalisieren Sie das Schema, um Daten aus einer Reihe von Plattformen und Geräten zuzulassen. Ein Beispiel für ein weitverwendetes Framework und Schema ist OpenTelemetry.
Ein allgemeines Schema sollte Felder enthalten, die alle Instrumentierungsereignisse gemeinsam haben, z. B. den Ereignisnamen, die Ereigniszeit, die IP-Adresse des Absenders. Sie sollte auch die details enthalten, die zum Korrelieren mit anderen Ereignissen erforderlich sind, z. B. eine Benutzer-ID, eine Geräte-ID und eine Anwendungs-ID. Denken Sie daran, dass eine beliebige Anzahl von Geräten Ereignisse auslösen kann, daher sollte das Schema nicht vom Gerätetyp abhängig sein. Außerdem können verschiedene Geräte Ereignisse für dieselbe Anwendung auslösen, und die Anwendung unterstützt roaming oder eine andere Form der geräteübergreifenden Verteilung.
Das Schema kann auch Domänenfelder enthalten, die für ein bestimmtes Szenario relevant sind, das in verschiedenen Anwendungen üblich ist. Diese Szenarien umfassen Informationen zu Ausnahmen, Anwendungsstart- und Endereignissen sowie Erfolg oder Fehler von Webdienst-API-Aufrufen. Alle Anwendungen, die denselben Satz von Domänenfeldern verwenden, sollten den gleichen Satz von Ereignissen ausgeben, um eine Reihe allgemeiner Berichte und Analysen zu erstellen.
Schließlich kann ein Schema benutzerdefinierte Felder zum Erfassen der Details anwendungsspezifischer Ereignisse enthalten.
Bewährte Methoden für Instrumentierungsanwendungen
In der folgenden Liste werden bewährte Methoden für die Instrumentierung einer verteilten Anwendung zusammengefasst, die in der Cloud ausgeführt wird:
Vereinfachen Sie das Lesen und Analysieren von Protokollen. Verwenden Sie nach Möglichkeit die strukturierte Protokollierung. Seien Sie präzise und beschreibend in Protokollnachrichten.
Identifizieren Sie in allen Protokollen die Quelle, und geben Sie Kontext- und Zeitinformationen an, sobald jeder Protokolldatensatz geschrieben wird.
Verwenden Sie die gleiche Zeitzone und dasselbe Format für alle Zeitstempel. Diese Vorgehensweise hilft beim Korrelieren von Ereignissen für Vorgänge, die Hardware und Dienste umfassen, die in verschiedenen geografischen Regionen ausgeführt werden.
Kategorisieren Sie Protokolle, und schreiben Sie Nachrichten in die entsprechende Protokolldatei.
Geben Sie keine vertraulichen Informationen über das System oder persönliche Informationen zu Benutzern offen. Bereinigen Sie diese Informationen, bevor Sie sie protokollieren, stellen Sie jedoch sicher, dass die relevanten Details erhalten bleiben. Entfernen Sie z. B. die ID und das Kennwort aus Datenbankverbindungszeichenfolgen. Schreiben Sie die restlichen Informationen in das Protokoll, damit Sie bestimmen können, ob das System auf die richtige Datenbank zugreift. Protokollieren Sie alle kritischen Ausnahmen, aber ermöglichen Sie es dem Administrator, die Protokollierung für niedrigere Ausnahmen und Warnungen zu aktivieren und zu deaktivieren. Erfassen und protokollieren Sie außerdem alle Wiederholungslogikinformationen. Sie können diese Daten verwenden, um die vorübergehende Integrität des Systems zu überwachen.
Nachverfolgen von Aufrufen außerhalb des Prozesses, wie z. B. Anfragen an externe Webdienste oder Datenbanken.
Kombinieren Sie Protokollnachrichten nicht mit unterschiedlichen Sicherheitsanforderungen in derselben Protokolldatei. Schreiben Sie beispielsweise keine Debug- und Überwachungsinformationen in dasselbe Protokoll.
Initiieren Sie die Protokollierung von Aufrufen, die weiterhin autonom ausgeführt werden. Diese Arten von Vorgängen blockieren nicht den Fortschritt von Geschäftsvorgängen. Überwachungsereignisse sind eine Ausnahme, da sie für das Unternehmen von entscheidender Bedeutung sind. Klassifizieren Sie sie als grundlegender Bestandteil von Geschäftsvorgängen.
Stellen Sie sicher, dass die Protokollierung erweiterbar ist und keine direkten Abhängigkeiten von einem konkreten Ziel aufweist. Anstatt Informationen mithilfe von System.Diagnostics.Trace zu schreiben, definieren Sie beispielsweise eine abstrakte Schnittstelle wie ILogger, die Protokollierungsmethoden bereitstellt und die Sie auf beliebige geeignete Weise implementieren können.
Stellen Sie sicher, dass die gesamte Protokollierung fehlsicher ist und niemals Kaskadierende Fehler auslöst. Die Protokollierung darf keine Ausnahmen auslösen.
Behandeln Sie die Instrumentierung als fortlaufenden iterativen Prozess und überprüfen Sie Protokolle regelmäßig, nicht nur, wenn ein Problem auftritt.
Sammeln und Speichern von Daten
In der Sammlungsphase werden die von der Instrumentierung generierten Informationen abgerufen, diese Daten formatiert, um die Nutzung während der Analyse- und Diagnosephase zu vereinfachen und die transformierten Daten im zuverlässigen Speicher zu speichern. Sie können die Instrumentierungsdaten speichern, die Sie aus verschiedenen Teilen eines verteilten Systems an verschiedenen Standorten und Formaten sammeln. Ihr Anwendungscode kann beispielsweise Ablaufverfolgungsprotokolldateien und Anwendungsereignisprotokolldaten generieren. Andere Technologien können Leistungsindikatoren erfassen, die wichtige Aspekte der von Ihrer Anwendung verwendeten Infrastruktur überwachen. Alle Nicht-Microsoft Komponenten und Dienste, die Ihre Anwendung verwendet, können Instrumentierungsinformationen in verschiedenen Formaten bereitstellen, indem separate Ablaufverfolgungsdateien, Blobspeicher oder sogar ein benutzerdefinierter Datenspeicher verwendet werden.
Ein Sammlungsdienst, der unabhängig von der Anwendung ausgeführt wird, die die Instrumentierungsdaten generiert, sammelt in der Regel die Daten. Das folgende Diagramm zeigt ein Beispiel für diese Architektur und hebt das Datensammlungs-Subsystem der Instrumentierung hervor.
Dieses Diagramm zeigt eine vereinfachte Ansicht der Datensammlung. Der Sammlungsdienst umfasst in der Regel viele Teile, die auf verschiedenen Computern ausgeführt werden. Wenn Sie Telemetriedaten schnell analysieren müssen, verwenden Sie lokale Komponenten, die außerhalb des Sammlungsdiensts ausgeführt werden. Nach der analytischen Verarbeitung senden die Komponenten die Ergebnisse direkt an die Visualisierung und das Warnsubsystem. Daten, die warm oder kalt analysiert werden, werden im Speicher aufbewahrt, während sie auf die Verarbeitung wartet. Weitere Informationen finden Sie unter Unterstützung für heiße, warme und kalte Analysen.
Für Azure Anwendungen und Dienste, die auf virtuellen Computern ausgeführt werden, bietet der Azure Monitor Agent eine Lösung zum Erfassen von Daten. Sie definieren Datensammlungsregeln (Data Collection Rules, DCRs), mit denen die daten angegeben werden, die von jedem Computeknoten erfasst werden sollen, und der Log Analytics Arbeitsbereich in Azure Monitor, an den sie gesendet werden soll. Der Agent kann Daten aus den folgenden Quellen sammeln:
- Protokolldateien für Internetinformationsdienste (IIS)
- Windows-Ereignisprotokolle
- Leistungsindikatoren
- Syslog von Linux-Knoten
- Text- und JSON-Logs, die Anwendungen schreiben
Strategien zum Sammeln von Instrumentierungsdaten
Aufgrund der elastischen Natur der Cloud und um das manuelle Abrufen von Telemetriedaten von jedem Knoten im System zu vermeiden, ordnen Sie es an, die Daten zu konsolidieren und an einen zentralen Ort zu übertragen. In einem System, das sich über mehrere Rechenzentren erstreckt, können Sie Daten zuerst nach Region sammeln, konsolidieren und speichern und dann die Regionalen Daten in einem einzigen zentralen System aggregieren.
Um die Bandbreitennutzung zu optimieren, können Sie weniger dringende Daten als Batches übertragen. Verzögern Sie die Übertragung nicht auf unbestimmte Zeit, insbesondere, wenn die Daten zeitabhängige Informationen enthalten.
Daten zur Pull- und Pushinstrumentation
Das Datensammlungssubsystem der Instrumentierung kann Instrumentierungsdaten aus den verschiedenen Protokollen und anderen Quellen für jede Instanz der Anwendung aktiv abrufen. Diese Methode wird als Pullmodell bezeichnet. Sie kann auch als passiver Empfänger fungieren, der auf die Komponenten wartet, die jede Instanz der Anwendung darstellen, um die Daten zu senden. Diese Methode wird als Pushmodell bezeichnet.
Ein Ansatz für das Pullmodell besteht darin, Überwachungs-Agents zu verwenden, die lokal mit jeder Instanz der Anwendung ausgeführt werden. Ein Überwachungs-Agent ist ein separater Prozess, der regelmäßig Telemetriedaten abruft, die am lokalen Knoten erfasst werden, und diese Informationen in einem zentralen Speicher ablegt, den alle Instanzen der Anwendung gemeinsam nutzen. Der Azure Monitor Agent implementiert diesen Mechanismus. Sie konfigurieren die Daten, die von jeder Computeinstanz über eine Datensammlungsregel erfasst werden sollen. Der Überwachungs-Agent, der zusammen mit jeder Instanz ausgeführt wird, sammelt die angegebenen Daten, z. B. IIS-Protokolle, Windows Ereignisprotokolle und Leistungsindikatoren, und sendet ihn an einen Log Analytics Arbeitsbereich in Azure Monitor, in dem Sie sie abfragen und analysieren können. Das folgende Diagramm zeigt ein Beispiel für diese Architektur.
Note
Ein Überwachungs-Agent eignet sich gut zum Erfassen von Instrumentierungsdaten, die natürlich aus einer Datenquelle abgerufen werden, z. B. Informationen aus SQL Server dynamischen Verwaltungsansichten oder die Länge einer Azure Service Bus Warteschlange.
Sie können die Pull- und Pushmodelle verwenden, um Telemetriedaten für eine kleine Anwendung zu speichern, die an einer begrenzten Anzahl von Knoten an einem einzigen Ort ausgeführt wird. Eine komplexe, hoch skalierbare, globale Cloudanwendung kann große Datenmengen aus Hunderten von Computeinstanzen, Datenbankshards und anderen Diensten generieren. Diese Datenflut kann die verfügbare E/A-Bandbreite mit einem einzigen zentralen Standort leicht überfordern. Daher müssen Sie in der Lage sein, Ihre Telemetrielösung zu skalieren, um einen Engpass zu verhindern, da das System erweitert wird. Im Idealfall sollte Ihre Lösung einen Grad an Redundanz enthalten, um die Risiken zu reduzieren, wichtige Überwachungsinformationen zu verlieren, z. B. Überwachungs- oder Abrechnungsdaten, wenn ein Teil des Systems fehlschlägt.
Um diese Probleme zu beheben, implementieren Sie queuing. In der folgenden Beispielarchitektur sendet der lokale Überwachungs-Agent oder der benutzerdefinierte Datensammlungsdienst Daten in eine Warteschlange. Der Speicherschreibdienst, ein separater asynchroner Prozess, übernimmt die Daten in dieser Warteschlange und schreibt sie in freigegebenen Speicher. Eine Nachrichtenwarteschlange eignet sich für dieses Szenario, da sie eine at-least-once-Semantik bietet, die dazu beiträgt sicherzustellen, dass Daten in der Warteschlange nach dem Senden nicht verloren gehen. Sie können den Speicherschreibdienst mithilfe eines separaten Hintergrundprozesses implementieren.
Der lokale Datensammlungsdienst kann einer Warteschlange unmittelbar nach dem Empfang Daten hinzufügen. Die Warteschlange fungiert als Puffer, und der Speicherschreibdienst kann die Daten in ihrem eigenen Tempo abrufen und schreiben. Standardmäßig arbeitet eine Warteschlange nach dem Prinzip „First In, First Out“. Sie können nachrichten jedoch priorisieren, um sie durch die Warteschlange zu beschleunigen, wenn sie Daten enthalten, die Sie schnell verarbeiten müssen. Weitere Informationen finden Sie im Muster "Priority Queue". Alternativ können Sie unterschiedliche Kanäle wie z. B. Service Bus Themen verwenden, um Daten abhängig von der erforderlichen Analyseverarbeitung an unterschiedliche Ziele zu leiten.
Zur Skalierbarkeit können Sie mehrere Instanzen des Speicherschreibdiensts ausführen. Für hohe Ereignismengen können Sie einen Event Hub verwenden, um die Daten an verschiedene Computeressourcen für die Verarbeitung und Speicherung zu verteilen.
Konsolidieren von Instrumentierungsdaten
Die Instrumentierungsdaten, die der Datensammlungsdienst aus einer einzelnen Instanz einer Anwendung abruft, bietet eine lokalisierte Ansicht der Integrität und Leistung dieser Instanz. Um die Gesamtintegrität des Systems zu bewerten, konsolidieren Sie Aspekte der Daten in den lokalen Ansichten. Sie können diesen Schritt ausführen, nachdem die Daten gespeichert wurden, aber in einigen Fällen können Sie ihn auch tun, wenn die Daten gesammelt werden. Anstatt direkt in freigegebenen Speicher zu schreiben, durchlaufen die Instrumentierungsdaten einen separaten Dienst, der Daten konsolidiert, filtert und bereinigt. Beispielsweise können Instrumentierungsdaten, die dieselben Korrelationsinformationen enthalten, z. B. eine Aktivitäts-ID, amalgamatiert werden. Ein Benutzer startet möglicherweise einen Geschäftsvorgang auf einem Knoten und wird dann an einen anderen Knoten übertragen, wenn der Knoten fehlschlägt oder aufgrund des Lastenausgleichs. Dieser Vorgang kann auch duplizierte Daten erkennen und entfernen, was möglich ist, wenn der Telemetriedienst Nachrichtenwarteschlangen verwendet, um Daten der Instrumentierung an den Speicher zu übertragen. Das folgende Diagramm zeigt ein Beispiel für diese Struktur.
Speichern von Instrumentierungsdaten
In den vorherigen Abschnitten wird eine vereinfachte Ansicht zum Speichern von Instrumentierungsdaten angezeigt. In der Praxis sollten Sie verschiedene Arten von Informationen mithilfe der Technologien speichern, die ihrer Verwendung entsprechen.
Beispielsweise weisen Azure Blob Storage und Azure Table Storage ähnliche Zugriffsmuster auf, aber die Vorgänge, die sie ausführen können, sind begrenzt und die Granularität der gespeicherten Daten variiert. Wenn Sie Analysevorgänge ausführen oder Volltext-Suchfunktionen benötigen, müssen Sie möglicherweise Datenspeicher verwenden, der die folgenden Abfrage- und Datenzugriffsfunktionen bereitstellt:
- Speichern Sie Leistungsindikatordaten in einer SQL-Datenbank, um ungeplante Analysen zu ermöglichen.
- Speichern Sie Ablaufverfolgungsprotokolle in Azure Cosmos DB.
- Schreiben Sie Sicherheitsinformationen in das Hadoop Distributed File System (HDFS).
- Speichern Sie Informationen, die eine Volltextsuche erfordern, indem Sie Elasticsearch verwenden, die umfangreiche Indizierung verwendet, um Suchvorgänge zu beschleunigen.
Das folgende Diagramm zeigt, wie Sie einen zusätzlichen Dienst implementieren können, der die Daten regelmäßig aus gemeinsam genutztem Speicher abruft, sie entsprechend ihrem Zweck partitioniert und filtert und sie dann in eine geeignete Gruppe von Datenspeichern schreibt. Ein alternativer Ansatz besteht darin, diese Funktionalität in den Konsolidierungs- und Bereinigungsprozess zu integrieren und die Daten direkt in diese Speicher zu schreiben, während sie abgerufen werden, anstatt sie in einem gemeinsam genutzten Zwischenspeicherbereich zu speichern. Jeder Ansatz hat Vor- und Nachteile. Durch die Implementierung eines separaten Partitionierungsdiensts wird die Auslastung des Konsolidierungs- und Bereinigungsdiensts reduziert. Außerdem können Sie bei Bedarf mindestens einige der partitionierten Daten neu generieren, je nachdem, wie viel gemeinsam genutzter Datenspeicher aufbewahrt wird. Dieser Ansatz verbraucht jedoch mehr Ressourcen. Sie kann auch den Empfang von Instrumentierungsdaten aus jeder Anwendungsinstanz und die Konvertierung dieser Daten in umsetzbare Informationen verzögern.
Möglicherweise benötigen Sie dieselben Instrumentierungsdaten für mehrere Zwecke. Leistungsindikatoren können z. B. eine historische Ansicht der Systemleistung im Laufe der Zeit bereitstellen. Sie können diese Informationen mit anderen Nutzungsdaten kombinieren, um Kundenabrechnungsinformationen zu generieren. Senden Sie in diesen Szenarien dieselben Daten an mehrere Ziele, z. B. eine Dokumentdatenbank, in der Abrechnungsinformationen gespeichert werden, und einen mehrdimensionalen Speicher, der komplexe Leistungsanalysen verarbeitet.
Überlegen Sie, wie dringend Sie die Daten benötigen. Daten, die Informationen für Warnungen bereitstellen, müssen schnell zugegriffen werden, sodass Sie sie in schneller Datenspeicherung speichern und indizieren oder strukturieren sollten, um Warnungssystemabfragen zu optimieren. In einigen Fällen muss der Telemetriedienst, der die Daten auf jedem Knoten sammelt, möglicherweise lokal formatieren und speichern, damit eine lokale Instanz des Warnungssystems Sie schnell über Probleme benachrichtigen kann. Sie können dieselben Daten an den Speicherschreibdienst verteilen, den die vorherigen Diagramme anzeigen und zentral speichern, wenn Sie sie für andere Zwecke benötigen.
Informationen, die Sie zur komplexeren Analyse, zur Berichterstellung und zur Identifizierung historischer Trends verwenden, sind weniger dringend. Speichern Sie sie auf eine Weise, die Data Mining- und ungeplante Abfragen unterstützt. Weitere Informationen finden Sie unter Unterstützung für heiße, warme und kalte Analysen.
Protokollrotation und Datenaufbewahrung
Die Instrumentierung generiert viele Daten. In einigen Fällen können Sie nach der Verarbeitung und Übertragung der Daten die ursprünglichen Rohquelldaten aus jedem Knoten entfernen. Oder Sie müssen die Rohinformationen möglicherweise speichern.
Leistungsdaten haben in der Regel eine längere Lebensdauer, sodass Sie sie verwenden können, um Leistungstrends zu identifizieren und Kapazität zu planen. Halten Sie die konsolidierte Ansicht dieser Daten für einen begrenzten Zeitraum online, damit Sie schnell darauf zugreifen können. Möglicherweise müssen Sie daten speichern, die für die Messung und Abrechnung auf unbestimmte Zeit gesammelt wurden. Darüber hinaus müssen Sie möglicherweise die für Überwachungs- und Sicherheitszwecke gesammelten Informationen archivieren und speichern. Verschlüsseln oder anderweitig schützen Sie diese vertraulichen Daten, um Manipulationen zu verhindern. Notieren Sie niemals die Kennwörter von Benutzern oder andere persönliche Informationen. Entfernen Sie diese Details aus den Daten, bevor Sie sie speichern.
Herunterabtastung von Daten
Speichern Sie historische Daten, um langfristige Trends zu erkennen. Anstatt alle alten Daten zu speichern, können Sie die Daten heruntersampen, um die Auflösung zu reduzieren und Speicherkosten zu sparen. Als Beispiel können Sie daten konsolidieren, die länger als ein Monat alt sind, anstatt Minuten-nach-Minuten-Leistungsindikatoren zu speichern, um eine Stunden-nach-Stunden-Ansicht zu bilden.
Bewährte Methoden zum Sammeln und Speichern von Protokollierungsinformationen
In der folgenden Liste werden bewährte Methoden zum Erfassen und Speichern von Protokollierungsinformationen zusammengefasst:
Der Überwachungs-Agent oder der Datensammlungsdienst sollte als Out-of-Process-Dienst ausgeführt werden und einfach bereitzustellen sein.
Alle Ausgaben des Überwachungs-Agents oder des Datensammlungsdiensts sollten ein agnostisches Format sein, das unabhängig vom Computer, Betriebssystem oder Netzwerkprotokoll ist. Geben Sie beispielsweise Informationen in einem selbst beschreibenden Format wie JSON, MessagePack oder Protobuf anstelle von ETL-Dateien (Event Trace Log) unter Linux oder ETW aus. Verwenden Sie ein Standardformat, damit das System Verarbeitungspipelines erstellen kann. Sie können einfach Komponenten integrieren, die Daten im vereinbarten Format lesen, transformieren und senden.
Der Überwachungs- und Datensammlungsprozess muss fehlersicher sein und darf keine Kaskadierende Fehler auslösen.
Wenn ein vorübergehender Fehler Informationen an eine Datensenke sendet, sollte der Überwachungs-Agent oder der Datensammlungsdienst bereit sein, Telemetriedaten neu anzuordnen, sodass die neuesten Informationen zuerst gesendet werden. Der Überwachungsagent oder der Datenerfassungsdienst kann nach eigenem Ermessen entscheiden, die älteren Daten zu verwerfen oder sie lokal zu speichern und später zu übertragen, um den Rückstand aufzuholen.
Analysieren von Daten und Diagnostizieren von Problemen
Ein wichtiger Bestandteil der Überwachung und Diagnose ist die Analyse der gesammelten Daten, um ein Bild der Gesamtintegrität des Systems zu erhalten. Definieren Sie Ihre eigenen KPIs und Leistungsmetriken, und erfahren Sie, wie Sie die Daten so strukturieren, dass sie Ihren Analyseanforderungen entsprechen. Verstehen Sie, wie in verschiedenen Metriken und Protokolldateien erfasste Daten korrelieren, da diese Informationen wichtig sind, um eine Abfolge von Ereignissen zu verfolgen und Probleme zu diagnostizieren.
Die Daten für jeden Teil des Systems werden in der Regel lokal erfasst, aber Sie müssen sie mit Daten kombinieren, die an anderen Websites generiert werden, die am System teilnehmen. Korrelieren Sie diese Informationen sorgfältig, um sicherzustellen, dass Daten korrekt kombiniert werden. Beispielsweise können die Nutzungsdaten für einen Vorgang die folgenden Knoten umfassen:
- Ein Knoten, der eine Website hostt, mit der ein Benutzer eine Verbindung herstellt
- Ein Knoten, der einen separaten Dienst ausführt, auf den als Teil dieses Vorgangs zugegriffen wird
- Ein Knoten, der Daten speichert
Sie müssen diese Informationen miteinander verknüpfen, um eine Gesamtansicht der Ressourcen- und Verarbeitungsverwendung für den Vorgang bereitzustellen. Der Knoten, der die Daten erfasst, kann sie vorverarbeiten und filtern, doch zentrale Knoten aggregieren und formatieren die Daten normalerweise. Weitere Informationen finden Sie unter Konsolidieren von Instrumentierungsdaten.
Unterstützt heiße, warme und kalte Analysen
Das Analysieren und Neuformatieren von Daten für Visualisierungs-, Berichterstellungs- und Warnzwecke kann ein komplexer Prozess sein, der seine eigenen Ressourcen verbraucht. Einige Formen der Überwachung erfordern eine sofortige Datenanalyse, die auch als heiße Analyse bezeichnet wird. Beispiele sind Analysen für Warnungen und Sicherheitsüberwachung. Für Echtzeitanalysen Daten verfügbar machen und für eine effiziente Verarbeitung strukturieren. In einigen Fällen müssen Sie die Analyseverarbeitung möglicherweise auf die einzelnen Knoten verschieben, die die Daten enthalten.
Andere Analyseformen sind weniger zeitempfindlich und erfordern möglicherweise Berechnung und Aggregation, nachdem die Rohdaten empfangen wurden. Diese Methode wird als warme Analyse bezeichnet. Die Leistungsanalyse fällt häufig in diese Kategorie. In diesem Fall kann eine plötzliche Spitzen oder Glitch ein isoliertes, einzelnes Leistungsereignis verursachen, das nicht statistisch signifikant ist. Die Daten aus einer Reihe von Ereignissen bieten ein zuverlässigeres Bild der Systemleistung.
Sie können auch eine warme Analyse verwenden, um Gesundheitsprobleme zu diagnostizieren. Verwenden Sie die heiße Analyse, um ein Integritätsereignis zu verarbeiten und sofort eine Warnung auszulösen. Verwenden Sie anschließend die warme Analyse, um die Daten auszuwerten und die Ursache des Systemereignisses zu ermitteln.
Einige Arten von Überwachung generieren langfristigere Daten. Sie können diese Analyse zu einem späteren Zeitpunkt durchführen, möglicherweise nach einem vordefinierten Zeitplan. In einigen Fällen muss die Analyse möglicherweise große Datenmengen filtern, die im Laufe der Zeit erfasst wurden. Diese Methode wird als Kaltanalyse bezeichnet. Die wichtigste Anforderung besteht darin, dass Sie die Daten nach der Erfassung sicher speichern. Die Verwendungsüberwachung und -überwachung erfordern beispielsweise ein genaues Bild des Systemzustands in regelmäßigen Abständen, aber diese Zustandsinformationen müssen nicht sofort zur Verarbeitung verfügbar sein.
Sie können auch die Kaltanalyse verwenden, um die Daten für die Prädiktive Gesundheitsanalyse bereitzustellen. Sammeln Sie historische Daten über einen bestimmten Zeitraum und kombinieren Sie sie mit den aktuellen Zustandsdaten, um Trends zu erkennen, die zu gesundheitlichen Problemen führen könnten. In diesen Fällen müssen Sie möglicherweise eine Warnung auslösen, um den Trend zu korrigieren.
Korrelieren von Daten
Die erfassten Daten können eine Momentaufnahme des Systemzustands bereitstellen, aber der Zweck der Analyse besteht darin, diese Daten umsetzbar zu machen. Sie können z. B. die Ursache des intensiven E/A-Ladens auf Systemebene zu einem bestimmten Zeitpunkt bestimmen und sicherstellen, dass die Anzahl der Transaktionen pro Sekunde und die Anwendungsantwortzeiten gleichzeitig Ihre Ergebnisse bestätigen.
Eine Möglichkeit, die Last zu reduzieren, besteht darin, die Daten über mehr Server zu shardieren. Ausnahmen können aufgrund eines Fehlers auf jeder Ebene des Systems auftreten. Eine Ausnahme auf einer Ebene löst häufig einen anderen Fehler auf der darüber stehenden Ebene aus.
Aus diesen Gründen müssen Sie die verschiedenen Arten von Überwachungsdaten auf jeder Ebene korrelieren, um eine Gesamtansicht des Systemzustands und der anwendungen zu erzeugen, die darauf ausgeführt werden. Verwenden Sie diese Informationen, um zu entscheiden, ob das System akzeptiert funktioniert, und bestimmen Sie, was Sie tun können, um die Qualität zu verbessern.
Stellen Sie sicher, dass die Rohinstrumentationsdaten ausreichende Kontext- und Aktivitäts-ID-Informationen enthalten, um die erforderlichen Aggregationen zum Korrelieren von Ereignissen zu unterstützen. Diese Daten können in verschiedenen Formaten gespeichert werden, daher müssen Sie sie möglicherweise analysieren und in ein standardisiertes Format für die Analyse konvertieren. Weitere Informationen finden Sie unter Informationen zum Korrelieren von Daten.
Probleme beheben und diagnostizieren
Um Probleme zu diagnostizieren, müssen Sie RCA durchführen, um die Ursache von Fehlern oder unerwartetem Verhalten zu ermitteln. Normalerweise benötigen Sie die folgenden Informationen für das gesamte System oder für ein bestimmtes Subsystem während eines bestimmten Zeitfensters:
- Detaillierte Informationen aus Ereignisprotokollen und Ablaufverfolgungen
- Vollständige Stacktraces von Ausnahmen und Fehlern aller angegebenen Ebenen
- Absturzabbilder für fehlgeschlagene Prozesse
- Aktivitätsprotokolle, die die Vorgänge protokollieren, die von allen oder ausgewählten Benutzern durchgeführt werden
Um Daten für Problembehandlungszwecke zu analysieren, benötigen Sie ein tiefes technisches Verständnis der Systemarchitektur und der zugehörigen Komponenten. Sie müssen die Daten interpretieren, die Ursache von Problemen festlegen und eine Strategie empfehlen, sie zu korrigieren. Eine weitere Strategie besteht darin, eine Kopie dieser Informationen in ihrem ursprünglichen Format zu speichern und von einem Experten zur Kaltanalyse zur Verfügung zu stellen.
Visualisieren von Daten und Auslösen von Warnungen
Überwachungssysteme müssen Daten darstellen, damit Sie Trends oder Probleme schnell erkennen können. Sie müssen Sie auch sofort benachrichtigen, wenn ein Ereignis auftritt, das Aufmerksamkeit erfordert.
Die Datenpräsentation kann verschiedene Formen annehmen, einschließlich Visualisierung mithilfe von Dashboards, Warnungen und Berichten.
Visualisierung mithilfe von Dashboards
Die gebräuchlichste Methode, Daten zu visualisieren, ist die Verwendung von Dashboards, die Informationen in Form einer Reihe von Schaubildern, Grafiken oder anderen Darstellungen anzeigen. Sie können diese Elemente parametrisieren und die wichtigen Parameter auswählen, z. B. den Zeitraum, für eine bestimmte Situation.
Sie können Dashboards hierarchisch organisieren. Dashboards auf oberster Ebene bieten einen Überblick über jeden Aspekt des Systems und ermöglichen es Ihnen, einen Drilldown zu den Details zu erstellen. Beispielsweise können Sie in einem Dashboard, das die gesamte Datenträger-E/A für das System darstellt, die E/A-Raten für jeden einzelnen Datenträger anzeigen, um zu ermitteln, ob ein oder mehrere bestimmte Geräte ein unverhältnismäßiges Datenverkehrsvolumen aufweisen. Das Dashboard sollte auch verwandte Informationen anzeigen, z. B. den Benutzer oder die Aktivität, die diese E/A generiert. Diese Informationen helfen Ihnen dabei, die Last gleichmäßiger auf die Geräte zu verteilen.
Ein Dashboard kann auch Farbkodierungen oder andere visuelle Hinweise verwenden, um Werte zu kennzeichnen, die auffällig erscheinen oder außerhalb eines erwarteten Bereichs liegen. Betrachten Sie die folgenden Farbcodierungsbeispiele:
Rot für einen Datenträger mit einer E/A-Rate, die über einen längeren Zeitraum nahe ihrer maximalen Kapazität liegt, oder für einen stark ausgelasteten Datenträger
Gelb für einen Datenträger mit einer E/A-Rate, die in regelmäßigen Abständen über kurze Zeiträume ihr Maximum erreicht, oder für einen warmen Datenträger
Grün für einen Datenträger mit normaler Verwendung
Dashboardsysteme müssen über die Rohdaten verfügen, um effektiv zu arbeiten. Wenn Sie Ihr eigenes Dashboardsystem erstellen oder ein von einer anderen Organisation entwickeltes Dashboard verwenden, müssen Sie wissen, welche Instrumentierungsdaten Sie sammeln müssen, auf welchen Granularitätsebenen und wie Sie es für das Dashboard formatieren können.
Mit einem effektiven Dashboard können Sie auch Fragen zu Informationen stellen. Einige Systeme bieten Verwaltungstools, mit denen Sie diese Aufgaben ausführen und die zugrunde liegenden Daten untersuchen können. Je nach Repository, das die Informationen enthält, können Sie Daten möglicherweise direkt abfragen oder in Tools wie Excel zur weiteren Analyse und Berichterstellung importieren.
Note
Sie sollten den Zugriff auf Dashboards auf autorisierte Mitarbeiter beschränken, da diese Informationen möglicherweise kommerziell vertraulich sind. Sie sollten auch die zugrunde liegenden Daten für Dashboards schützen, um benutzer daran zu hindern, sie zu ändern.
Warnungen auslösen
Die Warnung analysiert die Überwachungs- und Instrumentierungsdaten und generiert eine Benachrichtigung, wenn ein signifikantes Ereignis erkannt wird.
Durch Warnungen wird sichergestellt, dass das System fehlerfrei, reaktionsfähig und sicher bleibt. Es ist ein wichtiger Bestandteil jedes Systems, das den Benutzern Leistungs-, Verfügbarkeits- und Datenschutzgarantien ermöglicht. Alerting kann Sie auch über Ereignisse benachrichtigen, die Warnungen auslösen. Verwenden Sie Warnungen, um Systemfunktionen wie automatisches Skalieren aufzurufen.
Die Warnung hängt von den folgenden Instrumentierungsdaten ab:
Sicherheitsereignisse: Wenn die Ereignisprotokolle angeben, dass wiederholte Authentifizierungs- oder Autorisierungsfehler auftreten. In diesem Szenario sollte eine Warnung Sie darüber informieren, dass das System möglicherweise angegriffen wird.
Leistungsmetriken: Das System muss schnell reagieren, wenn eine Leistungsmetrik einen angegebenen Schwellenwert überschreitet.
Verfügbarkeitsinformationen: Wenn ein Fehler erkannt wird, müssen Sie möglicherweise ein oder mehrere Subsysteme schnell neu starten oder auf eine Sicherungsressource umschalten. Wiederholte Fehler in einem Subsystem können auf schwerwiegendere Probleme hinweisen.
Sie können Benachrichtigungsinformationen über viele Kanäle empfangen, z. B. E-Mail, Pager oder SMS-Sms. Eine Warnung kann auch einen Hinweis darauf enthalten, wie kritisch eine Situation ist. Viele Warnungssysteme unterstützen Abonnentengruppen, und alle Operatoren, die Mitglieder derselben Gruppe sind, erhalten denselben Satz von Warnungen.
Machen Sie das Warnsystem anpassbar, und stellen Sie die entsprechenden Werte aus den zugrunde liegenden Instrumentierungsdaten als Parameter bereit. Mithilfe dieses Ansatzes können Sie Daten nach bestimmten Schwellenwerten oder Kombinationen von Werten filtern. In einigen Fällen können Sie dem Warnsystem die Rohinstrumentationsdaten bereitstellen. Oder es ist möglicherweise besser geeignet, aggregierte Daten anzugeben. Beispielsweise löst eine Warnung aus, wenn die CPU-Auslastung für einen Knoten 90% über die letzten 10 Minuten überschreitet. Geben Sie dem Warnungssystem entsprechende Zusammenfassungs- und Kontextinformationen an, um die Möglichkeit zu verringern, dass falsch positive Ereignisse eine Warnung auslösen.
Berichterstellung
Verwenden Sie Berichte, um eine Gesamtansicht des Systems zu generieren. Es kann historische Daten und aktuelle Informationen enthalten. Die Berichterstattungsanforderungen sind in betriebs- und sicherheitsrelevante Kategorien unterteilt.
Die betriebliche Berichterstattung umfasst in der Regel die folgenden Aspekte für das gesamte System oder bestimmte Subsysteme während eines bestimmten Zeitfensters:
Aggregierte Statistiken, mit denen Sie die Ressourcenauslastung verstehen können
Trends bei der Ressourcennutzung
Ausnahmeüberwachung
Anwendungseffizienz in Bezug auf die bereitgestellten Ressourcen und ob Sie das Volumen der Ressourcen reduzieren können, ohne die Leistung zu beeinträchtigen
Die Sicherheitsberichterstattung verfolgt, wie Kunden das System verwenden. Dies umfasst in der Regel die folgenden Aspekte:
Überwachen von Benutzervorgängen. Zeichnen Sie einzelne Anforderungen auf, die jeder Benutzer zusammen mit Datums- und Uhrzeitangaben ausführt. Strukturieren Sie die Daten so, dass Sie die Abfolge von Vorgängen, die ein Benutzer über einen bestimmten Zeitraum ausführt, schnell rekonstruieren können.
Verfolgen Sie die Ressourcenverwendung für jeden Benutzer. Notieren Sie, wie jede Anforderung für einen Benutzer auf Systemressourcen zugreift und wie lange. Verwenden Sie diese Daten, um einen Nutzungsbericht für jeden Benutzer über einen bestimmten Zeitraum zu generieren, möglicherweise zu Abrechnungszwecken.
In vielen Fällen können Batchprozesse Berichte nach einem definierten Zeitplan generieren. Die Berichtsgenerierung führt in der Regel nicht zu einer höheren Latenz, sodass Sie Berichte bei Bedarf generieren können. Wenn Sie Daten in einer relationalen Datenbank wie Azure SQL-Datenbank speichern, können Sie ein Tool wie SQL Server Reporting Services verwenden, um Daten zu extrahieren und zu formatieren und als Gruppe von Berichten darzustellen.
Nächste Schritte
- Azure Monitor – Übersicht
- Überwachen, Diagnostizieren und Problembehandlung von Speicher
- Overview von Warnungen in Azure
- Übersicht über Application Insights
- Performance-Diagnose für Azure VMs
Verwandte Ressourcen
Anleitungen zur automatischen Skalierung beschreiben, wie sich der Verwaltungsaufwand verringern lässt, indem die Notwendigkeit reduziert wird, die Systemleistung kontinuierlich zu überwachen und Entscheidungen über das Hinzufügen oder Entfernen von Ressourcen zu treffen.
Das Monitoring-Muster für Gesundheitsendpunkte beschreibt, wie Funktionsprüfungen in einer Anwendung implementiert werden, auf die externe Tools in regelmäßigen Abständen über bereitgestellte Endpunkte zugreifen können.
Das Muster "Priority Queue " beschreibt, wie Nachrichten in der Warteschlange priorisiert werden, sodass Systeme dringende Anforderungen vor weniger dringenden Nachrichten empfangen und verarbeiten.