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 CloudWatch y almacenarlas en un proyecto de Google Cloud.

Este documento está dirigido a desarrolladores y administradores de sistemas que necesiten para recopilar métricas de AWS CloudWatch. En este documento, se describe cómo configurar 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 tus métricas de Google Cloud. Por ejemplo, puedes crear un panel con Gráficos que muestran el uso de CPU de tus instancias de Amazon EC2 y para 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 con el exportador de Prometheus CloudWatch, necesita lo siguiente:

  • Un proyecto de Google Cloud con permisos para realizar las siguientes acciones:
    • 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

Recomendamos crear una VM de Compute Engine para Linux para usarla para ejecutar el Agente de operaciones y el exportador de Prometheus 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 especificar, 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 Ops, 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.

  • Migra usuarios: si estás migrando tu AWS CloudWatch existente. al exportador de Prometheus CloudWatch. Luego, puedes usar los archivos en la configuración del exportador de Prometheus 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 quieres migrar métricas existentes, te recomendamos lo siguiente: no se usan los parámetros de configuración de migración. Consulta el servicio CloudWatch de AWS documentación para obtener información sobre cómo definir las configuraciones del exportador 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 uno de Terraform. 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 proporcionar el con credenciales y autorización. El exportador de Prometheus CloudWatch usa la API de AWS Java SDK, 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 para recuperar Necesitas el siguiente CloudWatch de AWS de IAM permisos:

  • 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. A fin de proporcionar credenciales para el exportador, configura el entorno de clave de acceso variables:

    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 reiniciar si la VM se reinicia. Por ejemplo, en los sistemas Debian, puede usar el administrador del sistema y del servicio, systemd.

Configura el Agente de operaciones

En las siguientes secciones, se describe cómo instalar, configurar e iniciar el Agente de operaciones. Estas secciones proporcionan información de configuración mínima para el Agente de operaciones para usarlo con el exportador de Prometheus 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 Ejecuta 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 El exportador de Prometheus CloudWatch usa el receptor de Prometheus del agente. Esta se describen dos parámetros de configuración básicos para el Agente de operaciones. Selecciona una de las configuraciones y agrégala al 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 es configurada para extraer 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 reetiquetado que descarta las métricas de JVM generadas por el exportador. Descartar estas métricas reduce el datos de métricas transferidos, pero pueden causar más problemas con el exportador difícil de depurar, porque 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 parámetros de configuración mucho más complejos para el Agente de operaciones.

Reinicia el Agente de operaciones

Para aplicar los cambios de configuración al Agente de operaciones, debes reiniciar el agente.

  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 las métricas de AWS CloudWatch y crear gráficos como lo hace 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 Crear gráficos con Explorador de métricas.

Si creaste gráficos que quieres 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 Herramientas de Cloud Monitoring como el lenguaje de consulta de Monitoring (MQL) Cuándo Las métricas de Prometheus se transfieren a Cloud Monitoring, transforman mediante el estándar Transformación de OpenTelemetry a Prometheus y se asignan a la instancia de Cloud Monitoring Tipo de recurso supervisado prometheus_target. La transformación incluye los siguientes cambios:

  • El nombre de la métrica tiene el prefijo de la string 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 tiene un sufijo 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 correspondiente a Métrica aws_ec2_cpuutilization_sum de Prometheus:

En el gráfico, se 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 notificarte sobre aumentos, caídas o tendencias en valores de métricas.

  • Para obtener información sobre cómo crear alertas basadas en MQL, consulta Alertas con MQL.
  • Obtén información sobre el uso de la interfaz del compilador de consultas para crear alertas de seguridad, consulta Crea políticas de alertas.

Supervisa varias regiones

La configuración del exportador de Prometheus CloudWatch admite el uso de solo un región por archivo de configuración. Si necesitas supervisar varias regiones, recomendamos que ejecutes varias instancias del exportador de Prometheus, una configurada para cada región que quieras supervisar. Puedes ejecutar varias o puedes distribuirlos entre 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 configurar varias instancias del exportador de Prometheus, usa un nombre de job diferente para la configuración de scraping, para las instancias del exportador si necesitas solucionar problemas.

Para obtener información sobre cómo configurar el Agente de operaciones y 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 CloudWatch tiene la siguiente consulta características, lo que puede afectar los costos de Amazon:

  • Cuando usas el método GetMetricStatistics (predeterminado), cada métrica requiere una solicitud a la API. Cada solicitud puede incluir varias estadísticas.
  • Cuando usas 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.