View a markdown version of this page

Integración de Amazon MSK - Amazon CloudWatch

Integración de Amazon MSK

Con un recopilador de Prometheus administrado por Amazon CloudWatch, puede detectar y recopilar automáticamente métricas Prometheus de sus clústeres de Amazon MSK. Cuando habilita la supervisión abierta en su clúster de Amazon MSK, las métricas de Prometheus se exponen a través de Java Management Extensions (JMX) Exporter and Node Exporter. El recopilador administrado se conecta a su VPC y extrae estas métricas de todos los agentes mediante la detección de servicios basada en DNS y las envía directamente a CloudWatch. Con esta integración, puede supervisar las métricas por host, las métricas por JVM y las métricas de los agentes de Kafka en CloudWatch sin necesidad de implementar ningún agente.

nota

Cuando un recopilador de Prometheus administrado por Amazon CloudWatch envía sus métricas de Amazon MSK a CloudWatch, enriquece automáticamente cada métrica con atributos que identifican su origen. Cada métrica incluye el alcance de la instrumentación del recopilador, los atributos en la nube que registran la cuenta y región de AWS y una unidad que el recopilador deduce del nombre de la métrica. Puede filtrar y agrupar estos atributos cuando consulte sus métricas con PromQL.

Requisitos previos

En este procedimiento se presupone que está familiarizado con los conceptos de administración de clústeres de Amazon MSK y redes de Amazon VPC.

  • Clúster de Amazon MSK en modo aprovisionado, con agentes estándar o express. Los recopiladores administrados no son compatibles con Amazon MSK sin servidor.

  • La supervisión abierta habilitada en el clúster. Para obtener más información, consulte Supervisión abierta con Prometheus en la Guía para desarrolladores de Amazon MSK.

  • Al menos dos subredes en diferentes zonas de disponibilidad.

  • Grupo de seguridad que permita al recopilador acceder a los puertos del agente 11001 y 11002.

Paso 1: Habilitar la supervisión abierta

Habilite la supervisión abierta en su clúster de Amazon MSK para exponer las métricas de Prometheus. Para obtener instrucciones sobre cómo habilitar la supervisión abierta, consulte Supervisión abierta con Prometheus en la Guía para desarrolladores de Amazon MSK.

aws kafka update-monitoring \ --cluster-arn "arn:aws:kafka:us-west-2:123456789012:cluster/my-cluster/abc123-def456" \ --current-version "K1A2B3C4D5" \ --open-monitoring '{ "Prometheus": { "JmxExporter": {"EnabledInBroker": true}, "NodeExporter": {"EnabledInBroker": true} } }'
nota

El parámetro --open-monitoring por sí solo expone los puntos de conexión de Prometheus en los puertos 11001 y 11002. Los niveles de supervisión mejorada, como PER_TOPIC_PER_PARTITION, son independientes de la supervisión abierta y pueden suponer cargos adicionales, así que defínalos solo si necesita ese nivel de métricas de Amazon MSK.

Paso 2: Obtener el nombre de DNS de su clúster

Amazon MSK proporciona un nombre de DNS por clúster que se resuelve en todas las IP de los agentes. Su uso para la detección de servicios hace que su supervisión sea resistente a las sustituciones de agentes y al escalado de clústeres.

Obtenga el nombre de DNS de su clúster (elimine el prefijo específico del agente, como b-1. o b-2.):

aws kafka get-bootstrap-brokers --cluster-arn "arn:aws:kafka:us-west-2:123456789012:cluster/my-cluster/abc123-def456"

Por ejemplo, si el agente de arranque devuelve b-1.my-cluster.abc123.c4.kafka.us-west-2.amazonaws.com, utilice my-cluster.abc123.c4.kafka.us-west-2.amazonaws.com como nombre de DNS del clúster.

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

A continuación, se muestra un ejemplo de configuración de extracción para Amazon MSK. Haga referencia a esta configuración al crear el extractor en el siguiente paso. Para obtener más información acerca de las opciones de configuración de , consulte Configuración del raspador.

global: scrape_interval: 60s external_labels: cluster_name: my-msk-cluster scrape_configs: - job_name: 'msk-jmx' dns_sd_configs: - names: - my-cluster.abc123.c4.kafka.us-west-2.amazonaws.com type: A port: 11001 relabel_configs: - source_labels: [__meta_dns_name] target_label: broker_dns - source_labels: [__address__] target_label: instance - target_label: compute_platform replacement: 'msk' - job_name: 'msk-node' dns_sd_configs: - names: - my-cluster.abc123.c4.kafka.us-west-2.amazonaws.com type: A port: 11002 relabel_configs: - source_labels: [__meta_dns_name] target_label: broker_dns - source_labels: [__address__] target_label: instance - target_label: compute_platform replacement: 'msk'

Paso 4: creación del analizador

Cree el extractor con un destino de CloudWatch utilizando la configuración de extracción de sus agentes de Amazon MSK del paso anterior.

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": "msk-metrics-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 "msk-metrics-scraper" \ --source '{ "vpcConfiguration": { "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"], "securityGroupIds": ["sg-security-group-id"] } }' \ --scrape-configuration configurationBlob=$(cat msk-config.yaml | base64 -w 0) \ --destination '{ "cloudWatchConfiguration": { "datasetArn": "arn:aws:cloudwatch:us-west-2:123456789012:dataset/default" } }'

Métricas disponibles

  • JMX Exporter (puerto 11001): información interna de los agentes de Kafka, que incluye métricas de temas, métricas de particiones, tasas de solicitudes, desfase del consumidor y particiones infrarreplicadas.

  • Node Exporter (puerto 11002): métricas por host que incluyen CPU, memoria, E/S de disco y rendimiento de la red.

Para ver una lista completa de las métricas disponibles, consulte Métricas de MSK recopiladas por recopiladores administrados en la Guía del usuario de Amazon Managed Service para Prometheus.

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

Para confirmar que el recopilador envíe las métricas de JMX y Node Exporter, ejecute las siguientes consultas en CloudWatch con Query Studio. Si cada consulta devuelve puntos de datos, el recopilador está extrayendo correctamente el exportador correspondiente.

La siguiente consulta devuelve una métrica de Kafka por agente de JMX Exporter (puerto 11001). Indica el promedio de la tasa de actividad de los temas de los agentes, como los mensajes y los bytes que circulan a través de ellos. Los puntos de datos confirman que el recopilador está extrayendo las métricas de los agentes de Kafka.

kafka_server_BrokerTopicMetrics_MeanRate

La siguiente consulta devuelve el uso de la CPU por host desde Node Exporter (puerto 11002). Resta a 100 el promedio de la tasa de CPU inactiva durante un periodo de cinco minutos para obtener el porcentaje de CPU que utilizan los agentes. Los puntos de datos confirman que el recopilador está extrayendo las métricas por host.

100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

Visualización del panel automático

Cuando el recopilador comienza a enviar las métricas de Amazon MSK a CloudWatch, la consola de CloudWatch proporciona un panel automático denominado MSK OTel. Para abrirlo, consulte MSK OTel o inicie sesión en la Consola de administración de AWS, abra la consola de CloudWatch, elija Paneles en el panel de navegación, elija Paneles automáticos y, a continuación, elija MSK OTel. Puede empezar a supervisar sus clústeres sin necesidad de crear ningún widget o panel usted mismo.

Si el panel automático satisface sus necesidades, puede usarlo tal cual. Para crear una experiencia de supervisión personalizada, puede agregar cualquiera de sus widgets a un panel personalizado. Para obtener más información sobre los paneles personalizados, consulte Uso de paneles de CloudWatch.

Observabilidad entre cuentas

Para la supervisión de Amazon MSK entre cuentas, recomendamos utilizar la centralización de métricas de Amazon CloudWatch. Para obtener más información, consulte Centralización de métricas de CloudWatch.

Para obtener información sobre configuraciones alternativas de extractores entre cuentas que utilizan el encadenamiento de roles, consulte Integración entre cuentas de Amazon MSK en la Guía del usuario de Amazon Managed Service para Prometheus.

Limitaciones actuales

  • Los recopiladores administrados no son compatibles con los clústeres sin servidor de Amazon MSK.

  • Los recopiladores administrados no admiten el acceso público combinado con el modo de metadatos de KRaft.

  • Cada combinación de clúster de Amazon MSK y conjunto de datos de CloudWatch requiere un recopilador.