Recopila métricas de AWS CloudWatch mediante el exportador de Prometheus para CloudWatch

Recopilar métricas de AWS CloudWatch con el exportador de Prometheus para CloudWatch y el Agente de operaciones te permite supervisar los recursos de AWS y Google Cloud juntos en los paneles y las políticas de alertas de Cloud Monitoring. Por ejemplo, puedes crear un gráfico del uso de CPU para tus instancias de Amazon EC2 y tus VMs de Compute Engine.

Este documento está dirigido a desarrolladores y administradores de sistemas que deseen configurar el exportador de Prometheus para CloudWatch, ver las métricas de AWS en Cloud Monitoring y recibir alertas sobre el comportamiento de las métricas.

Antes de comenzar

Para recopilar métricas de AWS CloudWatch con el exportador de Prometheus para CloudWatch, necesitas lo siguiente:

  • Un proyecto de Google Cloud con permisos para hacer lo siguiente:
    • Crea una VM
    • Escribe registros en Cloud Logging
    • Escribe métricas en Cloud Monitoring
  • Una cuenta de AWS con credenciales de AWS que el exportador de Prometheus puede usar para recuperar métricas. Para obtener más información, consulta Ejecuta el exportador de Prometheus.

Crea una VM de Compute Engine

Te recomendamos que crees una VM de Compute Engine de Linux para usarla específicamente en la ejecución del Agente de operaciones y el exportador de Prometheus de CloudWatch. Esta VM actúa como el sitio de recopilación de todas las métricas de AWS.

  1. Para crear una VM de Debian Linux llamada aws-exporter-test en una zona que especifiques, ejecuta el siguiente comando:

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

    Configura el comando de la siguiente manera:

    • Reemplaza ZONE por la zona de tu VM nueva.
    • Opcional: Reemplaza aws-exporter-test por un nombre diferente para tu VM.

    Para obtener más información sobre este comando, consulta la referencia de gcloud compute instances create.

  2. Para acceder a tu VM y poder instalar el exportador de Prometheus para CloudWatch y el Agente de operaciones, puedes usar el siguiente comando:

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

    Configura el comando de la siguiente manera:

    • Reemplaza ZONE por la zona en la que creaste la VM.
    • Reemplaza PROJECT_ID por el ID de tu proyecto de Google Cloud .
    • Reemplaza aws-exporter-test si creaste la VM con un nombre diferente.

    Para obtener más información sobre este comando, consulta la referencia de gcloud compute ssh.

Configura el exportador de Prometheus para CloudWatch

En las siguientes secciones, se describe el procedimiento para descargar, instalar y configurar el exportador de CloudWatch de Prometheus en tu VM de Compute Engine.

Descarga el exportador de Prometheus y el JRE

Para ejecutar el exportador de Prometheus para CloudWatch, debes descargar el exportador y el entorno de ejecución de Java (JRE), versión 11 o posterior.

  1. Para descargar el archivo JAR que contiene el exportador de Prometheus CloudWatch, ejecuta el siguiente comando en tu instancia de 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. Para instalar el JRE, puedes usar un comando como el siguiente:

    sudo apt install default-jre
    

Configura el exportador de Prometheus

Para configurar el exportador de Prometheus para CloudWatch, debes crear un archivo de configuración para el servicio o los servicios de AWS de los que quieres recopilar métricas. Para obtener información general, consulta la documentación de configuración del exportador de Prometheus para CloudWatch.

  • Usuarios que migran: Si migras tus métricas existentes de AWS CloudWatch al exportador de Prometheus para CloudWatch, puedes usar los archivos de configuración en Configuraciones del exportador de Prometheus para CloudWatch para la migración. Estos archivos de configuración están diseñados para replicar las métricas existentes lo más fielmente posible, pero no recopilan todas las métricas disponibles con el exportador de Prometheus de CloudWatch para los servicios de AWS.

  • Usuarios nuevos: Si no migras las métricas existentes, te recomendamos que no uses los parámetros de configuración de migración. Consulta la documentación del servicio de AWS CloudWatch para obtener información sobre cómo definir las configuraciones del exportador para otros servicios. También puedes encontrar ejemplos adicionales en el repositorio de GitHub del exportador de CloudWatch de Prometheus.

Puedes combinar la configuración de varios servicios de AWS en un solo archivo de configuración. En los ejemplos de este documento, se supone que el archivo de configuración se llama config.yml.

Ejecuta el exportador de Prometheus

Antes de ejecutar el exportador de CloudWatch de Prometheus, debes proporcionarle credenciales y autorización. El exportador de Prometheus para CloudWatch usa el SDK de Java de AWS, que ofrece formas de proporcionar credenciales con las siguientes variables de entorno:

Para obtener más información sobre cómo proporcionar credenciales al SDK, consulta SDK de AWS para Java 2.x.

También debes tener permiso para usar la API de CloudWatch y recuperar métricas. Necesitas los siguientes permisos de CloudWatch de IAM de AWS:

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

Para usar la función aws_tag_select, también se requiere el permiso de IAM de AWS tag:GetResources.

Para obtener más información sobre cómo autorizar el acceso a los servicios de AWS, consulta Identity and Access Management de AWS.

Para ejecutar el exportador de Prometheus CloudWatch, haz lo siguiente:

  1. Para proporcionar credenciales al exportador, configura las variables de entorno 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
    

    Reemplaza las variables YOUR_KEY por tus claves de acceso. Solo debes configurar la variable de entorno AWS_SESSION_TOKEN si usas credenciales temporales.

  2. Para probar la configuración, inicia el exportador y carga el archivo de configuración. Para ello, ejecuta el siguiente comando:

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

    Cambia los valores del puerto (9106) y del archivo de configuración (config.yml) si es necesario.

    Si modificas el archivo config.yml mientras se ejecuta el exportador, puedes volver a cargarlo con el siguiente comando:

    curl -X POST localhost:9106/-/reload
    

    Para usarlo en un entorno de producción, puedes configurar el exportador para que se reinicie si se reinicia la VM. Por ejemplo, en los sistemas Debian, puedes usar el administrador de sistemas y servicios, systemd.

Configura el Agente de operaciones

En las siguientes secciones, se describe cómo instalar, configurar y, luego, iniciar el Agente de operaciones. En estas secciones, se proporciona información de configuración mínima para el Agente de operaciones que se usará con el exportador de Prometheus para CloudWatch. Para obtener más información sobre estos temas, consulta Descripción general del Agente de operaciones.

Instalar el agente de operaciones.

Para instalar el Agente de operaciones, usa los siguientes comandos para descargar y ejecutar la secuencia de comandos de instalación del 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

Configurar el agente de operaciones

Para configurar el Agente de operaciones, agrega elementos de configuración al archivo de configuración del usuario del agente. En Linux, el archivo de configuración del usuario es /etc/google-cloud-ops-agent/config.yaml.

Cuando configuras el Agente de operaciones para recopilar métricas de AWS del exportador de Prometheus para CloudWatch, usas el receptor de Prometheus del agente. En este documento, se describen dos configuraciones básicas para el Agente de operaciones. Selecciona uno de los parámetros de configuración y agrégalo al archivo de configuración del usuario:

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

Configuración básica del Agente de operaciones

La siguiente configuración proporciona una configuración mínima para el Agente de operaciones. Esta configuración hace lo siguiente:

  • Crea un receptor llamado aws del tipo prometheus. El receptor está configurado para recopilar métricas del trabajo de aws_exporter. El puerto especificado debe coincidir con el puerto en el que el exportador de Prometheus para CloudWatch exporta las métricas; consulta Ejecuta el exportador de Prometheus.

  • Crea una canalización llamada aws_pipeline que usa el receptor de métricas 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

Configuración que descarta las métricas de JVM

La siguiente configuración hace todo lo que hace la configuración básica, pero también agrega una configuración de reetiquetado que descarta las métricas de JVM que genera el exportador. Si descartas estas métricas, se reducen los datos de métricas transferidos, pero puede dificultar la depuración de los problemas con el exportador, ya que no obtienes las métricas propias del exportador:

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

Puedes crear configuraciones mucho más complejas para el Agente de operaciones.

Reinicia el Agente de operaciones

Para aplicar los cambios de configuración al Agente de operaciones, debes reiniciarlo.

  1. Para reiniciar el agente, ejecuta el siguiente comando en la instancia:
    sudo service google-cloud-ops-agent restart
    
  2. Para confirmar que el agente se haya reiniciado, ejecuta el siguiente comando y verifica que los componentes “Agente de métricas” y “Agente de Logging” se hayan iniciado:
    sudo systemctl status google-cloud-ops-agent"*"
    

Visualiza métricas en Cloud Monitoring

En Cloud Monitoring, puedes consultar tus métricas de AWS CloudWatch y crear gráficos como lo haces con cualquier otra métrica. En la interfaz del Explorador de métricas, puedes usar PromQL o una interfaz de compilador de consultas. Para obtener más información, consulta Crea gráficos con el Explorador de métricas.

Si creaste gráficos que deseas conservar, puedes guardarlos en paneles personalizados. Para obtener más información, consulta Descripción general de los paneles.

En el siguiente gráfico, se muestra una consulta de PromQL para la métrica aws_ec2_cpuutilization_sum de las VMs de AWS:

En el gráfico, se muestra el resultado de recuperar la estadística aws_ec2_cpuutilization_sum para las VMs de AWS con PromQL.

Para obtener más información sobre el uso de PromQL en Cloud Monitoring, consulta PromQL para Cloud Monitoring.

Alerta sobre el comportamiento de las métricas

En Cloud Monitoring, puedes crear políticas de alertas para supervisar tus métricas de AWS CloudWatch y recibir notificaciones sobre aumentos, disminuciones o tendencias en los valores de las métricas.

Supervisa varias regiones

La configuración del exportador de Prometheus para CloudWatch admite el uso de solo una región por archivo de configuración. Si necesitas supervisar varias regiones, te recomendamos que ejecutes varias instancias del exportador de Prometheus, una configurada para cada región que quieras supervisar. Puedes ejecutar varios exportadores en una sola VM o distribuirlos entre VMs. Las imágenes de Docker del exportador de Prometheus podrían ser útiles en esta situación.

Puedes configurar el Agente de operaciones que se ejecuta en la VM de Compute Engine para recopilar datos de varios extremos de Prometheus. Cuando configures varias instancias del exportador de Prometheus, te recomendamos que uses un nombre de job diferente en la configuración de extracción para cada una, de modo que puedas distinguir las instancias del exportador si necesitas solucionar problemas.

Para obtener información sobre cómo configurar el Agente de operaciones y el receptor de Prometheus, consulta Configura el Agente de operaciones.

Costo

Amazon cobra por cada solicitud a la API de CloudWatch o por cada métrica de CloudWatch que solicites. Para conocer los precios actuales, consulta los precios de Amazon CloudWatch. El exportador de Prometheus para CloudWatch tiene las siguientes características de consulta, que pueden afectar tus costos de Amazon:

  • Cuando se usa el método GetMetricStatistics (predeterminado), cada métrica requiere una solicitud a la API. Cada solicitud puede incluir varias estadísticas.
  • Cuando se usa aws_dimensions, el exportador debe realizar solicitudes a la API para determinar qué métricas solicitar. La cantidad de solicitudes de dimensiones suele ser insignificante en comparación con la cantidad de solicitudes de métricas.

Cloud Monitoring cobra por las métricas de AWS CloudWatch del exportador de Prometheus según la cantidad de muestras transferidas. Para conocer los precios actuales, consulta las secciones de Cloud Monitoring en la página Precios de Google Cloud Observability.

Configuraciones del exportador de Prometheus para CloudWatch para la migración

En esta sección, se proporcionan parámetros de configuración que replican, lo más fielmente posible, las métricas del servicio de AWS documentadas en la lista de métricas de AWS. Estos archivos de configuración están diseñados para que los usen los clientes que migran al exportador de Prometheus de CloudWatch desde la solución heredada. Si configuras el exportador de Prometheus para CloudWatch como un usuario nuevo en lugar de un usuario que migra y usas estas opciones de configuración, no recopilarás todas las métricas de AWS que el exportador de Prometheus para CloudWatch pone a disposición.

Para ver un archivo de configuración de muestra de las métricas de AWS CloudWatch, expande una de las siguientes secciones.