View a markdown version of this page

Solución de Amazon CloudWatch: recopilación de métricas de Prometheus en Amazon EC2 - Amazon CloudWatch

Solución de Amazon CloudWatch: recopilación de métricas de Prometheus en Amazon EC2

Esta solución lo ayuda a recopilar métricas compatibles con Prometheus de sus instancias de Amazon EC2 sin ejecutar ni escalar su propia infraestructura de recopilación. Ejecuta uno o más exportadores de Prometheus en sus instancias y un recopilador de Prometheus administrado por Amazon CloudWatch detecta los destinos en su VPC, extrae sus puntos de conexión de /metrics y envía las métricas a CloudWatch. Para obtener información general sobre todas las soluciones de observabilidad de CloudWatch, consulte Soluciones de observabilidad de CloudWatch. Para obtener más información sobre los recopiladores administrados, consulte Recopiladores de Prometheus administrados por Amazon CloudWatch.

Requisitos

Esta solución es adecuada para las siguientes condiciones:

  • Computación: instancias de Amazon EC2 que ejecutan uno o más exportadores de Prometheus.

  • Amazon VPC con el DNS habilitado y al menos dos subredes en distintas zonas de disponibilidad para el recopilador.

  • Un grupo de seguridad que permita al recopilador acceder a los puertos del exportador en sus instancias.

Habilitación de los exportadores de Prometheus

Un exportador de Prometheus es un proceso que expone las métricas en formato de exposición de Prometheus en un punto de conexión HTTP de /metrics. Ejecuta un exportador que se adapta a la carga de trabajo que desea supervisar. Los siguientes exportadores se utilizan habitualmente en Amazon EC2:

  • Node Exporter: métricas de infraestructura por host, como, por ejemplo, la CPU, la memoria, el disco y la red (puerto predeterminado 9100). Para obtener más información, consulte el repositorio Node Exporter en GitHub.

  • JMX Exporter: métricas de aplicaciones de JVM y Java para cargas de trabajo de Java. Para obtener más información, consulte el repositorio JMX Exporter en GitHub.

  • NGINX Prometheus Exporter: métricas de proxy inverso y servidor web de NGINX. Para obtener más información, consulte el repositorio NGINX Prometheus Exporter en GitHub.

  • DCGM Exporter: métricas de GPU de NVIDIA para cargas de trabajo de GPU, como el entrenamiento y la inferencia de machine learning (puerto predeterminado 9400). Para obtener más información, consulte el repositorio DCGM Exporter en GitHub.

  • HAProxy Exporter: métricas del equilibrador de carga de HAProxy. Para obtener más información, consulte el repositorio HAProxy Exporter en GitHub.

  • Apache Exporter: métricas del servidor HTTP de Apache. Para obtener más información, consulte el repositorio Apache Exporter en GitHub.

Instale y ejecute cada exportador en las instancias siguiendo su documentación oficial. Anote el puerto en el que escucha cada exportador, ya que hace referencia a estos puertos en la configuración de extracción. Para ver el catálogo completo de exportadores disponibles, consulte Exporters and integrations en la documentación de Prometheus.

Después de iniciar un exportador, consulte su punto de conexión desde la instancia para confirmar que exponga las métricas:

curl http://localhost:port-number/metrics

Paso 1: Definir la configuración de extracción

En el siguiente ejemplo, se utiliza static_configs con los nombres de DNS privados de la instancia para extraer una aplicación de muestra (puerto 8080) y Node Exporter (puerto 9100) en las instancias de Amazon EC2. La sección relabel_configs agrega etiquetas coherentes a sus métricas para que pueda consultar y filtrar los distintos servicios. Para obtener el conjunto completo de las opciones de configuración admitidas, consulte Configuración del raspador.

global: scrape_interval: 30s scrape_timeout: 10s scrape_configs: - job_name: 'ec2-metrics' static_configs: - targets: - ip-ip-address.us-west-2.compute.internal:8080 metrics_path: '/metrics' relabel_configs: - source_labels: [__address__] target_label: instance replacement: 'ec2-metrics-instance' - target_label: service replacement: 'ec2-metrics' - target_label: environment replacement: 'dev' metric_relabel_configs: - source_labels: [__name__] regex: '.*' action: keep - job_name: ec2-node-exporter static_configs: - targets: - ip-ip-address.us-west-2.compute.internal:9100

Paso 2: Configurar el extractor

Cree un recopilador administrado conectado a una VPC que extraiga sus instancias y que envíe las métricas a su conjunto de datos de CloudWatch. Proporcione las subredes y un grupo de seguridad que permitan al recopilador acceder a los puertos del exportador:

Puede utilizar GetDefaultScraperConfiguration para recuperar la configuración de un extractor de uso general o proporcionar la suya propia.

AWS API

Utilice la operación de la API CreateScraper para crear un extractor con un destino de CloudWatch. Sustituya la información de subred, grupo de seguridad y conjunto de datos por sus propios valores.

POST /scrapers HTTP/1.1 { "alias": "ec2-payment-service-scraper", "source": { "vpcConfiguration": { "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"], "securityGroupIds": ["sg-security-group-id"] } }, "destination": { "cloudWatchConfiguration": { "datasetArn": "arn:aws:cloudwatch:us-west-2:123456789012:dataset/default" } }, "scrapeConfiguration": { "configurationBlob": "base64-encoded-blob" } }
AWS CLI

Utilice el comando create-scraper para crear un extractor con un destino de CloudWatch. Sustituya la información de subred, grupo de seguridad y conjunto de datos por sus propios valores.

aws amp create-scraper \ --alias "ec2-payment-service-scraper" \ --source '{ "vpcConfiguration": { "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"], "securityGroupIds": ["sg-security-group-id"] } }' \ --scrape-configuration configurationBlob=$(cat ec2-scraper.yml | base64 -w 0) \ --destination '{ "cloudWatchConfiguration": { "datasetArn": "arn:aws:cloudwatch:us-west-2:123456789012:dataset/default" } }'

Al crear un recopilador administrado, Amazon Managed Service para Prometheus crea automáticamente un rol vinculado a un servicio que otorga al recopilador permiso para acceder a los recursos de su VPC y escribir en su conjunto de datos de CloudWatch.

Validación de la recopilación de métricas

En cuestión de minutos, las métricas comienzan a enviarse a su conjunto de datos de CloudWatch. Para confirmar que las métricas llegan, ejecute una consulta ad hoc en CloudWatch mediante Query Studio. Por ejemplo, la siguiente consulta devuelve las métricas del trabajo ec2-metrics:

{job="ec2-metrics"}

Creación de un panel personalizado

Una vez que el recopilador comience a enviar sus métricas de Amazon EC2 a CloudWatch, podrá crear un panel de CloudWatch personalizado para visualizarlas. Con los paneles personalizados, puede combinar las métricas de sus exportadores de Prometheus en widgets, agregar consultas basadas en PromQL y organizar los widgets para adaptarlos a sus necesidades de supervisión. Para obtener más información, consulte Uso de paneles de CloudWatch.

Costos

Cobramos por hora por los recopiladores de Prometheus y se aplican los precios de ingesta de métricas de OpenTelemetry de CloudWatch. Para obtener más información sobre los precios de CloudWatch, consulte Precios de Amazon CloudWatch.