Raccogli le metriche di AWS CloudWatch utilizzando l'esportatore Prometheus CloudWatch

Questo documento descrive come utilizzare l'esportatore open source Prometheus CloudWatch e Ops Agent in esecuzione su un'istanza Compute Engine per raccogliere AWS le metriche di CloudWatch e le archivia in un progetto Google Cloud.

Questo documento è rivolto a sviluppatori e amministratori di sistema che devono per raccogliere le metriche di AWS CloudWatch. In questo documento viene descritto come configurare Esportatore Prometheus CloudWatch per raccogliere metriche AWS CloudWatch.

Con Cloud Monitoring puoi visualizzare le metriche AWS nello stesso contesto come metriche Google Cloud. Ad esempio, puoi creare una dashboard con grafici che mostrano l'utilizzo della CPU per le istanze Amazon EC2 e per le tue istanze Compute Engine. Puoi anche creare criteri di avviso per monitorare le metriche AWS. Per ulteriori informazioni, consulta sezioni seguenti:

Prima di iniziare

Per raccogliere le metriche AWS CloudWatch utilizzando Prometheus CloudWatch Exporter, occorre quanto segue:

  • Un progetto Google Cloud con 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 può essere utilizzato dal Esportatore Prometheus per recuperare le metriche. Per ulteriori informazioni, consulta Eseguire 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 agisce nel sito di raccolta per tutte le metriche AWS.

  1. Per creare una VM Debian Linux denominata aws-exporter-test in una zona specifico, esegui questo 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 per la nuova VM
    • Facoltativo. Sostituisci aws-exporter-test con un nome diverso per la tua VM.
    di Gemini Advanced.

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

  2. Per accedere alla VM in modo da poter installare l'esportatore Prometheus CloudWatch 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 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 Riferimento gcloud compute ssh.

Configura l'esportatore Prometheus CloudWatch

Le sezioni seguenti descrivono la procedura di download, installazione e la configurazione dell'esportatore Prometheus CloudWatch sulla VM Compute Engine.

Scarica l'utilità di esportazione Prometheus e il file JRE

Per eseguire l'esportazione Prometheus CloudWatch, devi scaricare l'utilità di esportazione Java Runtime Environment (JRE), versione 11 o successiva.

  1. Per scaricare il file JAR contenente l'esportazione di Prometheus CloudWatch, esegui il seguente comando sulla tua 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 il 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 il servizio o i servizi AWS da cui raccogliere le metriche. Per informazioni generali, consulta la configurazione dell'esportatore Prometheus CloudWatch documentazione.

  • Migrazione degli utenti: se stai eseguendo la migrazione del tuo AWS CloudWatch esistente all'esportatore Prometheus CloudWatch, puoi usare i file di configurazione nelle configurazioni dell'esportatore di Prometheus CloudWatch per la migrazione. Questi file di configurazione sono progettati per replicare le metriche esistenti il più vicino possibile, ma non raccolgono tutte le metriche disponibili utilizzando l'esportatore Prometheus CloudWatch per i servizi AWS.

  • Nuovi utenti: se non esegui la migrazione delle metriche esistenti, ti consigliamo di se non utilizzi le configurazioni di migrazione. Consulta il servizio AWS CloudWatch documentazione per ottenere informazioni su come definire le configurazioni degli esportatori per altri servizi. Puoi anche trovare altri esempi nell'esportatore Prometheus CloudWatch Repository GitHub.

Puoi combinare la configurazione di più servizi AWS in un unico servizio di configurazione del deployment. Gli esempi in questo documento presuppongono che i tuoi di configurazione del file di configurazione denominato config.yml.

Esegui l'esportazione Prometheus

Prima di poter eseguire l'esportazione Prometheus CloudWatch, devi fornire con credenziali e autorizzazione. Prometheus CloudWatch Exporter utilizza l'SDK AWS Java, 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 per Java 2.x.

Devi inoltre disporre dell'autorizzazione per utilizzare l'API CloudWatch per recuperare devi avere quanto segue: AWS IAM CloudWatch autorizzazioni:

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

L'uso della funzionalità aws_tag_select richiede anche tag:GetResources Autorizzazione AWS IAM.

Per ulteriori informazioni su come autorizzare l'accesso ai servizi AWS, vedi AWS Identity and Access Management.

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

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

    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, avvia l'esportatore e carica la configurazione esegui questo comando:

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

    Modifica la porta (9106) e il file di configurazione (config.yml) se necessario.

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

    curl -X POST localhost:9106/-/reload
    

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

Configura Ops Agent

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

Installazione dell'agente operativo

Per installare Ops Agent, utilizza i seguenti comandi per scaricare e 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

Configurazione dell'agente operativo

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

Quando configuri Ops Agent per raccogliere le metriche AWS dall'esportatore Prometheus CloudWatch, utilizzi il ricevitore Prometheus dell'agente. Questo 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 le seguenti operazioni:

  • Crea un ricevitore denominato aws di tipo prometheus. Il destinatario è configurato per eseguire lo scraping delle metriche dal job aws_exporter. La la porta specificata deve corrispondere a quella su cui si trova l'esportatore Prometheus CloudWatch esportando metriche; consulta Eseguire l'esportazione Prometheus.

  • Crea una pipeline denominata aws_pipeline che utilizza il destinatario 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 configurazione seguente esegue tutte le operazioni della configurazione di base, ma viene aggiunta anche una configurazione di rietichettatura che riduce le metriche JVM generate dall'esportatore. Se elimini queste metriche, importati dati di metriche, ma può rendere più i problemi con l'esportatore difficile eseguire il debug, perché non stai ricevendo 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 l'agente operativo

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

  1. Per riavviare l'agente, esegui questo comando sull'istanza:
    sudo service google-cloud-ops-agent restart
    
  2. Per confermare che l'agente è stato riavviato, esegui questo comando verifica che i componenti di "Metrics Agent" e "Agente Logging" data di inizio:
    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. Da Metrics Explorer puoi utilizzare PromQL, Monitoring Query Language (MQL) o un a riga di comando. Per ulteriori informazioni, consulta Creare grafici con Esplora metriche.

Se hai creato grafici che vuoi conservare, puoi salvarli nelle dashboard personalizzate. Per ulteriori informazioni, consulta la panoramica delle dashboard.

Il seguente grafico 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.

Puoi eseguire query su qualsiasi metrica in Cloud Monitoring utilizzando PromQL. Per per informazioni, consulta Mappatura delle metriche di Cloud Monitoring PromQL

Puoi eseguire query sulle metriche Prometheus utilizzando PromQL o utilizzando Strumenti di Cloud Monitoring come Monitoring Query Language (MQL). Quando Le metriche di Prometheus vengono importate in Cloud Monitoring e ogni metrica viene trasformati utilizzando lo standard Trasformazione da OpenTelemetry a Prometheus e mappati a Cloud Monitoring di prometheus_target tipo-risorsa-monitorata. La trasformazione include le seguenti modifiche:

  • Il nome della metrica è preceduto dal prefisso prometheus.googleapis.com/.
  • Eventuali caratteri non alfanumerici, ad esempio i punti (.), nel nome della metrica sono sostituiti da trattini bassi (_).
  • Al nome della metrica viene aggiunto un suffisso che indica il tipo di metrica, come /gauge o /counter.

Per eseguire query sulla metrica aws_ec2_cpuutilization_sum di Prometheus utilizzando MQL, fai riferimento alla metrica prometheus.googleapis.com/aws_ec2_cpuutilization_sum/gauge e specifica il tipo di risorsa monitorata prometheus_target:

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

Il grafico seguente mostra il risultato della query MQL per Metrica aws_ec2_cpuutilization_sum di Prometheus:

Il grafico mostra il risultato del recupero della statistica aws_ec2_cpuutilization_sum per le VM AWS mediante MQL.

Avviso sul comportamento della metrica

In Cloud Monitoring, puoi creare [criteri di avviso][alert-intro] per monitorare le metriche di AWS CloudWatch e ricevere notifiche su picchi, cali o tendenze nei valori delle metriche.

  • Per informazioni sulla creazione di avvisi basati su MQL, consulta Avvisi con MQL.
  • Per informazioni sull'utilizzo dell'interfaccia di Query Builder per creare criteri di avviso, consulta Creare criteri di avviso.

Monitora più regioni

La configurazione dell'esportatore Prometheus CloudWatch supporta l'utilizzo di un solo regione per file di configurazione. Se devi monitorare più regioni, ti consigliamo di eseguire più istanze dell'esportatore Prometheus, una configurata per ogni regione da monitorare. Puoi eseguire più operazioni su una singola VM o da distribuire tra più VM. La Immagini Docker dell'esportatore Prometheus potrebbe essere utile in questa situazione.

Puoi configurare Ops Agent in esecuzione sulla VM di Compute Engine per eseguire lo scraping di più endpoint Prometheus. Quando configurare più istanze dell'esportatore Prometheus, utilizzare un nome job diverso per la configurazione dello scrape, quindi distinguere le istanze dell'esportatore, se necessario, per risolvere i problemi.

Per informazioni sulla configurazione di Ops Agent e Prometheus ricevitore, consulta Configurare Ops Agent.

Costo

Amazon addebita un costo per ogni richiesta API CloudWatch o per ogni CloudWatch la metrica richiesta; per i prezzi attuali, consulta Amazon CloudWatch Prezzi. Esportatore Prometheus CloudWatch contiene la seguente query caratteristiche, 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 stabilire quali metriche richiedere. Il numero di richieste di dimensioni è generalmente trascurabile rispetto al numero di richieste di metriche.

Cloud Monitoring addebita i costi per le metriche AWS CloudWatch dal Esportatore Prometheus in base al numero di campioni importati. Per i prezzi attuali, vedi Prezzi di Monitoring riassunto.

Configurazioni dell'esportatore di Prometheus CloudWatch per la migrazione

Questa sezione fornisce configurazioni che replicano, possibili, le metriche del servizio AWS documentate Metriche AWS. Queste configurazioni sono destinati all'utilizzo da parte di clienti che stanno eseguendo la migrazione Esportatore Prometheus CloudWatch dalla soluzione legacy. Se stai configurando l'esportatore Prometheus CloudWatch come nuovo utente anziché come utente in fase di migrazione e utilizzi queste configurazioni, non stai raccogliendo tutti i pod AWS messe a disposizione dall'esportatore di Prometheus CloudWatch.

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