Raccogliere le metriche AWS CloudWatch utilizzando Prometheus CloudWatch Exporter

La raccolta delle metriche di AWS CloudWatch con l'esportatore Prometheus CloudWatch e Ops Agent ti consente di monitorare le risorse AWS e Google Cloud insieme nelle dashboard e nelle policy di avviso di Cloud Monitoring. Ad esempio, puoi creare un grafico dell'utilizzo della CPU sia per le istanze Amazon EC2 sia per le VM di Compute Engine.

Questo documento è rivolto a sviluppatori e amministratori di sistema che vogliono configurare l'esportatore Prometheus CloudWatch, visualizzare le metriche AWS in Cloud Monitoring e creare avvisi sul comportamento delle metriche.

Prima di iniziare

Per raccogliere le metriche AWS CloudWatch utilizzando l'esportatore Prometheus CloudWatch, devi disporre di quanto segue:

  • Un progetto Google Cloud con le autorizzazioni per eseguire le seguenti operazioni:
    • Crea una VM
    • Scrivi i log in Cloud Logging
    • Scrivi metriche in Cloud Monitoring
  • Un account AWS con credenziali AWS che possono essere utilizzate dall'esportatore Prometheus per recuperare le metriche. Per saperne di più, consulta Esegui l'esportatore Prometheus.

Crea una VM di Compute Engine

Ti consigliamo di creare una VM Compute Engine Linux da utilizzare specificamente per l'esecuzione di Ops Agent e dell'esportatore Prometheus CloudWatch. Questa VM funge da sito di raccolta per tutte le metriche AWS.

  1. Per creare una VM Debian Linux denominata aws-exporter-test in una zona specificata, esegui il seguente comando:

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

    Configura il comando come segue:

    • Sostituisci ZONE con la zona della nuova VM.
    • (Facoltativo) Sostituisci aws-exporter-test con un nome diverso per la tua VM.

    Per ulteriori informazioni su questo comando, consulta il riferimento gcloud compute instances create.

  2. Per accedere alla VM in modo da poter installare l'esportatore Prometheus CloudWatch e Ops Agent, puoi utilizzare il seguente comando:

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

    Configura il comando come segue:

    • Sostituisci ZONE con la zona in cui hai creato la tua VM.
    • Sostituisci PROJECT_ID con l'ID del tuo progetto Google Cloud .
    • Sostituisci aws-exporter-test se hai creato la VM con un nome diverso.

    Per ulteriori informazioni su questo comando, consulta il riferimento gcloud compute ssh.

Configura l'esportatore Prometheus CloudWatch

Le sezioni seguenti descrivono la procedura per scaricare, installare e configurare l'esportatore Prometheus CloudWatch sulla tua VM di Compute Engine.

Scarica l'esportatore Prometheus e il JRE

Per eseguire l'esportatore Prometheus CloudWatch, devi scaricare l'esportatore e Java Runtime Environment (JRE), versione 11 o successive.

  1. Per scaricare il file JAR contenente l'esportatore Prometheus CloudWatch, esegui il seguente comando sull'istanza Compute Engine:

    curl -sSO https://github.com/prometheus/cloudwatch_exporter/releases/download/v0.15.1/cloudwatch_exporter-0.15.1-jar-with-dependencies.jar
    
  2. Per installare JRE, puoi utilizzare un comando come il seguente:

    sudo apt install default-jre
    

Configura l'esportatore Prometheus

Per configurare l'esportatore Prometheus CloudWatch, devi creare un file di configurazione per il servizio o i servizi AWS da cui vuoi raccogliere le metriche. Per informazioni generali, consulta la documentazione di configurazione dell'esportatore Prometheus CloudWatch.

  • Utenti che eseguono la migrazione: se stai eseguendo la migrazione delle metriche AWS CloudWatch esistenti all'esportatore Prometheus CloudWatch, puoi utilizzare i file di configurazione in Configurazioni dell'esportatore Prometheus CloudWatch per la migrazione. Questi file di configurazione sono progettati per replicare le metriche esistenti nel modo più fedele possibile, ma non raccolgono tutte le metriche disponibili utilizzando l'esportatore Prometheus CloudWatch per i servizi AWS.

  • Nuovi utenti: se non stai eseguendo la migrazione di metriche esistenti, ti consigliamo di non utilizzare le configurazioni di migrazione. Consulta la documentazione del servizio AWS CloudWatch per informazioni su come definire le configurazioni dell'esportatore per altri servizi. Puoi anche trovare altri esempi nel repository GitHub dell'esportatore Prometheus CloudWatch.

Puoi combinare la configurazione di più servizi AWS in un unico file di configurazione. Gli esempi in questo documento presuppongono che il file di configurazione si chiami config.yml.

Esegui l'esportatore Prometheus

Prima di poter eseguire l'esportatore Prometheus CloudWatch, devi fornire all'esportatore le credenziali e l'autorizzazione. L'esportatore Prometheus CloudWatch utilizza l'SDK Java AWS, che offre modi per fornire le credenziali utilizzando le seguenti variabili di ambiente:

Per ulteriori informazioni su come fornire le credenziali all'SDK, consulta AWS SDK for Java 2.x.

Devi inoltre disporre dell'autorizzazione per utilizzare l'API CloudWatch per recuperare le metriche. Devi disporre delle seguenti autorizzazioni CloudWatch di AWS IAM:

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

L'utilizzo della funzionalità aws_tag_select richiede anche l'autorizzazione AWS IAM tag:GetResources.

Per saperne di più sull'autorizzazione dell'accesso ai servizi AWS, consulta AWS Identity and Access Management.

Per eseguire l'esportatore Prometheus CloudWatch, segui questi passaggi:

  1. Per fornire le credenziali per l'esportatore, imposta le variabili di ambiente della chiave di accesso:

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

    Sostituisci le variabili YOUR_KEY con le tue chiavi di accesso. Devi impostare la variabile di ambiente AWS_SESSION_TOKEN solo se utilizzi credenziali temporanee.

  2. Per testare la configurazione avviando l'esportatore e caricando il file di configurazione, esegui questo comando:

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

    Se necessario, modifica i valori della porta (9106) e del file di configurazione (config.yml).

    Se modifichi il file config.yml mentre l'esportatore è in esecuzione, puoi ricaricarlo eseguendo questo comando:

    curl -X POST localhost:9106/-/reload
    

    Per l'utilizzo in un ambiente di produzione, puoi configurare l'esportatore in modo che si riavvii se la VM si riavvia. Ad esempio, sui sistemi Debian puoi utilizzare il gestore di sistemi e servizi systemd.

Configura Ops Agent

Le sezioni seguenti descrivono come installare, configurare e avviare Ops Agent. Queste sezioni forniscono informazioni minime sulla configurazione di Ops Agent per l'utilizzo con l'esportatore Prometheus CloudWatch. Per saperne di più su questi argomenti, consulta la panoramica di Ops Agent.

Installa Ops Agent

Per installare Ops Agent, utilizza i seguenti comandi per scaricare ed eseguire lo script di installazione dell'agente:

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

Configura Ops Agent

Per configurare Ops Agent, devi aggiungere elementi di configurazione al file di configurazione utente dell'agente. Su Linux, il file di configurazione utente è /etc/google-cloud-ops-agent/config.yaml.

Quando configuri Ops Agent per raccogliere le metriche AWS dall'esportatore Prometheus CloudWatch, utilizzi il receiver Prometheus dell'agente. Questo documento descrive due configurazioni di base per Ops Agent. Seleziona una delle configurazioni e aggiungila al file di configurazione utente:

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

Configurazione di base per Ops Agent

La seguente configurazione fornisce una configurazione minima per Ops Agent. Questa configurazione prevede quanto segue:

  • Crea un ricevitore denominato aws di tipo prometheus. Il receiver è configurato per eseguire lo scraping delle metriche dal job aws_exporter. La porta specificata deve corrispondere alla porta su cui l'esportatore Prometheus CloudWatch esporta le metriche; consulta Esegui l'esportatore Prometheus.

  • Crea una pipeline denominata aws_pipeline che utilizza il receiver delle metriche aws.

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

Configurazione che elimina le metriche JVM

La seguente configurazione esegue tutte le operazioni della configurazione di base, ma aggiunge anche una configurazione di ridenominazione che elimina le metriche JVM generate dall'esportatore. L'eliminazione di queste metriche riduce i dati delle metriche importate, ma può rendere più difficile il debug dei problemi con l'esportatore, perché non ricevi le metriche dell'esportatore:

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

Puoi creare configurazioni molto più complesse per Ops Agent.

Riavvia Ops Agent

Per applicare le modifiche alla configurazione di Ops Agent, devi riavviare l'agente.

  1. Per riavviare l'agente, esegui il seguente comando sull'istanza:
    sudo service google-cloud-ops-agent restart
    
  2. Per verificare che l'agente sia stato riavviato, esegui il seguente comando e verifica che i componenti "Agente Metriche" e "Agente Logging" siano stati avviati:
    sudo systemctl status google-cloud-ops-agent"*"
    

Visualizza le metriche in Cloud Monitoring

In Cloud Monitoring, puoi eseguire query sulle metriche AWS CloudWatch e creare grafici come faresti per qualsiasi altra metrica. Dall'interfaccia di Metrics Explorer, puoi utilizzare PromQL o un'interfaccia Query Builder. Per ulteriori informazioni, consulta Crea grafici con Esplora metriche.

Se hai creato grafici che vuoi conservare, puoi salvarli in dashboard personalizzate. Per saperne di più, consulta Panoramica delle dashboard.

Il grafico seguente mostra una query PromQL per la metrica aws_ec2_cpuutilization_sum per le VM AWS:

Il grafico mostra il risultato del recupero della statistica aws_ec2_cpuutilization_sum per le VM AWS utilizzando PromQL.

Per saperne di più sull'utilizzo di PromQL in Cloud Monitoring, consulta PromQL per Cloud Monitoring.

Avviso sul comportamento delle metriche

In Cloud Monitoring, puoi creare policy di avviso per monitorare le metriche di AWS CloudWatch e ricevere notifiche di picchi, cali o tendenze nei valori delle metriche.

Monitora più regioni

La configurazione dell'esportatore Prometheus CloudWatch supporta l'utilizzo di una sola regione per file di configurazione. Se devi monitorare più regioni, ti consigliamo di eseguire più istanze dell'esportatore Prometheus, ognuna configurata per ogni regione che vuoi monitorare. Puoi eseguire più esportatori su una singola VM o distribuirli su più VM. In questa situazione potrebbero essere utili le immagini Docker dell'esportatore Prometheus.

Puoi configurare Ops Agent in esecuzione sulla VM di Compute Engine per eseguire lo scraping di più endpoint Prometheus. Ti consigliamo, quando configuri più istanze dell'esportatore Prometheus, di utilizzare un nome job diverso nella configurazione di scraping per ciascuna, in modo da poter distinguere le istanze dell'esportatore se devi risolvere i problemi.

Per informazioni sulla configurazione di Ops Agent e del receiver Prometheus, consulta Configura Ops Agent.

Costo

Amazon addebita un costo per ogni richiesta API CloudWatch o per ogni metrica CloudWatch richiesta. Per i prezzi attuali, consulta Prezzi di Amazon CloudWatch. L'esportatore Prometheus CloudWatch ha le seguenti caratteristiche delle query, che possono influire sui costi di Amazon:

  • Quando utilizzi il metodo GetMetricStatistics (predefinito), ogni metrica richiede una richiesta API. Ogni richiesta può includere più statistiche.
  • Quando utilizzi aws_dimensions, l'esportatore deve eseguire richieste API per determinare quali metriche richiedere. Il numero di richieste di dimensioni è in genere trascurabile rispetto al numero di richieste di metriche.

Cloud Monitoring addebita il costo per le metriche di AWS CloudWatch dell'esportatore Prometheus in base al numero di campioni importati. Per i prezzi attuali, consulta le sezioni di Cloud Monitoring nella pagina Prezzi di Google Cloud Observability.

Configurazioni dell'esportatore Prometheus CloudWatch per la migrazione

Questa sezione fornisce configurazioni che replicano, il più fedelmente possibile, le metriche dei servizi AWS documentate nell'elenco Metriche AWS. Questi file di configurazione sono destinati ai clienti che eseguono la migrazione all'esportatore Prometheus CloudWatch dalla soluzione precedente. Se stai configurando l'esportatore Prometheus CloudWatch come nuovo utente anziché come utente in fase di migrazione e utilizzi queste configurazioni, non stai raccogliendo tutte le metriche AWS rese disponibili dall'esportatore Prometheus CloudWatch.

Per visualizzare un file di configurazione di esempio per le metriche di AWS CloudWatch, espandi una delle sezioni seguenti.