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

Wenn Sie AWS-CloudWatch-Messwerte mit dem Prometheus CloudWatch-Exporter und dem Ops-Agent erfassen, können Sie AWS- und Google Cloud -Ressourcen gemeinsam in Cloud Monitoring-Dashboards und -Benachrichtigungsrichtlinien überwachen. Sie können beispielsweise die CPU-Auslastung sowohl für Ihre Amazon EC2-Instanzen als auch für Ihre Compute Engine-VMs in einem Diagramm darstellen.

Dieses Dokument richtet sich an Entwickler und Systemadministratoren, die den Prometheus CloudWatch-Exporter einrichten, AWS-Messwerte in Cloud Monitoring ansehen und Benachrichtigungen zum Messwertverhalten erhalten möchten.

Hinweis

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 für die Ausführung des Ops-Agent und des Prometheus CloudWatch-Exporters verwendet wird. Diese VM fungiert 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 die VM erstellt haben.
    • Ersetzen Sie PROJECT_ID durch die ID Ihres Projekts von Google Cloud .
    • 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-Exporter ausführen möchten, müssen Sie den Exporter und die Java-Laufzeitumgebung (JRE) ab Version 11 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. Sie können die JRE mit einem Befehl wie dem folgenden installieren:

    sudo apt install default-jre
    

Prometheus-Exporter konfigurieren

Wenn Sie den Prometheus CloudWatch-Exporter konfigurieren möchten, erstellen Sie eine Konfigurationsdatei für den AWS-Dienst oder die AWS-Dienste, von denen Sie Messwerte erfassen möchten. Allgemeine Informationen finden Sie in der Konfigurationsdokumentation für den Prometheus CloudWatch-Exporter.

  • Migrierende Nutzer: 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. 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, 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 im GitHub-Repository für den Prometheus CloudWatch-Exporter.

Sie können die Konfiguration für mehrere AWS-Dienste in einer 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-Exporter ausführen können, müssen Sie dem Exporter Anmeldedaten und eine Autorisierung zur Verfügung stellen. Der Prometheus CloudWatch-Exporter verwendet das AWS Java SDK, das Möglichkeiten bietet, Anmeldedaten mithilfe der folgenden Umgebungsvariablen bereitzustellen:

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

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

  • 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 Exporter bereitzustellen:

    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 YOUR_KEY-Variablen 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. Dazu starten Sie den Exporter und laden die Konfigurationsdatei:

    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 Datei config.yml ä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. In diesen Abschnitten finden Sie grundlegende Informationen zur Einrichtung des Ops-Agents für die Verwendung mit dem Prometheus CloudWatch-Exporter. Weitere Informationen zu diesen Themen finden Sie unter Ops-Agent – Übersicht.

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

Wenn Sie den Ops-Agent konfigurieren möchten, fügen Sie der Nutzerkonfigurationsdatei des Agents Konfigurationselemente hinzu. Unter Linux lautet 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 Nutzerkonfigurationsdatei hinzu:

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

Grundlegende Konfiguration für den Ops-Agent

Die folgende Konfiguration ist eine Minimalkonfiguration 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 Job aws_exporter 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 Messwert-Receiver 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, die JVM-Messwerte verwirft

Die folgende Konfiguration führt alle Schritte der Basiskonfiguration aus, fügt aber auch eine Konfiguration für die Umbenennung hinzu, die die vom Exporter generierten JVM-Messwerte verwirft. Durch das Löschen dieser Messwerte werden die aufgenommenen Messwertdaten reduziert. Es kann jedoch schwieriger sein, Probleme mit dem Exporter zu beheben, 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-Agenten erstellen.

Ops-Agent neu starten

Wenn Sie Konfigurationsänderungen am Ops-Agent vornehmen möchten, müssen Sie den Agenten neu starten.

  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 wie für alle anderen Messwerte erstellen. In der Metrics Explorer-Oberfläche können Sie PromQL 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 Abrufs des aws_ec2_cpuutilization_sum-Messwerts für AWS-VMs mithilfe von PromQL.

Weitere Informationen zur Verwendung von PromQL in Cloud Monitoring finden Sie unter PromQL für Cloud Monitoring.

Benachrichtigung zu Messwertverhalten

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

Mehrere Regionen überwachen

Die Konfiguration des Prometheus CloudWatch-Exporters unterstützt nur eine Region pro Konfigurationsdatei. Wenn Sie mehrere Regionen überwachen müssen, empfehlen wir, mehrere Instanzen des Prometheus-Exporters auszuführen, wobei für jede zu überwachende Region eine Instanz konfiguriert ist. Sie können mehrere Exporter auf einer einzelnen VM ausführen oder sie auf mehrere VMs verteilen. In dieser Situation können die Docker-Images des Prometheus-Exporters 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 extrahiert. Wenn Sie mehrere Instanzen des Prometheus-Exporters konfigurieren, empfehlen wir, in der Scrape-Konfiguration für jede Instanz einen anderen job-Namen zu verwenden. So können Sie die Exporter-Instanzen unterscheiden, wenn Sie Fehler beheben müssen.

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

Kosten

Amazon berechnet 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 Abfrageeigenschaften, die sich auf Ihre Amazon-Kosten auswirken können:

  • Wenn Sie die Methode GetMetricStatistics (Standard) verwenden, ist für jeden Messwert eine API-Anfrage erforderlich. Jede Anfrage kann mehrere Statistiken enthalten.
  • Wenn Sie aws_dimensions verwenden, muss der Exporter 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 auf der Seite Google Cloud Observability – Preise im Abschnitt zu Cloud Monitoring.

Prometheus CloudWatch-Exporter-Konfigurationen für die Migration

In diesem Abschnitt finden Sie Konfigurationen, die die AWS-Dienstmesswerte aus der Liste der AWS-Messwerte so genau wie möglich replizieren. Diese Konfigurationsdateien sind für Kunden gedacht, die von der Legacy-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.

Erweitern Sie einen der folgenden Abschnitte, um eine Beispielkonfigurationsdatei für AWS CloudWatch-Messwerte aufzurufen.