Recopila métricas de AWS CloudWatch mediante el exportador de Prometheus para 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 recopilar métricas de AWS CloudWatch y almacenarlas en un proyecto de Google Cloud.

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

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

Antes de comenzar

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

  • Un proyecto de Google Cloud con permisos para realizar las siguientes acciones:
    • Crea una VM
    • Cómo escribir registros en Cloud Logging
    • Cómo escribir 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 Cómo ejecutar 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 para ejecutar el 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 nueva VM.
    • 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 tu VM.
    • Reemplaza PROJECT_ID por el ID de tu proyecto de Google Cloud
    • Reemplaza aws-exporter-test si creaste tu 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 Prometheus CloudWatch en tu VM de Compute Engine.

Descarga el exportador de Prometheus y el JRE

Para ejecutar el exportador de Prometheus 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, crea un archivo de configuración para los servicios de AWS de los que deseas recopilar métricas. Para obtener información general, consulta la documentación de configuración del exportador de Prometheus para CloudWatch.

  • Migración de usuarios: Si migras tus métricas existentes de AWS CloudWatch al exportador de Prometheus para CloudWatch, puedes usar los archivos de configuración que se indican en Parámetros de configuración 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 posible, pero no recopilan todas las métricas disponibles mediante el exportador de Prometheus de CloudWatch para los servicios de AWS.

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

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 tu archivo de configuración se llama config.yml.

Ejecuta el exportador de Prometheus

Antes de que puedas ejecutar el exportador de Prometheus CloudWatch, 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 el SDK de AWS para Java 2.x.

También debes tener permiso para usar la API de CloudWatch para 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 tag:GetResources de AWS.

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 para el exportador, configura 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
    

    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
    

    Si es necesario, cambia los valores del puerto (9106) y del archivo de configuración (config.yml).

    Si modificas tu archivo config.yml mientras el exportador está en ejecución, 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 los sistemas Debian, puedes usar el administrador de servicios y sistemas, systemd.

Configura el agente de operaciones

En las siguientes secciones, se describe cómo instalar, configurar y comenzar el agente de operaciones. En estas secciones, se proporciona información mínima de configuración para el agente de operaciones para 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 de CloudWatch, usas el receptor de Prometheus del agente. En este documento, se describen dos configuraciones básicas para el agente de operaciones. Selecciona una de las configuraciones y agrégala 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 aws_exporter. El puerto especificado debe coincidir con el puerto en el que el exportador de Prometheus para CloudWatch exporta métricas. Consulta Cómo 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 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 cambio de etiqueta 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 problemas con el exportador, ya que no obtienes 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.

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 tu instancia:
    sudo service google-cloud-ops-agent restart
    
  2. Para confirmar que el agente se reinició, ejecuta el siguiente comando y verifica que los componentes “Agente de métricas” y “Agente de Logging” se iniciaron:
    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, el lenguaje de consulta de Monitoring (MQL) 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:

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

Puedes consultar cualquier métrica de Cloud Monitoring con PromQL. Para obtener información, consulta Asigna métricas de Cloud Monitoring a PromQL.

Puedes consultar las métricas de Prometheus con PromQL o con herramientas de Cloud Monitoring, como el Lenguaje de consulta de Monitoring (MQL). Cuando las métricas de Prometheus se transfieren a Cloud Monitoring, cada métrica se transforma con el uso del estándar Transformación de OpenTelemetry a Prometheus y se asigna al tipo de recurso supervisado prometheus_target de Cloud Monitoring. La transformación incluye los siguientes cambios:

  • El nombre de la métrica tiene el prefijo prometheus.googleapis.com/.
  • Los caracteres que no sean alfanuméricos, como los puntos (.), en el nombre de la métrica se reemplazan por guiones bajos (_).
  • El nombre de la métrica se fija con una cadena que indica el tipo de métrica, como /gauge o /counter.

Para consultar la métrica aws_ec2_cpuutilization_sum de Prometheus con MQL, haz referencia a la métrica como prometheus.googleapis.com/aws_ec2_cpuutilization_sum/gauge y especifica el tipo de recurso supervisado prometheus_target:

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

En el siguiente gráfico, se muestra el resultado de la consulta de MQL para la métrica aws_ec2_cpuutilization_sum de Prometheus:

El gráfico muestra el resultado de recuperar la estadística aws_ec2_cpuutilization_sum para las VMs de AWS con MQL.

Alerta sobre el comportamiento de las métricas

En Cloud Monitoring, puedes crear [políticas de alertas][alert-intro] para supervisar tus métricas de AWS CloudWatch y recibir notificaciones sobre aumentos repentinos, descensos 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 deseas supervisar. Puedes ejecutar varios exportadores en una sola VM o distribuirlos entre varias VMs. Las imágenes de 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 recopilar varios extremos de Prometheus. Te recomendamos que, cuando configures varias instancias del exportador de Prometheus, uses un nombre job diferente para la configuración de raspado de cada una, de modo que puedas distinguir las instancias del exportador si necesitas solucionar problemas.

Si deseas obtener información para 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 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 despreciable 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 Resumen de precios de Monitoring.

Parámetros de configuración del exportador de Prometheus para CloudWatch para la migración

En esta sección, se proporcionan configuraciones que replican, lo más cerca posible, las métricas de los servicios 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 realiza la migración y usas estas configuraciones, 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 para las métricas de AWS CloudWatch, expande una de las siguientes secciones.