Raccogliere le metriche AWS CloudWatch utilizzando Prometheus CloudWatch Exporter

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

Questo documento è destinato a sviluppatori e amministratori di sistema che devono raccogliere le metriche AWS CloudWatch. Questo documento descrive come configurare Prometheus CloudWatch Exporter per raccogliere le metriche AWS CloudWatch.

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

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
    • Scrivere 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 ulteriori informazioni, consulta la sezione Esegui l'esportatore Prometheus.

Crea una VM di Compute Engine

Ti consigliamo di creare una VM Compute Engine Linux da utilizzare specificamente per eseguire l&#39Ops Agentl'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 che specifichi, esegui il seguente comando:

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

    Configura il comando nel modo seguente:

    • 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 Prometheus CloudWatch Exporter e l&#39Ops Agents, puoi utilizzare il seguente comando:

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

    Configura il comando nel modo seguente:

    • 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 il riferimento gcloud compute ssh.

Configura Prometheus CloudWatch Exporter

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

Scarica l'esportatore Prometheus e JRE

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

  1. Per scaricare il file JAR contenente Prometheus CloudWatch Exporter, esegui il comando seguente nell'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 Prometheus CloudWatch Exporter, crea 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.

  • Migrazione degli utenti: se esegui 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 Prometheus CloudWatch Exporter per i servizi AWS.

  • Nuovi utenti: se non esegui la migrazione delle 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 per più servizi AWS in un unico file di configurazione. Gli esempi in questo documento presuppongono che il file di configurazione sia denominato config.yml.

Esegui l'esportatore Prometheus

Prima di poter eseguire l'esportatore Prometheus CloudWatch, devi fornire le credenziali e l'autorizzazione all'esportatore. Prometheus CloudWatch Exporter utilizza l'AWS Java SDK, 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 anche disporre dell'autorizzazione per utilizzare l'API CloudWatch per recuperare le metriche. Devi disporre delle seguenti autorizzazioni CloudWatch 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 Prometheus CloudWatch Exporter:

  1. Per fornire le credenziali per l'esportatore, imposta le variabili di ambiente access-key:

     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 il file di configurazione eseguendo il comando seguente:

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

    Modifica i valori della porta (9106) e del 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 in modo che si riavvii se la VM si riavvia. Ad esempio, sui sistemi Debian puoi utilizzare il gestore di sistema e servizi systemd.

Configura l'Ops Agent

Le sezioni seguenti descrivono come installare, configurare e avviare Ops Agent. Queste sezioni forniscono informazioni minime sulla configurazione dell&#39Ops Agents per l'utilizzo 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 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 

Configurazione dell'agente operativo

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 da Prometheus CloudWatch Exporter, utilizzi il ricevitore 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 l&#39Ops Agents. Questa configurazione esegue le seguenti operazioni:

  • Crea un destinatario denominato aws di tipo prometheus. Il ricevitore è configurato per recuperare le metriche dal job aws_exporter. La porta specificata deve corrispondere a quella su cui Prometheus CloudWatch Exporter esporta le metriche. Consulta Esegui Prometheus Exporter.

  • Crea una pipeline denominata aws_pipeline che utilizza il ricevitore 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 rietichettatura 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 relativi all'esportatore, perché non vengono visualizzate le metriche dell'esportatore stesso:

 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 l'Ops Agent.

Riavvia l'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"*" 

Visualizzare le metriche in Cloud Monitoring

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

Se hai creato grafici che vuoi conservare, puoi salvarli in dashboard personalizzate. Per ulteriori informazioni, consulta 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.

Per ulteriori informazioni sull'utilizzo di PromQL in Cloud Monitoring, consulta PromQL per Cloud Monitoring.

Avviso sul comportamento delle metriche

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

Monitorare 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, una configurata per ogni regione che vuoi monitorare. Puoi eseguire più esportatori su una singola VM oppure puoi distribuirli su più VM. In questa situazione, potrebbero essere utili le immagini Docker dell'esportatore Prometheus.

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

Per informazioni sulla configurazione di Ops Agent e del ricevitore Prometheus, vedi 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 della query, che possono influire sui costi di Amazon:

  • Quando utilizzi il metodo GetMetricStatistics (impostazione predefinita), ogni metrica richiede una richiesta API. Ogni richiesta può includere più statistiche.
  • Quando si utilizza 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 le metriche di AWS CloudWatch dall'esportatore Prometheus in base al numero di campioni importati. Per i prezzi attuali, consulta le sezioni di Cloud Monitoring della pagina Prezzi di Google Cloud Observability.

Configurazioni di Prometheus CloudWatch Exporter per la migrazione

Questa sezione fornisce configurazioni che replicano, nel modo più fedele possibile, le metriche del servizio AWS documentate nell'elenco Metriche AWS. Questi file di configurazione sono destinati all'uso da parte dei clienti che eseguono la migrazione all'esportatore Prometheus CloudWatch dalla soluzione precedente. Se stai configurando Prometheus CloudWatch Exporter come nuovo utente anziché come utente in fase di migrazione e utilizzi queste configurazioni, non stai raccogliendo tutte le metriche AWS che Prometheus CloudWatch Exporter rende disponibili.

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