Engineering

Überwachen von AWS EC2 mit Metricbeat

Mit 7.0 haben wir ein neues Modul in Metricbeat eingeführt, mit dem Sie Amazon Web Services überwachen können. Zum Zeitpunkt der ursprünglichen Veröffentlichung in 7.0.0-beta1 können Sie mit diesem AWS-Modul Ihre AWS-EC2-Überwachungsmetriken mit Metricbeat aus Cloudwatch abrufen und in einem Metrikensatz mit dem Namen ec2 speichern. Diese Metriken liefern Einblicke in alle EC2-Instanzen über mehrere Regionen hinweg, ohne Metricbeat direkt auf den Instanzen installieren zu müssen.

Hintergrund

Amazon Elastic Compute Cloud (EC2)-Instanzen sind virtuelle Server in der AWS-Plattform, die den Benutzern sichere und skalierbare Rechenkapazität in der öffentlichen Cloud bereitstellen. EC2 ist wohl der wichtigste unter den Hunderten von Diensten, die AWS anbietet: praktisch jeder Benutzer braucht Zugang zu Rechenressourcen.

Die zentrale Überwachung von EC2-Instanzen, um Probleme erkennen und debuggen zu können, ist schwierig. Metricbeat erfasst zwar bereits ausführliche Ressourcenmetriken mit dem system-Modul, aber dafür müssen Sie eine Metricbeat-Instanz in jeder Ihrer EC2-Instanzen installieren. Die erfassten Metriken sind sehr ausführlich und differenziert, aber manchmal brauchen Sie einfach nur einen schnellen Überblick über die Ressourcennutzung all Ihrer EC2-Instanzen.

Dabei kommt AWS Cloudwatch ins Spiel. Cloudwatch erfasst und zentralisiert grundlegende Metriken zur Ressourcenauslastung für all Ihre EC2-Instanzen automatisch. Die Daten werden standardmäßig mit einer Granularität von fünf Minuten abgerufen, und Sie können sich für die ausführliche Überwachung registrieren, um eine höhere Granularität und umfassendere Metriken zu erhalten.

Metricbeat AWS konfigurieren

Bevor Sie mit Metricbeat anfangen, benötigen Sie einen funktionstüchtigen Elasticsearch, inklusive Elasticsearch zum Speichern und Indexieren der Daten und Kibana, um die Daten zu erkunden. Dazu können Sie entweder einen Cluster im Elasticsearch Service in der Elastic Cloud erstellen oder den Elastic Stack auf Ihrem lokalen Computer einrichten.

Sobald Sie Kibana geladen haben, können Sie vom Hauptbildschirm aus zu Add Data UI (Daten-GUI hinzufügen) navigieren und dort den Anweisungen zur Einrichtung des AWS-Moduls folgen.

Metricbeat für AWS EC2 bereitstellen

Lesen Sie weiter, um Details zu diesen Lösungen zu erfahren.

AWS-Modul aktivieren

Im vorkonfigurierten Metricbeat ist standardmäßig nur das system-Modul aktiviert, daher müssen Sie das AWS-Modul explizit aktivieren. Mit dem folgenden Befehl können Sie die AWS-Konfiguration im Verzeichnis modules.d direkt auf MacOS- und Linux-Systemen aktivieren:

./metricbeat modules enable aws

AWS-Anmeldedaten in der Konfigurationsdatei angeben

Sie können zwei verschiedene Arten von AWS-Anmeldedaten verwenden: Zugriffsschlüssel und temporäre Sicherheitsanmeldedaten. Zugriffsschlüssel bestehen aus einer Zugriffsschlüssel-ID und einem geheimen Zugriffsschlüssel. Diese Schlüssel sind langfristige Anmeldedaten für einen IAM-Benutzer oder für die Authentifizierung des root-Benutzers des AWS-Kontos für AWS API-Aufrufe. Temporäre Sicherheitsanmeldedaten bestehen aus einer Zugriffsschlüssel-ID, einem geheimen Zugriffsschlüssel und einem Sicherheitstoken mit begrenzter Lebensdauer.

Die temporären Anmeldedaten sind nur begrenzt gültig und müssen nach dem Ablauf daher neu generiert und in der Konfigurationsdatei modules.d/aws.yml eingetragen werden. Nach der Konfigurationsänderung müssen Sie Metricbeat manuell neu starten, es sei denn, Sie haben das Feature Live Reloading für Metricbeat aktiviert. Dabei wird die Datenerfassung unterbrochen, wenn die neuen Anmeldedaten rechtzeitig vor Ablauf der alten Daten in der Konfigurationsdatei eingetragen werden. Für Metricbeat empfehlen wir daher, Zugriffsschlüssel in der Konfigurationsdatei zu verwenden, damit das AWS-Modul seine AWS API-Aufrufe stellen kann, ohne regelmäßig neue temporäre Anmeldedaten generieren und die Konfiguration aktualisieren zu müssen.

Erstellen einer IAM-Richtlinie

Eine IAM-Richtlinie ist eine Entität, die Berechtigungen für ein Objekt in Ihrer AWS-Umgebung definiert. Sie benötigen eine benutzerdefinierte IAM-Richtlinie für Metricbeat mit speziellen Berechtigungen. Weitere Details finden Sie unter Erstellen von IAM-Richtlinien. Nachdem Sie die IAM-Richtlinie erstellt haben, müssen Sie sie zu dem IAM-Benutzer hinzufügen, der die Anmeldedaten im vorherigen Schritt bereitgestellt hat.

Mit dem EC2-Metrikensatz müssen Sie vier Berechtigungen zu Ihrer Metricbeat IAM-Richtlinie hinzufügen:

  • ec2:DescribeRegions
  • ec2:DescribeInstances
  • cloudwatch:ListMetrics
  • cloudwatch:GetMetricData

Metricbeat starten

Verwenden Sie die folgende Syntax unter Mac- und Linux-Systemen, um Metricbeat zu starten:

./metricbeat -E setup.dashboards.enabled=true -e

Hinweis: Wenn Sie Metricbeat auf einem virtuellen Computer in einer Cloud-Instanz wie etwa GCP, AWS oder Azure ausführen, sollten Sie den Kommentar vor dem Eintrag add_cloud_metadata in der Datei „metricbeat.yml“ entfernen.

Sobald Sie den EC2-Metrikensatz in Metricbeat mit gültigen AWS-Anmeldedaten aktiviert haben, ruft Metricbeat regelmäßig Informationen über alle Instanzen ab und erfasst EC2-Überwachungsmetriken aus AWS Cloudwatch. Der EC2-Metrikensatz erfasst standardmäßig alle 300 Sekunden Informationen. Wenn Sie die ausführliche Überwachung für Ihre Instanzen aktivieren, sollte das Erfassungsintervall für den EC2-Metrikensatz zu 60 Sekunden geändert werden, da Sie mit dieser zahlungspflichtigen Ebene Ihre Metriken mit einer höheren Granularität erfassen können. Das Erfassungsintervall wird in der Datei modules.d/aws.yml festgelegt, zum Beispiel:

- module: aws
  period: 60s
  metricsets:
    - "ec2"
  access_key_id: '${AWS_ACCESS_KEY_ID:""}'
  secret_access_key: '${AWS_SECRET_ACCESS_KEY:""}'
  session_token: '${AWS_SESSION_TOKEN:""}'
  default_region: '${AWS_REGION:us-west-1}'

Der EC2-Metrikensatz erkennt neue Instanzen selbständig und erfasst deren Metriken automatisch. Wenn eine EC2-Instanz beendet oder heruntergefahren wird, erkennt der EC2-Metrikensatz die Statusänderung beim nächsten Erfassungszyklus automatisch und sendet die neue Statusmetric an Elasticsearch.

Neues Dashboard für das Kibana AWS-Modul

Der EC2-Metrikensatz enthält ein vordefiniertes Dashboard mit dem Namen [Metricbeat AWS] EC2 Overview. Wenn Sie den setup-Befehl beim Starten von Metricbeat ausführen, werden diese Dashboards in Kibana automatisch eingerichtet. Weitere Informationen hierzu finden Sie unter Einrichten der Kibana-Dashboards.

Dieses Dashboard enthält eine Übersicht über Ihre AWS EC2-Instanzen. Hier sehen Sie Zustand und Statusüberprüfungen für Instanzen sowie Daten zu CPU-Auslastung, Netzwerk und Laufwerks-E/A. Sie können die Daten mit verschiedenen Filtern auf eine bestimmte Region, eine Verfügbarkeitsgruppe oder einen Computertyp eingrenzen.

Kibana-Dashboard für AWS EC2

Mit diesem Dashboard können Sie Probleme aufdecken und sicherstellen, dass alle Instanzen für die jeweilige Aufgabe optimiert sind. Wenn eine Instanz beispielsweise ständig eine hohe CPU-Auslastung und Leistungsprobleme meldet, deutet dies vermutlich auf einen CPU-Leistungsengpass hin, und diese Instanz braucht mehr CPU-Leistung. Wenn Sie dagegen eine Instanz mit anhaltend niedriger CPU-Auslastung sehen, dann ist diese Instanz vermutlich überdimensioniert und kann herunterskaliert oder mit einer anderen Instanz konsolidiert werden.

Was kommt als Nächstes?

Mit den Überwachungsmetriken aus verschiedenen AWS-Diensten und -Regionen an einem zentralen Ort können Sie Ihre Ressourcennutzung optimieren und Probleme schneller entdecken und beheben. Probieren Sie es aus, und in unserem Beats-Forum können Sie uns wie immer Ihre Meinung sagen, Ihr Feedback schicken oder uns erzählen, wie Sie diese Lösung einsetzen werden.

Der EC2-Metrikensatz im AWS-Modul ist erst der Anfang! Wir arbeiten bereits eifrig an der Erstellung weiterer Metrikensätze für andere häufig verwendete Dienste wie etwa Amazon S3, SQS, RDS und so weiter. Falls Sie einen Vorschlag dazu haben, wie wir weitermachen sollen, oder einen Beitrag leisten möchten, können Sie jederzeit am Beats Github-Repository mitwirken!