AWS CloudWatch-Messwerte mit dem Prometheus CloudWatch-Exporter erfassen

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

Dieses Dokument richtet sich an Entwickler und Systemadministratoren, die Folgendes benötigen: zum Erfassen von AWS CloudWatch-Messwerten. In diesem Dokument wird die Einrichtung des Prometheus CloudWatch-Exporter zum Erfassen von AWS CloudWatch-Messwerten.

Mit Cloud Monitoring können Sie Ihre AWS-Messwerte im selben Kontext ansehen als Ihre Google Cloud-Messwerte. Sie können beispielsweise ein Dashboard mit Diagramme zur Anzeige der CPU-Auslastung für Ihre Amazon EC2-Instanzen und für Ihre Compute Engine-Instanzen. Sie können auch Benachrichtigungen Richtlinien zum Überwachen Ihrer AWS-Messwerte. Weitere Informationen finden Sie in den folgenden Abschnitten:

Hinweise

Um AWS CloudWatch-Messwerte mithilfe des Prometheus CloudWatch-Exporters zu erfassen, benötigen 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. Weitere Informationen finden Sie unter Führen Sie den Prometheus-Exporter aus.

Compute Engine-VM erstellen

Wir empfehlen, eine Linux Compute Engine-VM zu erstellen, die speziell zum Ausführen des Ops-Agents und des Prometheus CloudWatch-Exporters. Diese VM fungiert als die Erfassungswebsite für alle AWS-Messwerte.

  1. Um eine Debian Linux-VM namens aws-exporter-test in einer Zone zu erstellen, führen Sie den folgenden Befehl aus:

    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 der 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. Für den Zugriff auf Ihre VM, sodass Sie den Prometheus CloudWatch-Exporter und den Ops-Agent haben, 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 die VM durch eine anderer Name

    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 herunterladen und Java-Laufzeitumgebung (JRE), Version 11 oder höher.

  1. Um die JAR-Datei mit dem Prometheus CloudWatch-Exporter herunterzuladen, führen Sie den folgenden Befehl auf der Compute Engine-Instanz ausführen:

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

    sudo apt install default-jre
    

Prometheus-Exporter konfigurieren

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

  • Nutzer migrieren: wenn Sie Ihre vorhandene AWS CloudWatch migrieren an den CloudWatch-Exporter von Prometheus zu senden, können Sie die Konfigurationsdateien in Prometheus CloudWatch-Exporter-Konfigurationen für die Migration. Diese Konfigurationsdateien sind so konzipiert, dass sie die vorhandenen Messwerte aber nicht alle verfügbaren Messwerte, mit dem Prometheus CloudWatch-Exporter für die AWS-Dienste.

  • Neue Nutzer: Wenn Sie die vorhandenen Messwerte nicht migrieren, empfehlen wir, verwenden Sie keine Migrationskonfigurationen. Siehe AWS CloudWatch-Dienst finden Sie in der Dokumentation zur Definition von Exporter-Konfigurationen für andere Dienste. Sie können auch Weitere Beispiele im Prometheus CloudWatch-Exporter finden GitHub-Repository.

Sie können die Konfiguration für mehrere AWS-Dienste in einer einzigen Konfigurationsdatei kombinieren. Bei den Beispielen in diesem Dokument wird davon ausgegangen, Die Konfigurationsdatei heißt config.yml.

Prometheus-Exporter ausführen

Bevor Sie den Prometheus CloudWatch-Exporter ausführen können, müssen Sie den mit Anmeldedaten und Autorisierung. Der Prometheus CloudWatch-Exporter verwendet die AWS Java- SDK, mit dem Anmeldedaten bereitgestellt werden können mithilfe der folgenden Umgebungsvariablen:

Weitere Informationen zum Angeben von Anmeldedaten für das SDK Siehe AWS SDK für Java 2.x

Sie benötigen außerdem die Berechtigung, die CloudWatch API zum Abrufen von Daten zu verwenden. Messwerte, 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 auch die Funktion „tag:GetResources“ erforderlich AWS-IAM-Berechtigung.

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 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, den Exporteur zu starten und die Konfigurationsdatei zu laden:

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

    Ändern Sie den Port (9106) und die Konfigurationsdatei (config.yml) -Werte enthalten.

    Wenn Sie die Datei config.yml ändern, während der Exporter ausgeführt wird, Anschließend können Sie den Exporter mit folgendem 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 haben Sie beispielsweise System- und Servicemanager verwenden, systemd.

Ops-Agent einrichten

In den folgenden Abschnitten wird beschrieben, wie Sie den Ops-Agenten installieren, konfigurieren und starten. In diesen Abschnitten finden Sie 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 herunterzuladen und zu installieren führen Sie das Installationsskript des Agents 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

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

Wenn Sie den Ops-Agent so konfigurieren, dass AWS-Messwerte aus dem Prometheus CloudWatch-Exporter verwenden Sie den Prometheus-Empfänger des Agents. Dieses 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 bietet eine minimale Konfiguration für Ops-Agent. Diese Konfiguration führt Folgendes aus:

  • Erstellt einen Empfänger mit dem Namen aws vom Typ prometheus. Der Empfänger ist Konfigurieren, um Messwerte aus dem Job aws_exporter zu extrahieren. Die Der angegebene Port muss mit dem Port übereinstimmen, an dem sich der Prometheus CloudWatch-Exporter befindet Messwerte exportieren Siehe 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 erfüllt alle Funktionen der Grundkonfiguration. aber es wird auch eine Konfiguration für die Labelumbenennung hinzugefügt, die die vom Exporter generierten JVM-Messwerte. Durch das Verwerfen dieser Messwerte aufgenommene Messwertdaten, aber es kann zu Problemen mit dem Exporteur führen. schwierig zu beheben, da Sie nicht die eigenen Messwerte des Exporteurs 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 wesentlich komplexere Konfigurationen für den Ops-Agent erstellen.

Ops-Agent neu starten

Wenn Sie Konfigurationsänderungen auf den Ops-Agent anwenden möchten, müssen Sie den Agent 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 AWS CloudWatch-Messwerte abfragen Diagramme wie für alle anderen Messwerte erstellen. Über den Metrics Explorer PromQL, Monitoring Query Language (MQL) oder einen Query Builder . 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 aws_ec2_cpuutilization_sum-Statistik für AWS-VMs mithilfe von PromQL.

Sie können jeden Messwert in Cloud Monitoring mithilfe von PromQL abfragen. Für finden Sie unter Cloud Monitoring-Messwerte PromQL

Sie können Prometheus-Messwerte mit PromQL oder der Cloud Monitoring-Tools wie Monitoring Query Language (MQL) Wann? Prometheus-Messwerte werden in Cloud Monitoring aufgenommen, mithilfe der Standard- OpenTelemetry-zu-Prometheus-Transformation und dem Cloud Monitoring-System Der überwachte Ressourcentyp prometheus_target. Die Transformation umfasst die folgenden Änderungen:

  • Dem Messwertnamen wird der String prometheus.googleapis.com/ vorangestellt.
  • Alle nicht alphanumerischen Zeichen wie Punkte (.) im Messwertnamen werden durch Unterstriche (_) ersetzt.
  • Der Name des Messwerts wird mit einem String fixiert, der die Art des Messwerts angibt. wie /gauge oder /counter.

Zum Abfragen des Prometheus-Messwerts aws_ec2_cpuutilization_sum mithilfe von MQL, beziehen Sie sich auf den Messwert wie 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 aws_ec2_cpuutilization_sum-Messwert:

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

Benachrichtigungen zu Messwertverhalten

In Cloud Monitoring können Sie [Benachrichtigungsrichtlinien][alert-intro] für Überwachen Ihrer AWS CloudWatch-Messwerte und informieren Sie sich über Spitzen, Einbrüche oder Trends in Messwerten.

Mehrere Regionen im Blick behalten

Die Konfiguration des CloudWatch-Exporters von Prometheus unterstützt die Verwendung von nur einem Region pro Konfigurationsdatei. Wenn Sie mehrere Regionen überwachen müssen, sollten Sie mehrere Instanzen des Prometheus-Exporters ausführen, eine, die für jede Region konfiguriert ist, die Sie überwachen möchten. Sie können mehrere oder Sie können sie auf VMs verteilen. Die Prometheus-Exporter: Docker-Images kann 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 von Prometheus erhalten 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 enthält die folgende Suchanfrage: Merkmale, Dies kann sich auf Ihre Amazon-Kosten auswirken:

  • Bei Verwendung der GetMetricStatistics-Methode (Standardeinstellung) wird jeder Messwert erfordert eine API-Anfrage. Jede Anfrage kann mehrere Statistiken enthalten.
  • Bei Verwendung von aws_dimensions muss der Exporter API-Anfragen ausführen um zu bestimmen, welche Messwerte angefordert werden. Anzahl der Dimensionsanfragen im Vergleich zur Anzahl der Messwertanfragen in der Regel vernachlässigbar.

Cloud Monitoring stellt AWS CloudWatch-Messwerte in Rechnung Prometheus-Exporter nach Anzahl der Stichproben aufgenommen wurden. Die aktuellen Preise finden Sie unter Monitoring-Preise Zusammenfassung

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 Konfiguration -Dateien sind für Kunden gedacht, die in den Prometheus CloudWatch-Exporter aus der Legacy-Lösung. Wenn Sie die den Prometheus CloudWatch-Exporter als neuer Nutzer und nicht als migrierender Nutzer und Wenn Sie 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 ansehen möchten, maximieren Sie eine Datei folgenden Abschnitten erläutert.