Überwachen - AWS Präskriptive Leitlinien

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Überwachen

Überwachung ist der Prozess, bei dem verschiedene Messwerte wie CPU und Arbeitsspeicher gesammelt und in einer Zeitreihendatenbank wie Amazon Managed Service for Prometheus gespeichert werden. Das Überwachungssystem kann Push- oder Pull-basiert sein. In Push-basierten Systemen überträgt die Quelle regelmäßig Metriken in die Zeitreihendatenbank. In Pull-basierten Systemen erfasst der Scraper Metriken aus verschiedenen Quellen und speichert sie in der Zeitreihendatenbank. Entwickler können die Metriken analysieren, filtern und sie im Zeitverlauf grafisch darstellen, um die Leistung zu visualisieren. Die erfolgreiche Implementierung von Monitoring kann in zwei große Bereiche unterteilt werden: Anwendung und Infrastruktur.

Für Anwendungsentwickler sind die folgenden Kennzahlen von entscheidender Bedeutung:

  • Latenz — Die Zeit, die benötigt wird, um eine Antwort zu erhalten

  • Anforderungsdurchsatz — Die Gesamtzahl der Anfragen, die pro Sekunde bearbeitet wurden

  • Fehlerrate bei Anfragen — Die Gesamtzahl der Fehler

Erfassen Sie die Ressourcenauslastung, die Auslastung und die Anzahl der Fehler für jede Ressource (z. B. den Anwendungscontainer, die Datenbank), die an der Geschäftstransaktion beteiligt ist. Bei der Überwachung der CPU-Auslastung können Sie beispielsweise die durchschnittliche CPU-Auslastung, die durchschnittliche Last und die Spitzenlast während des Leistungstestlaufs verfolgen. Wenn eine Ressource während eines Stresstests die Sättigung erreicht, während eines Leistungslaufs für einen kürzeren Zeitraum jedoch möglicherweise nicht die Sättigung erreicht.

Metriken

Anwendungen können zur Überwachung ihrer Anwendungen unterschiedliche Aktuatoren verwenden, z. B. Spring-Boot-Aktuatoren. Diese produktionstauglichen Bibliotheken stellen in der Regel einen REST-Endpunkt zur Überwachung von Informationen über die laufenden Anwendungen bereit. Die Bibliotheken können die zugrunde liegende Infrastruktur, Anwendungsplattformen und andere Ressourcen überwachen. Wenn eine der Standardmetriken die Anforderungen nicht erfüllt, muss der Entwickler benutzerdefinierte Metriken implementieren. Benutzerdefinierte Metriken können dabei helfen, wichtige Leistungsindikatoren (KPIs) für Unternehmen nachzuverfolgen, die nicht anhand von Daten aus Standardimplementierungen verfolgt werden können. Möglicherweise möchten Sie beispielsweise einen Geschäftsvorgang nachverfolgen, z. B. die Latenz bei der API-Integration eines Drittanbieters oder die Gesamtzahl der abgeschlossenen Transaktionen.

Kardinalität

Die Kardinalität bezieht sich auf die Anzahl der eindeutigen Zeitreihen einer Metrik. Metriken sind beschriftet, um zusätzliche Informationen bereitzustellen. Beispielsweise gibt eine REST-basierte Anwendung, die die Anzahl der Anfragen für eine bestimmte API verfolgt, eine Kardinalität von 1 an. Wenn Sie ein Benutzerlabel hinzufügen, um die Anzahl der Anfragen pro Benutzer zu identifizieren, steigt die Kardinalität proportional zur Anzahl der Benutzer. Durch Hinzufügen von Labels, die für Kardinalität sorgen, können Sie Metriken nach verschiedenen Gruppen aufteilen. Es ist wichtig, die richtigen Labels für den richtigen Anwendungsfall zu verwenden, da die Kardinalität die Anzahl der Metrikreihen in der Backend-Monitoring-Zeitreihendatenbank erhöht.

Auflösung

In einem typischen Monitoring-Setup ist die Überwachungsanwendung so konfiguriert, dass sie die Metriken regelmäßig aus der Anwendung entfernt. Die Periodizität des Scrapings definiert die Granularität der Überwachungsdaten. In kürzeren Intervallen erfasste Messwerte bieten tendenziell einen genaueren Überblick über die Leistung, da mehr Datenpunkte verfügbar sind. Die Auslastung der Zeitreihendatenbank nimmt jedoch zu, je mehr Einträge gespeichert werden. In der Regel entspricht eine Granularität von 60 Sekunden der Standardauflösung und 1 Sekunde der hohen Auflösung.

DevOps Team

Anwendungsentwickler bitten DevOps Ingenieure häufig, eine Überwachungsumgebung zur Visualisierung von Kennzahlen der Infrastruktur und der Anwendungen einzurichten. Der DevOps Techniker muss eine Umgebung einrichten, die skalierbar ist und die vom Anwendungsentwickler verwendeten Datenvisualisierungstools unterstützt. Dabei werden Überwachungsdaten aus verschiedenen Quellen gesammelt und an eine zentrale Zeitreihendatenbank wie Amazon Managed Service for Prometheus gesendet.

Überwachung des Backends

Ein Monitoring-Backend-Service unterstützt die Erfassung, Speicherung, Abfrage und Visualisierung von Metrikdaten. In der Regel handelt es sich um eine Zeitreihendatenbank wie Amazon Managed Service for Prometheus oder InfluxDB. InfluxData Mithilfe eines Service-Discovery-Mechanismus kann der Monitoring Collector Metriken aus verschiedenen Quellen sammeln und speichern. Bei Leistungstests ist es wichtig, die Metrikdaten zu speichern, damit sie zu einem späteren Zeitpunkt durchsucht werden können. Wir empfehlen, Daten für Metriken mindestens 15 Tage zu speichern. Das Speichern der Metriken über einen längeren Zeitraum bietet jedoch keine wesentlichen Vorteile und führt zu unnötigen Speicherkosten. Da der Leistungstest eine große Menge an Metriken generieren kann, ist es wichtig, dass die Metrikinfrastruktur skaliert und gleichzeitig eine schnelle Abfrageleistung bietet. Der Monitoring-Backend-Service bietet eine Abfragesprache, mit der die Metrikdaten angezeigt werden können.

Visualisierung

Stellen Sie Visualisierungstools bereit, mit denen die Anwendungsdaten angezeigt werden können, um aussagekräftige Einblicke zu erhalten. Der DevOps Techniker und der Anwendungsentwickler sollten die Abfragesprache für das Monitoring-Backend erlernen und eng zusammenarbeiten, um eine Dashboard-Vorlage zu erstellen, die wiederverwendet werden kann. Geben Sie in den Dashboards Latenz und Fehler an und zeigen Sie gleichzeitig die Ressourcennutzung und -auslastung in der gesamten Infrastruktur und den Anwendungsressourcen an.

Automatisierung der Überwachungsinfrastruktur

Ähnlich wie bei der Protokollierung ist es wichtig, die Installation und den Betrieb der Überwachungsinfrastruktur zu automatisieren, damit Sie den unterschiedlichen Anforderungen verschiedener Anwendungen gerecht werden können. Verwenden Sie IaC-Tools, um das Backend der Überwachungsinfrastruktur bereitzustellen. Anschließend können Sie die Überwachungsinfrastruktur entweder als gemeinsam genutzten Dienst oder als unabhängige, maßgeschneiderte Bereitstellung für eine bestimmte Anwendung bereitstellen.

Verwenden Sie CD-Pipelines, um Folgendes zu automatisieren:

  • Stellen Sie die Überwachungsinfrastruktur bei Bedarf bereit und bauen Sie sie ab, wenn sie nicht benötigt wird.

  • Aktualisieren Sie die Überwachungskonfiguration, um Metriken zu filtern oder zu aggregieren.

  • Stellen Sie Anwendungs-Dashboards bereit.

Überwachungstools

Amazon Managed Service for Prometheus ist ein Prometheus-kompatibler Überwachungsservice für Container-Infrastruktur und Anwendungsmetriken für Container, mit dem Sie Container-Umgebungen in großem Maßstab sicher überwachen können. Weitere Informationen finden Sie im Blogbeitrag Erste Schritte mit Amazon Managed Service for Prometheus.

Amazon CloudWatch bietet Full-Stack-Überwachung für AWS. CloudWatch unterstützt sowohl AWS native als auch Open-Source-Lösungen, sodass Sie jederzeit nachvollziehen können, was in Ihrem Technologie-Stack passiert.

Zu den nativen AWS Tools gehören die folgenden:

Amazon CloudWatch bietet speziell entwickelte Funktionen für spezifische Anwendungsfälle wie die Containerüberwachung über CloudWatch Container Insights. Diese Funktionen sind integriert, CloudWatch sodass Sie Protokolle, die Erfassung und Überwachung von Metriken einrichten können.

Verwenden Sie Container Insights für Ihre containerisierten Anwendungen und Microservices, um Metriken und Protokolle zu sammeln, zu aggregieren und zusammenzufassen. Container Insights ist für Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Kubernetes Service (Amazon EKS) und Kubernetes-Plattformen auf Amazon Elastic Compute Cloud (Amazon EC2) verfügbar. Container Insights sammelt Daten als Leistungsprotokollereignisse im eingebetteten metrischen Format. Diese Leistungsprotokollereigniseinträge verwenden ein strukturiertes JSON-Schema, das die Erfassung und Speicherung von Daten mit hoher Kardinalität in großem Maßstab unterstützt.

Informationen zur Implementierung von Container Insights mit Amazon EKS finden Sie im Blogbeitrag Introducing Amazon CloudWatch Container Insights for Amazon EKS Fargate using AWS Distro for. OpenTelemetry