Recopilar métricas de AWS CloudWatch mediante el exportador de Prometheus CloudWatch

En este documento se describe cómo usar el exportador de Prometheus CloudWatch de código abierto y el agente de operaciones que se ejecuta en una instancia de Compute Engine para recoger métricas de AWS CloudWatch y almacenarlas en un Google Cloud proyecto.

Este documento está dirigido a desarrolladores y administradores de sistemas que necesitan recopilar métricas de AWS CloudWatch. En este documento se describe cómo configurar el exportador de Prometheus CloudWatch para recoger métricas de AWS CloudWatch.

Con Cloud Monitoring, puedes ver tus métricas de AWS en el mismo contexto que tus métricas de Google Cloud . Por ejemplo, puedes crear un panel de control con gráficos que muestren la utilización de la CPU de tus instancias de Amazon EC2 y de tus instancias de Compute Engine. También puede crear políticas de alertas para monitorizar sus métricas de AWS. Para obtener más información, consulta las siguientes secciones:

Antes de empezar

Para recoger métricas de AWS CloudWatch mediante el exportador de Prometheus CloudWatch, necesitas lo siguiente:

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

Crear una VM de Compute Engine

Te recomendamos que crees una VM de Linux de Compute Engine para usarla específicamente para ejecutar el Agente de operaciones y el exportador de Prometheus CloudWatch. Esta VM actúa como sitio de recogida 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:

    • Sustituye ZONE por la zona de tu nueva máquina virtual.
    • Opcional. Sustituye aws-exporter-test por otro nombre 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 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:

    • Sustituye ZONE por la zona en la que has creado la VM.
    • Sustituye PROJECT_ID por el ID de tu Google Cloud proyecto.
    • Sustituye aws-exporter-test si has creado tu VM con otro nombre.

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

Configurar el exportador de Prometheus CloudWatch

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

Descarga el exportador de Prometheus y el JRE

Para ejecutar el exportador de Prometheus CloudWatch, debes descargar el exportador y Java Runtime Environment (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 JRE, puedes usar un comando como el siguiente:

    sudo apt install default-jre
    

Configurar el exportador de Prometheus

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

  • Migración de usuarios: si vas a migrar tus métricas de AWS CloudWatch al exportador de Prometheus CloudWatch, puedes usar los archivos de configuración de Configuraciones del exportador de Prometheus CloudWatch para la migración. Estos archivos de configuración se han diseñado para replicar las métricas actuales de la forma más precisa posible, pero no recogen todas las métricas disponibles mediante el exportador de Prometheus CloudWatch para los servicios de AWS.

  • Nuevos usuarios: si no vas a migrar métricas, te recomendamos que no utilices las configuraciones de migración. Consulta la documentación del servicio AWS CloudWatch para obtener información sobre cómo definir configuraciones de exportadores para otros servicios. También puedes encontrar más ejemplos en el repositorio de GitHub del exportador de Prometheus CloudWatch.

Puede combinar la configuración de varios servicios de AWS en un archivo de configuración. En los ejemplos de este documento se da por hecho que el archivo de configuración se llama config.yml.

Ejecutar el exportador de Prometheus

Para poder ejecutar el exportador de Prometheus CloudWatch, debes proporcionar al exportador credenciales y autorización. El exportador de Prometheus CloudWatch usa el SDK de Java de AWS, que ofrece formas de proporcionar credenciales mediante 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 AWS IAM:

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

Para usar la función aws_tag_select, también se necesita el permiso de gestión de identidades y accesos de AWS tag:GetResources.

Para obtener más información sobre cómo autorizar el acceso a los servicios de AWS, consulta Gestión de Identidades y Accesos de AWS.

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

  1. Para proporcionar las credenciales del exportador, define las variables de entorno de la clave de acceso:

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

    Sustituye las variables YOUR_KEY por tus claves de acceso. Solo tienes que definir 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 está ejecutando el exportador, puedes volver a cargarlo ejecutando 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 sistemas Debian, puedes usar el gestor de sistemas y servicios systemd.

Configurar el agente de operaciones

En las siguientes secciones se describe cómo instalar, configurar e iniciar el agente de operaciones. En estas secciones se proporciona información mínima sobre la configuración del agente de operaciones para usarlo con el exportador de Prometheus CloudWatch. Para obtener más información sobre estos temas, consulta la descripción general del agente de Ops.

Instalar el Agente de operaciones

Para instalar el agente de Ops, 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, debe añadir elementos de configuración al archivo de configuración de 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 que recoja métricas de AWS del exportador de Prometheus CloudWatch, usas el receptor de Prometheus del agente. En este documento se describen dos configuraciones básicas del agente de operaciones. Selecciona una de las configuraciones y añádela 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 Ops. Esta configuración hace lo siguiente:

  • Crea un receptor llamado aws de tipo prometheus. El receptor está configurado para obtener métricas de la tarea aws_exporter. El puerto especificado debe coincidir con el puerto en el que el exportador de Prometheus CloudWatch exporta métricas. Consulta Ejecutar 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 elimina métricas de JVM

La siguiente configuración hace todo lo que hace la configuración básica, pero también añade una configuración de cambio de etiqueta que elimina las métricas de JVM generadas por el exportador. Si se eliminan estas métricas, se reducen los datos de métricas ingeridos, pero puede resultar más difícil depurar los problemas del exportador, ya que no se obtienen las métricas 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.

Reiniciar 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 tu instancia:
    sudo service google-cloud-ops-agent restart
    
  2. Para confirmar que el agente se ha reiniciado, ejecuta el siguiente comando y verifica que los componentes "Metrics Agent" y "Logging Agent" se han iniciado:
    sudo systemctl status google-cloud-ops-agent"*"
    

Ver métricas en Cloud Monitoring

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

Si has creado gráficos que quieres conservar, puedes guardarlos en paneles de control personalizados. Para obtener más información, consulta el artículo Información general sobre los paneles de control.

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

El gráfico muestra el resultado de obtener la estadística aws_ec2_cpuutilization_sum de las VMs de AWS mediante PromQL.

Para obtener más información sobre cómo usar PromQL en Cloud Monitoring, consulta PromQL para Cloud Monitoring.

Alertas sobre el comportamiento de las métricas

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

Monitorizar varias regiones

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

Puedes configurar el agente de operaciones que se ejecuta en la VM de Compute Engine para que raspe varios endpoints de Prometheus. Le recomendamos que, cuando configure varias instancias del exportador de Prometheus, utilice un nombre job diferente en la configuración de extracción de cada una de ellas para poder distinguir las instancias del exportador si necesita solucionar problemas.

Para obtener información sobre cómo configurar el agente de operaciones y el receptor de Prometheus, consulta el artículo Configurar el agente de operaciones.

Coste

Amazon cobra por cada solicitud de API de CloudWatch o por cada métrica de CloudWatch que solicites. Para consultar los precios actuales, visita la página Precios de Amazon CloudWatch. El exportador de Prometheus CloudWatch tiene las siguientes características de consulta, que pueden afectar a tus costes de Amazon:

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

Cloud Monitoring cobra por las métricas de AWS CloudWatch del exportador de Prometheus según el número de muestras ingeridas. Para consultar los precios actuales, ve a las secciones de Cloud Monitoring de la página Precios de Google Cloud Observability.

Configuraciones del exportador de Prometheus CloudWatch para la migración

En esta sección se proporcionan configuraciones que replican, en la medida de lo posible, las métricas de servicio de AWS que se documentan en la lista de métricas de AWS. Estos archivos de configuración están pensados para los clientes que migran a Prometheus CloudWatch Exporter desde la solución antigua. Si estás configurando el exportador de Prometheus CloudWatch como usuario nuevo en lugar de como usuario que migra y utilizas estas configuraciones, no estarás recogiendo todas las métricas de AWS que el exportador de Prometheus CloudWatch pone a tu disposición.

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