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

In diesem Dokument wird beschrieben, wie Sie den Open-Source-Prometheus CloudWatch-Exporter und den Ops-Agent, der auf einer Compute Engine-Instanz ausgeführt wird, verwenden, um AWS CloudWatch-Messwerte zu erfassen und in einem Google Cloud -Projekt zu 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-Instanzen und Ihrer 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

Zum Erfassen von AWS CloudWatch-Messwerten mit dem Prometheus CloudWatch-Exporter 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 für die Ausführung 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 für Ihre neue 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. Mit dem folgenden Befehl können Sie auf Ihre VM zugreifen, um den Prometheus CloudWatch-Exporter und den Ops-Agent zu installieren:

    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 Ihre 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

Um den Prometheus CloudWatch Exporter auszuführen, müssen Sie den Exporter und die Java-Laufzeitumgebung (JRE) in Version 11 oder höher herunterladen.

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

    curl -sSO https://github.com/prometheus/cloudwatch_exporter/releases/download/v0.15.1/cloudwatch_exporter-0.15.1-jar-with-dependencies.jar
    
  2. Verwenden Sie zum Installieren der JRE einen Befehl wie den folgenden:

    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 in Prometheus CloudWatch-Exporter-Konfigurationen für die Migration verwenden. Diese Konfigurationsdateien sind so konzipiert, dass die vorhandenen Messwerte so genau wie möglich repliziert werden. Sie erfassen jedoch nicht alle Messwerte, die mit dem Prometheus CloudWatch-Exporter für die AWS-Dienste verfügbar sind.

  • Neue Nutzer: Wenn Sie keine vorhandenen Messwerte migrieren, empfehlen wir, die Migrationskonfigurationen nicht zu 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 für den Prometheus CloudWatch-Exporter.

Sie können die Konfiguration für mehrere AWS-Dienste in einer Konfigurationsdatei zusammenfassen. 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-Exporter ausführen können, müssen Sie ihm Anmeldedaten und Autorisierung bereitstellen. Der Prometheus CloudWatch-Exporter verwendet das AWS Java SDK, das Möglichkeiten bietet, Anmeldedaten über die folgenden Umgebungsvariablen anzugeben:

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

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

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

Für die Verwendung des Features aws_tag_select ist auch 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. Um Anmeldedaten für den Exporter anzugeben, legen Sie die Umgebungsvariablen für den Zugriffsschlüssel fest:

    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 Ihre Konfiguration zu testen:

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

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

    Wenn Sie Ihre config.yml-Datei ändern, während der Exporter ausgeführt wird, können Sie den Exporter 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-Agent installieren, konfigurieren und starten. Diese Abschnitte enthalten minimale Einrichtungsinformationen für den Ops-Agent zur 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 den Ops-Agent zu installieren. Damit laden Sie das Installationsskript des Agents herunter und führen es aus:

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

Wenn Sie den Ops-Agent konfigurieren möchten, fügen Sie der Nutzerkonfigurationsdatei des Agents Konfigurationselemente hinzu. Unter Linux ist die Nutzerkonfigurationsdatei /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 Datei „user-configuration“ hinzu:

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

Grundkonfiguration für den Ops-Agent

Die folgende Konfiguration ist eine minimale Konfiguration für den Ops-Agent. 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 extrahiert 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 aws-Messwertempfänger 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 verworfen werden

Die folgende Konfiguration führt alle Aktionen der grundlegenden Konfiguration aus, fügt aber auch eine Konfiguration zum Neuzuweisen von Labels hinzu, mit der die vom Exporter generierten JVM-Messwerte verworfen werden. Wenn Sie diese Messwerte entfernen, werden weniger Messwertdaten aufgenommen. Es kann jedoch schwieriger werden, Probleme mit dem Exporter zu beheben, da Sie nicht die eigenen Messwerte des Exporters 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 Ops-Agent neu starten, damit Konfigurationsänderungen wirksam werden.

  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, wie Sie es für alle anderen Messwerte tun. Über die Metrics Explorer-Oberfläche können Sie PromQL, 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 mit PromQL.

Sie können jeden Messwert in Cloud Monitoring mit PromQL 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 Messwertnamen 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, verweisen Sie auf den Messwert als prometheus.googleapis.com/aws_ec2_cpuutilization_sum/gauge 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 Abrufs der Statistik „aws_ec2_cpuutilization_sum“ für AWS-VMs mit 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 Messwertwerten benachrichtigen zu lassen.

Mehrere Regionen überwachen

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

Sie können den Ops-Agent, der auf der Compute Engine-VM ausgeführt wird, so konfigurieren, dass er mehrere Prometheus-Endpunkte extrahiert. Wenn Sie mehrere Instanzen des Prometheus-Exporters konfigurieren, empfehlen wir, für jede Instanz einen anderen job-Namen für die Scrape-Konfiguration zu verwenden, damit Sie die Exporter-Instanzen unterscheiden können, falls Sie Fehler beheben müssen.

Informationen zum Konfigurieren des Ops-Agents und des Prometheus-Receivers finden Sie unter Ops-Agent konfigurieren.

Kosten

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

  • Bei Verwendung der Methode GetMetricStatistics (Standard) ist für jeden Messwert eine API-Anfrage erforderlich. Jede Anfrage kann mehrere Statistiken enthalten.
  • Bei Verwendung von aws_dimensions muss der Exporter API-Anfragen ausführen, um zu ermitteln, welche Messwerte angefordert werden sollen. Die Anzahl der Dimensionsanfragen ist in der Regel im Vergleich zur Anzahl der Messwertanfragen 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 auf der Seite Preise für Google Cloud Observability im Abschnitt zu Cloud Monitoring.

Konfigurationen des Prometheus CloudWatch-Exporters für die Migration

In diesem Abschnitt finden Sie Konfigurationen, die die in der Liste der AWS-Messwerte dokumentierten AWS-Dienstmesswerte so genau wie möglich nachbilden. Diese Konfigurationsdateien sind für Kunden vorgesehen, die von der alten Lösung zum Prometheus CloudWatch-Exporter migrieren. Wenn Sie den Prometheus CloudWatch-Exporter als neuer Nutzer und nicht als migrierender Nutzer einrichten und diese Konfigurationen verwenden, erfassen Sie nicht alle AWS-Messwerte, 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.