AWS-CloudWatch-Messwerte mit dem Prometheus CloudWatch-Exporter erfassen

In diesem Dokument wird beschrieben, wie Sie mit dem Open-Source-Prometheus CloudWatch-Exporter und dem Ops-Agent, der auf einer Compute Engine-Instanz ausgeführt wird, AWS-CloudWatch-Messwerte erfassen und in einem Google Cloud-Projekt speichern.

Dieses Dokument richtet sich an Entwickler und Systemadministratoren, die AWS-CloudWatch-Messwerte erfassen müssen. In diesem Dokument wird beschrieben, wie Sie den Prometheus CloudWatch-Exporter einrichten, um AWS CloudWatch-Messwerte zu erfassen.

Mit Cloud Monitoring können Sie Ihre AWS-Messwerte im selben Kontext wie Ihre Google Cloud-Messwerte ansehen. Sie können beispielsweise ein Dashboard mit Diagrammen erstellen, in denen die CPU-Auslastung Ihrer Amazon EC2- und Compute Engine-Instanzen angezeigt wird. Sie können auch Benachrichtigungsrichtlinien erstellen, um Ihre AWS-Messwerte zu überwachen. Weitere Informationen finden Sie in den folgenden Abschnitten.

Hinweise

Wenn Sie AWS-CloudWatch-Messwerte mit dem Prometheus CloudWatch-Exporter erfassen möchten, benötigen Sie Folgendes:

  • Ein Google Cloud-Projekt mit Berechtigungen für Folgendes:
    • VM erstellen
    • Logs in Cloud Logging schreiben
    • Messwerte in Cloud Monitoring schreiben
  • Ein AWS-Konto mit AWS-Anmeldedaten, die vom Prometheus-Exporter zum Abrufen von Messwerten verwendet werden können. Weitere Informationen finden Sie unter Prometheus-Exporter ausführen.

Compute Engine-VM erstellen

Wir empfehlen, eine Linux-Compute Engine-VM zu erstellen, die speziell zum Ausführen des Ops-Agent und des Prometheus CloudWatch-Exporters verwendet wird. Diese VM dient als Erfassungsort für alle AWS-Messwerte.

  1. Führen Sie den folgenden Befehl aus, um eine Debian-Linux-VM mit dem Namen aws-exporter-test in einer von Ihnen angegebenen Zone zu erstellen:

    gcloud compute instances create \
      --image-project debian-cloud \
      --image-family debian-11 \
      --zone ZONE \
      aws-exporter-test
    

    Konfigurieren Sie den Befehl so:

    • Ersetzen Sie ZONE durch die Zone Ihrer neuen VM.
    • Optional. Ersetzen Sie aws-exporter-test durch einen anderen Namen für Ihre VM.

    Weitere Informationen zu diesem Befehl finden Sie in der Referenz zu gcloud compute instances create.

  2. Wenn Sie auf Ihre VM zugreifen möchten, um den Prometheus CloudWatch-Exporter und den Ops Agent zu installieren, können Sie den folgenden Befehl verwenden:

    gcloud compute ssh --zone ZONE  --project PROJECT_ID  aws-exporter-test
    

    Konfigurieren Sie den Befehl so:

    • Ersetzen Sie ZONE durch die Zone, in der Sie die VM erstellt haben.
    • Ersetzen Sie PROJECT_ID durch die ID Ihres Google Cloud-Projekts.
    • Ersetzen Sie aws-exporter-test, wenn Sie Ihre VM mit einem anderen Namen erstellt haben.

    Weitere Informationen zu diesem Befehl finden Sie in der Referenz zu gcloud compute ssh.

Prometheus CloudWatch-Exporter einrichten

In den folgenden Abschnitten wird beschrieben, wie Sie den Prometheus CloudWatch-Exporter auf Ihrer Compute Engine-VM herunterladen, installieren und konfigurieren.

Prometheus-Exporter und JRE herunterladen

Wenn Sie den Prometheus CloudWatch-Exporteur ausführen möchten, müssen Sie den Exporteur und die Java-Laufzeitumgebung (JRE) Version 11 oder höher herunterladen.

  1. Führen Sie auf Ihrer Compute Engine-Instanz den folgenden Befehl aus, um die JAR-Datei mit dem Prometheus CloudWatch-Exporteur herunterzuladen:

    curl -sSO https://github.com/prometheus/cloudwatch_exporter/releases/download/v0.15.1/cloudwatch_exporter-0.15.1-jar-with-dependencies.jar
    
  2. Sie können einen Befehl wie den folgenden verwenden, um die JRE zu installieren:

    sudo apt install default-jre
    

Prometheus-Exporter konfigurieren

Um den Prometheus CloudWatch-Exporter zu konfigurieren, erstellen Sie eine Konfigurationsdatei für den oder die AWS-Dienste, aus denen Sie Messwerte erfassen möchten. Allgemeine Informationen finden Sie in der Konfigurationsdokumentation des Prometheus CloudWatch-Exporters.

  • Nutzer migrieren: Wenn Sie Ihre vorhandenen AWS-CloudWatch-Messwerte zum Prometheus CloudWatch-Exporter migrieren, können Sie die Konfigurationsdateien unter Prometheus CloudWatch-Exporter-Konfigurationen für die Migration verwenden. Diese Konfigurationsdateien sollen die vorhandenen Messwerte so genau wie möglich replizieren. Es werden jedoch nicht alle Messwerte erfasst, die mit dem Prometheus CloudWatch-Exporter für die AWS-Dienste verfügbar sind.

  • Neue Nutzer: Wenn Sie keine vorhandenen Messwerte migrieren, sollten Sie die Migrationskonfigurationen nicht verwenden. Informationen zum Definieren von Exporterkonfigurationen für andere Dienste finden Sie in der Dokumentation zum AWS CloudWatch-Dienst. Weitere Beispiele finden Sie auch im GitHub-Repository des Prometheus CloudWatch-Exporters.

Sie können die Konfiguration für mehrere AWS-Dienste in einer einzigen Konfigurationsdatei kombinieren. In den Beispielen in diesem Dokument wird davon ausgegangen, dass Ihre Konfigurationsdatei den Namen config.yml hat.

Prometheus-Exporter ausführen

Bevor Sie den Prometheus CloudWatch-Exporteur ausführen können, müssen Sie ihm Anmeldedaten und eine Autorisierung zuweisen. Der Prometheus CloudWatch-Exporter verwendet das AWS Java SDK, mit dem sich Anmeldedaten mithilfe der folgenden Umgebungsvariablen angeben lassen:

Weitere Informationen zum Angeben von Anmeldedaten für das SDK finden Sie im AWS SDK for Java 2.x.

Außerdem benötigen Sie die Berechtigung, die CloudWatch API zum Abrufen von Messwerten zu verwenden. Sie benötigen die folgenden CloudWatch-Berechtigungen von AWS IAM:

  • cloudwatch:ListMetrics
  • cloudwatch:GetMetricStatistics
  • cloudwatch:GetMetricData

Für die Verwendung der Funktion aws_tag_select ist außerdem die AWS IAM-Berechtigung tag:GetResources erforderlich.

Weitere Informationen zum Autorisieren des Zugriffs auf AWS-Dienste finden Sie unter AWS Identity and Access Management.

So führen Sie den Prometheus CloudWatch-Exporter aus:

  1. Legen Sie die Umgebungsvariablen für den Zugriffsschlüssel fest, um Anmeldedaten für den Exporteur anzugeben:

    export AWS_ACCESS_KEY=YOUR_ACCESS_KEY
    export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY
    export AWS_SESSION_TOKEN=YOUR_SESSION_TOKEN
    

    Ersetzen Sie die Variablen YOUR_KEY durch Ihre Zugriffsschlüssel. Sie müssen die Umgebungsvariable AWS_SESSION_TOKEN nur festlegen, wenn Sie temporäre Anmeldedaten verwenden.

  2. Führen Sie den folgenden Befehl aus, um die Konfiguration zu testen, den Exporter zu starten und die Konfigurationsdatei zu laden:

    java -jar cloudwatch_exporter-0.15.1-jar-with-dependencies.jar 9106 config.yml
    

    Ändern Sie bei Bedarf die Werte für den Port (9106) und die Konfigurationsdatei (config.yml).

    Wenn Sie die config.yml-Datei ändern, während der Exporter ausgeführt wird, können Sie ihn mit dem folgenden Befehl neu laden:

    curl -X POST localhost:9106/-/reload
    

    Für die Verwendung in einer Produktionsumgebung können Sie den Exporter so konfigurieren, dass er neu gestartet wird, wenn die VM neu gestartet wird. Auf Debian-Systemen können Sie beispielsweise den System- und Dienstmanager systemd verwenden.

Ops-Agent einrichten

In den folgenden Abschnitten wird beschrieben, wie Sie den Ops-Agenten installieren, konfigurieren und starten. Diese Abschnitte enthalten Informationen zur minimalen Einrichtung des Ops-Agents für die Verwendung mit dem Prometheus CloudWatch-Exporter. Weitere Informationen zu diesen Themen finden Sie in der Übersicht zum Ops-Agent.

Ops-Agent installieren

Verwenden Sie die folgenden Befehle, um das Installationsskript des Ops-Agent herunterzuladen und auszuführen:

curl -sSO https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh
sudo bash add-google-cloud-ops-agent-repo.sh --also-install

Ops-Agent konfigurieren

Um den Ops-Agent zu konfigurieren, fügen Sie der Nutzerkonfigurationsdatei des Agents Konfigurationselemente hinzu. Unter Linux lautet die Konfigurationsdatei des Nutzers /etc/google-cloud-ops-agent/config.yaml.

Wenn Sie den Ops-Agent so konfigurieren, dass er AWS-Messwerte aus dem Prometheus CloudWatch-Exporter erfasst, verwenden Sie den Prometheus-Empfänger des Agents. In diesem Dokument werden zwei grundlegende Konfigurationen für den Ops-Agent beschrieben. Wählen Sie eine der Konfigurationen aus und fügen Sie sie der Konfigurationsdatei des Nutzers hinzu:

sudo vim /etc/google-cloud-ops-agent/config.yaml

Grundlegende Konfiguration für den Ops-Agent

Die folgende Konfiguration ist eine minimale Konfiguration für den Ops-Agenten. Diese Konfiguration hat folgende Auswirkungen:

  • Erstellt einen Empfänger mit dem Namen aws vom Typ prometheus. Der Empfänger ist so konfiguriert, dass Messwerte aus dem aws_exporter-Job gescrapt werden. Der angegebene Port muss mit dem Port übereinstimmen, über den der Prometheus CloudWatch-Exporter Messwerte exportiert. Weitere Informationen finden Sie unter Prometheus-Exporter ausführen.

  • Erstellt eine Pipeline mit dem Namen aws_pipeline, die den Messwertempfänger aws verwendet.

metrics:
  receivers:
    aws:
      type: prometheus
      config:
        scrape_configs:
          - job_name: 'aws_exporter'
            scrape_interval: 10s
            static_configs:
              - targets: ['localhost:9106']
  service:
    pipelines:
      aws_pipeline:
        receivers:
          - aws

Konfiguration, bei der JVM-Messwerte nicht erfasst werden

Die folgende Konfiguration bietet alle Funktionen der Basiskonfiguration. Außerdem wird eine Konfiguration zum Umbenennen hinzugefügt, mit der die vom Exporter generierten JVM-Messwerte gelöscht werden. Wenn Sie diese Messwerte löschen, werden die aufgenommenen Messwertdaten reduziert. Die Fehlerbehebung bei Problemen mit dem Exporter kann jedoch schwieriger werden, da Sie die eigenen Messwerte des Exporters nicht erhalten:

metrics:
  receivers:
    aws:
      type: prometheus
      config:
        scrape_configs:
          - job_name: 'aws_exporter'
            scrape_interval: 10s
            static_configs:
              - targets: ['localhost:9106']
            # Drop the exporter's own JVM metrics to reduce noise.
            metric_relabel_configs:
              - source_labels: [ __name__ ]
                regex: 'jvm_.*'
                action: drop
  service:
    pipelines:
      aws_pipeline:
        receivers:
          - aws

Sie können viel komplexere Konfigurationen für den Ops-Agent erstellen.

Ops-Agent neu starten

Sie müssen den Agent neu starten, um Konfigurationsänderungen anzuwenden.

  1. Führen Sie den folgenden Befehl auf der Instanz aus, um den Agent neu zu starten:
    sudo service google-cloud-ops-agent restart
    
  2. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Agent neu gestartet wurde. Prüfen Sie dann, ob die Komponenten „Metrics-Agent“ und „Logging-Agent“ gestartet wurden:
    sudo systemctl status google-cloud-ops-agent"*"
    

Messwerte in Cloud Monitoring ansehen

In Cloud Monitoring können Sie Ihre AWS-CloudWatch-Messwerte abfragen und Diagramme erstellen, genau wie bei anderen Messwerten. Über die Oberfläche des Metrics Explorer können Sie PromQL, die Monitoring Query Language (MQL) oder eine Query Builder-Oberfläche verwenden. Weitere Informationen finden Sie unter Diagramme mit dem Metrics Explorer erstellen.

Wenn Sie Diagramme erstellt haben, die Sie behalten möchten, können Sie sie in benutzerdefinierten Dashboards speichern. Weitere Informationen finden Sie unter Dashboards – Übersicht.

Das folgende Diagramm zeigt eine PromQL-Abfrage für den Messwert aws_ec2_cpuutilization_sum für AWS-VMs:

Das Diagramm zeigt das Ergebnis des Abrufens der Statistik „aws_ec2_cpuutilization_sum“ für AWS-VMs mithilfe von PromQL.

Mit PromQL können Sie jeden Messwert in Cloud Monitoring abfragen. Weitere Informationen finden Sie unter Cloud Monitoring-Messwerte PromQL zuordnen.

Sie können Prometheus-Messwerte mit PromQL oder mit Cloud Monitoring-Tools wie der Monitoring Query Language (MQL) abfragen. Wenn Prometheus-Messwerte in Cloud Monitoring aufgenommen werden, wird jeder Messwert mithilfe der standardmäßigen OpenTelemetry-zu-Prometheus-Transformation umgewandelt und dem überwachten Ressourcentyp prometheus_target von Cloud Monitoring zugeordnet. Die Transformation umfasst die folgenden Änderungen:

  • Dem Namen des Messwerts wird der String prometheus.googleapis.com/ (Präfix) vorangestellt.
  • Alle nicht alphanumerischen Zeichen wie Punkte (.) im Messwertnamen werden durch Unterstriche (_) ersetzt.
  • An den Namen des Messwerts wird ein String (Postfix) angehängt, der die Messwertart angibt, z. B. /gauge oder /counter.

Wenn Sie den Prometheus-Messwert aws_ec2_cpuutilization_sum mit MQL abfragen möchten, geben Sie den Messwert als prometheus.googleapis.com/aws_ec2_cpuutilization_sum/gauge an und geben Sie den Typ der überwachten Ressource prometheus_target an:

fetch prometheus_target :: 'prometheus.googleapis.com/aws_ec2_cpuutilization_sum/gauge'

Das folgende Diagramm zeigt das Ergebnis der MQL-Abfrage für den Prometheus-Messwert aws_ec2_cpuutilization_sum:

Das Diagramm zeigt das Ergebnis des Abrufens der Statistik „aws_ec2_cpuutilization_sum“ für AWS-VMs mithilfe von MQL.

Benachrichtigung zu Messwertverhalten

In Cloud Monitoring können Sie [Benachrichtigungsrichtlinien][alert-intro] erstellen, um Ihre AWS CloudWatch-Messwerte zu überwachen und sich über Spitzen, Einbrüche oder Trends bei den Messwerten informieren zu lassen.

Mehrere Regionen im Blick behalten

Die Konfiguration des Prometheus CloudWatch-Exporters unterstützt nur eine Region pro Konfigurationsdatei. Wenn Sie mehrere Regionen überwachen möchten, empfehlen wir, mehrere Instanzen des Prometheus-Exports auszuführen, eine für jede Region, die Sie überwachen möchten. Sie können mehrere Exporter auf einer einzelnen VM ausführen oder sie auf VMs verteilen. Die Docker-Images des Prometheus-Exporteurs können in dieser Situation nützlich sein.

Sie können den Ops-Agent, der auf der Compute Engine-VM ausgeführt wird, so konfigurieren, dass er mehrere Prometheus-Endpunkte abruft. Wenn Sie mehrere Instanzen des Prometheus-Exporteurs konfigurieren, sollten Sie für jede Scrape-Konfiguration einen anderen job-Namen verwenden, damit Sie die Exporteurinstanzen bei der Fehlerbehebung unterscheiden können.

Informationen zum Konfigurieren des Ops-Agents und des Prometheus-Empfängers finden Sie unter Ops-Agent konfigurieren.

Kosten

Amazon berechnet Ihnen jede CloudWatch API-Anfrage oder jeden angeforderten CloudWatch-Messwert. Die aktuellen Preise finden Sie unter Amazon CloudWatch-Preise. Der Prometheus CloudWatch-Exporter hat die folgenden Abfragemerkmale, die sich auf Ihre Amazon-Kosten auswirken können:

  • Bei Verwendung der GetMetricStatistics-Methode (Standard) ist für jeden Messwert eine API-Anfrage erforderlich. Jede Anfrage kann mehrere Statistiken enthalten.
  • Bei Verwendung von aws_dimensions muss der Exporteur API-Anfragen ausführen, um zu ermitteln, welche Messwerte angefordert werden sollen. Die Anzahl der Dimensionsanfragen ist im Vergleich zur Anzahl der Messwertanfragen in der Regel vernachlässigbar.

In Cloud Monitoring fallen Gebühren für AWS CloudWatch-Messwerte aus dem Prometheus-Exporter basierend auf der Anzahl der aufgenommenen Stichproben an. Die aktuellen Preise finden Sie unter Preisübersicht für Monitoring.

Prometheus CloudWatch-Exporter-Konfigurationen für die Migration

In diesem Abschnitt finden Sie Konfigurationen, die die in der Liste AWS-Messwerte dokumentierten AWS-Dienstmesswerte so genau wie möglich nachbilden. Diese Konfigurationsdateien sind für Kunden gedacht, die von der bisherigen Lösung zum Prometheus CloudWatch-Exporter migrieren. Wenn Sie den Prometheus CloudWatch-Exporter als neuen Nutzer statt als migrierenden Nutzer einrichten und diese Konfigurationen verwenden, werden nicht alle AWS-Messwerte erfasst, die der Prometheus CloudWatch-Exporter zur Verfügung stellt.

Wenn Sie eine Beispielkonfigurationsdatei für AWS-CloudWatch-Messwerte aufrufen möchten, maximieren Sie einen der folgenden Abschnitte.