Recopila métricas de AWS CloudWatch con 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 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 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 pueda usar el Exportador de Prometheus 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. Acceder a tu VM para instalar el exportador de Prometheus CloudWatch y el de 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 del proyecto de Google Cloud
    • Reemplaza aws-exporter-test si creaste tu VM con una otro nombre

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

Configura el exportador de Prometheus CloudWatch

En las siguientes secciones, se describe el procedimiento de descarga, instalación, 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 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: 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 CloudWatch, crea un archivo de configuración para o servicios de AWS de los que quieres recopilar métricas. Para obtener información general, consulta la configuración del exportador de Prometheus CloudWatch. documentación.

  • 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 como con la mayor precisión posible, pero no recopilan todas las métricas disponibles con el exportador de Prometheus 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 encuentra muestras adicionales en el exportador de Prometheus CloudWatch Repositorio de GitHub.

Puedes combinar la configuración de varios servicios de AWS en uno de Terraform. En los ejemplos de este documento, se supone que tu de configuración de Terraform se llama config.yml.

Ejecuta el exportador de Prometheus

Antes de que puedas ejecutar el exportador de Prometheus CloudWatch, debes proporcionar el exportador 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 elemento tag:GetResources Permiso de IAM de AWS.

Para obtener más información sobre la autorización de acceso a los servicios de AWS, consulta Administración de identidades y accesos 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 tu configuración, inicia el exportador y carga tu configuración ejecuta el siguiente comando:

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

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

    Si modificas tu archivo config.yml mientras se ejecuta el exportador, haz lo siguiente: Luego, puedes volver a cargar el exportador 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 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 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 de tipo prometheus. El receptor es configurada para extraer métricas del trabajo aws_exporter. El debe coincidir con el puerto en el que se encuentra el exportador de Prometheus CloudWatch exportar 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 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. Desde el Explorador de métricas puedes usar PromQL, el lenguaje de consulta de Monitoring (MQL) o un compilador de consultas interfaz de usuario. Para obtener más información, consulta Crear gráficos con 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 Métrica aws_ec2_cpuutilization_sum para 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.

Puedes consultar cualquier métrica en Cloud Monitoring con PromQL. Para 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/.
  • Cualquier carácter que no sea alfanumérico, como 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 mediante MQL, consulta 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 alertas, 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. El Exportador de Prometheus: imágenes de Docker podría ser útil en esta situación.

Puedes configurar el Agente de operaciones que se ejecuta en la VM de Compute Engine para recopilar múltiples 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 puedes distinguir 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 CloudWatch. métrica que solicites; Para conocer los precios actuales, consulta Amazon CloudWatch Precios. El exportador de Prometheus CloudWatch tiene la siguiente consulta características, lo que puede afectar los 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 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 insignificante en comparación con la cantidad de solicitudes de métricas.

Cloud Monitoring cobra por las métricas de AWS CloudWatch desde la Exportador de Prometheus según la cantidad de muestras transferidos. Para conocer los precios actuales, consulta Precios de Monitoring resumen.

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

En esta sección, se proporcionan parámetros de configuración que se replican, como sea posible, las métricas del servicio de AWS documentadas Lista de métricas de AWS. Estos parámetros de configuración están diseñados para que los usen los clientes que migran al Exportador de Prometheus CloudWatch desde la solución heredada. Si estás configurando el exportador de Prometheus CloudWatch como un usuario nuevo en lugar de un usuario que estas configuraciones, no recopilará todos los datos de las métricas que pone a disposición el exportador de Prometheus CloudWatch.

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