Configuración de recopiladores de Prometheus administrados para Amazon MSK - Amazon Managed Service para Prometheus

Configuración de recopiladores de Prometheus administrados para Amazon MSK

Para utilizar un recopilador de Amazon Managed Service para Prometheus, cree un scraper que detecte y extraiga las métricas del clúster de Amazon Managed Streaming para Apache Kafka. También puede crear un scraper que se integre con Amazon Elastic Kubernetes Service. Para obtener más información, consulte Integración de Amazon EKS.

Crear un raspador

Un recopilador de Amazon Managed Service para Prometheus consta de un scraper que detecta y recopila métricas de un clúster de Amazon MSK. Amazon Managed Service para Prometheus gestiona el raspador por usted y le brinda la escalabilidad, la seguridad y la fiabilidad que necesita, sin tener que gestionar usted mismo ninguna instancia, agente o raspador.

Puede crear un scraper mediante la API o la AWS CLI de AWS, como se describe en los procedimientos siguientes.

Existen algunos requisitos previos para crear su propio raspador:

  • Debe haber creado un clúster de Amazon MSK.

  • Configure el grupo de seguridad de su clúster de Amazon MSK para permitir el tráfico entrante en los puertos 11001 (JMX Exporter) y 11002 (Node Exporter) de su Amazon VPC, ya que el scraper requiere acceso a estos registros de DNS para recopilar las métricas de Prometheus.

  • La Amazon VPC en la que reside el clúster de Amazon MSK debe tener el DNS habilitado.

nota

El clúster se asociará al analizador por el nombre de recurso de Amazon (ARN). Si elimina un clúster y, a continuación, crea uno nuevo con el mismo nombre, el ARN se reutilizará para el nuevo clúster. Por este motivo, el analizador intentará recopilar métricas para el nuevo clúster. Elimine los analizadores aparte de la eliminación del clúster.

To create a scraper using the AWS API

Utilice la operación de la API CreateScraper para crear un raspador con la API AWS. El siguiente ejemplo crea un scraper en la región Este de EE. UU. (Norte de Virginia). Sustituya el contenido del ejemplo por la información de su clúster de Amazon MSK y proporcione la configuración del scraper.

nota

Configure el grupo de seguridad y las subredes para que coincidan con el clúster de destino. Incluya al menos dos subredes en dos zonas de disponibilidad.

POST /scrapers HTTP/1.1 Content-Length: 415 Authorization: AUTHPARAMS X-Amz-Date: 20201201T193725Z User-Agent: aws-cli/1.18.147 Python/2.7.18 Linux/5.4.58-37.125.amzn2int.x86_64 botocore/1.18.6 { "alias": "myScraper", "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:us-east-1:123456789012:workspace/ws-workspace-id" } }, "source": { "vpcConfiguration": { "securityGroupIds": ["sg-security-group-id"], "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"] } }, "scrapeConfiguration": { "configurationBlob": base64-encoded-blob } }

En el ejemplo, el parámetro scrapeConfiguration requiere un archivo YAML de configuración de Prometheus codificado en base64 que especifique los registros DNS del clúster de MSK.

Cada registro de DNS representa un punto de conexión de intermediario en una zona de disponibilidad específica, lo que permite a los clientes conectarse con agentes distribuidos en las zonas de disponibilidad que elijan para obtener una alta disponibilidad.

El número de registros DNS en las propiedades del clúster de MSK corresponde al número de nodos de agentes y zonas de disponibilidad en la configuración del clúster:

  • Configuración predeterminada: 3 nodos de agentes en 3 zonas de disponibilidad = 3 registros de DNS

  • Configuración personalizada: 2 nodos de agentes en 2 zonas de disponibilidad = 2 registros de DNS

Para obtener los registros DNS para su clúster de MSK, abra la consola de MSK en https://console.aws.amazon.com/msk/home?region=us-east-1#/home/. Diríjase a su clúster de MSK. Elija Propiedades, Agentes y Puntos de conexión.

Tiene dos opciones para configurar Prometheus para analizar las métricas de su clúster de MSK:

  1. Resolución de DNS en el nivel de clúster (recomendada): utilice el nombre de DNS base del clúster para detectar automáticamente todos los agentes. Si el punto de conexión de su agente es b-1.clusterName.xxx.xxx.xxx, utilice clusterName.xxx.xxx.xxx como registro de DNS. Esto permite a Prometheus analizar de forma automática todos los agentes del clúster.

    Puntos de conexión individuales de cada agente: especifique el punto de conexión de cada agente de forma individual para un control detallado. Utilice los identificadores completos del agente (b-1, b-2) en su configuración. Por ejemplo:

    dns_sd_configs: - names: - b-1.clusterName.xxx.xxx.xxx - b-2.clusterName.xxx.xxx.xxx - b-3.clusterName.xxx.xxx.xxx
nota

Sustituya clusterName.xxx.xxx.xxx por el punto de conexión del clúster de MSK real desde la consola de AWS.

Para obtener más información, consulte <dns_sd_config> en la documentación de Prometheus.

A continuación, se muestra un ejemplo del archivo de configuración de un scraper:

global: scrape_interval: 30s external_labels: clusterArn: msk-test-1 scrape_configs: - job_name: msk-jmx scheme: http metrics_path: /metrics scrape_timeout: 10s dns_sd_configs: - names: - dns-record-1 - dns-record-2 - dns-record-3 type: A port: 11001 relabel_configs: - source_labels: [__meta_dns_name] target_label: broker_dns - source_labels: [__address__] target_label: instance regex: '(.*)' replacement: '${1}' - job_name: msk-node scheme: http metrics_path: /metrics scrape_timeout: 10s dns_sd_configs: - names: - dns-record-1 - dns-record-2 - dns-record-3 type: A port: 11002 relabel_configs: - source_labels: [__meta_dns_name] target_label: broker_dns - source_labels: [__address__] target_label: instance regex: '(.*)' replacement: '${1}'

Ejecute uno de los siguientes comandos para convertir el archivo YAML a base64. También puede usar cualquier conversor de base64 en línea para convertir el archivo.

ejemplo Linux/macOS
echo -n scraper config updated with dns records | base64
ejemplo Windows PowerShell
[Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes(scraper config updated with dns records))
To create a scraper using the AWS CLI

Utilice el comando create-scraper para crear un scraper con la AWS Command Line Interface. El siguiente ejemplo crea un scraper en la región Este de EE. UU. (Norte de Virginia). Sustituya el contenido del ejemplo por la información de su clúster de Amazon MSK y proporcione la configuración del scraper.

nota

Configure el grupo de seguridad y las subredes para que coincidan con el clúster de destino. Incluya al menos dos subredes en dos zonas de disponibilidad.

aws amp create-scraper \ --source vpcConfiguration="{securityGroupIds=['sg-security-group-id'],subnetIds=['subnet-subnet-id-1', 'subnet-subnet-id-2']}" \ --scrape-configuration configurationBlob=base64-encoded-blob \ --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:123456789012:workspace/ws-workspace-id'}"
  • A continuación se muestra una lista completa de las operaciones del raspador que puede usar con la API de AWS:

    Crear un analizador con la operación de la API CreateScraper.

  • Enumerar los analizadores existentes con la operación de la API ListScrapers.

  • Actualice el alias, la configuración o el destino de un scraper con la operación de la API UpdateScraper.

  • Eliminar un analizador con la operación de la API DeleteScraper.

  • Obtener más detalles sobre un analizador con la operación de la API DescribeScraper.

Configuración entre cuentas

Para crear un scraper en una configuración entre cuentas cuando el clúster de Amazon MSK del que quiere recopilar las métricas se encuentra en una cuenta diferente a la del recopilador de Amazon Managed Service para Prometheus, siga el procedimiento que se indica a continuación.

Por ejemplo, cuando tiene dos cuentas: una primera cuenta de origen account_id_source donde se encuentra Amazon MSK, y una segunda cuenta de destino account_id_target donde se encuentra el espacio de trabajo de Amazon Managed Service para Prometheus.

Para crear un scraper en una configuración entre cuentas
  1. En la cuenta de origen, cree un rol arn:aws:iam::111122223333:role/Source y agregue la siguiente política de confianza.

    { "Effect": "Allow", "Principal": { "Service": [ "scraper.aps.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "ArnEquals": { "aws:SourceArn": "arn:aws:aps:aws-region:111122223333:scraper/scraper-id" }, "StringEquals": { "AWS:SourceAccount": "111122223333" } } }
  2. En cada combinación de origen (clúster de Amazon MSK) y de destino (Amazon Managed Service para Prometheus Workspace), debe crear un rol arn:aws:iam::444455556666:role/Target y agregar la siguiente política de confianza con permisos para AmazonPrometheusRemoteWriteAccess.

    { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/Source" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "arn:aws:aps:aws-region:111122223333:scraper/scraper-id" } } }
  3. Cree un scraper con la opción --role-configuration.

    aws amp create-scraper \ --source vpcConfiguration="{subnetIds=[subnet-subnet-id], "securityGroupIds": ["sg-security-group-id"]}" \ --scrape-configuration configurationBlob=<base64-encoded-blob> \ --destination ampConfiguration="{workspaceArn='arn:aws:aps:aws-region:444455556666:workspace/ws-workspace-id'}"\ --role-configuration '{"sourceRoleArn":"arn:aws:iam::111122223333:role/Source", "targetRoleArn":"arn:aws:iam::444455556666:role/Target"}'
  4. Valide la creación del scraper.

    aws amp list-scrapers { "scrapers": [ { "scraperId": "s-example123456789abcdef0", "arn": "arn:aws:aps:aws-region:111122223333:scraper/s-example123456789abcdef0": "arn:aws:iam::111122223333:role/Source", "status": "ACTIVE", "creationTime": "2025-10-27T18:45:00.000Z", "lastModificationTime": "2025-10-27T18:50:00.000Z", "tags": {}, "statusReason": "Scraper is running successfully", "source": { "vpcConfiguration": { "subnetIds": ["subnet-subnet-id"], "securityGroupIds": ["sg-security-group-id"] } }, "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:aws-region:444455556666:workspace/ws-workspace-id'" } }, "scrapeConfiguration": { "configurationBlob": "<base64-encoded-blob>" } } ] }

Cambio entre un rol RoleConfiguration y un rol vinculado al servicio

Si quiere volver a un rol vinculado al servicio en lugar del rol RoleConfiguration para escribir en un espacio de trabajo de Amazon Managed Service para Prometheus, debe actualizar UpdateScraper y proporcionar un espacio de trabajo en la misma cuenta que el scraper sin el rol RoleConfiguration. El rol RoleConfiguration se eliminará del scraper y se utilizará el rol vinculado al servicio.

Si cambia de espacio de trabajo en la misma cuenta que el scraper y quiere seguir utilizando el rol RoleConfiguration, debe volver a proporcionar el RoleConfiguration en UpdateScraper.

Buscar y eliminar raspadores

Puede usar la API de AWS o la AWS CLI para enumerar los raspadores de su cuenta o eliminarlos.

nota

Asegúrese de que utiliza la versión más reciente de la AWS CLI o del SDK. La última versión le proporciona las características y funcionalidades más recientes, así como actualizaciones de seguridad. Como alternativa, puede utilizar AWS CloudShell, que proporciona una experiencia de línea de comandos siempre actualizada de forma automática.

Para enumerar todos los analizadores de la cuenta, utilice la operación de la API ListScrapers.

Como alternativa, con la AWS CLI, llame a:

aws amp list-scrapers

ListScrapers devuelve todos los raspadores de su cuenta, por ejemplo:

{ "scrapers": [ { "scraperId": "s-1234abcd-56ef-7890-abcd-1234ef567890", "arn": "arn:aws:aps:aws-region:123456789012:scraper/s-1234abcd-56ef-7890-abcd-1234ef567890", "roleArn": "arn:aws:iam::123456789012:role/aws-service-role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-2931", "status": { "statusCode": "DELETING" }, "createdAt": "2023-10-12T15:22:19.014000-07:00", "lastModifiedAt": "2023-10-12T15:55:43.487000-07:00", "tags": {}, "source": { "vpcConfiguration": { "securityGroupIds": [ "sg-1234abcd5678ef90" ], "subnetIds": [ "subnet-abcd1234ef567890", "subnet-1234abcd5678ab90" ] } }, "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:aws-region:123456789012:workspace/ws-1234abcd-5678-ef90-ab12-cdef3456a78" } } } ] }

Para eliminar un analizador, busque scraperId correspondiente al analizador que desea eliminar mediante la operación ListScrapers y, a continuación, utilice la operación DeleteScraper para eliminarlo.

Como alternativa, con la AWS CLI, llame a:

aws amp delete-scraper --scraper-id scraperId

Métricas recopiladas desde Amazon MSK

Al realizar la integración con Amazon MSK, el recopilador de Amazon Managed Service para Prometheus recopila automáticamente las siguientes métricas:

Métrica Descripción o finalidad

jmx_config_reload_failure_total

Número total de veces que el exportador JMX no pudo volver a cargar su archivo de configuración.

jmx_scrape_duration_seconds

Tiempo necesario para analizar las métricas de JMX en segundos para el ciclo de recopilación actual.

jmx_scrape_error

Indica si se ha producido un error durante la extracción de métricas de JMX (1 = error, 0 = éxito).

java_lang_Memory_HeapMemoryUsage_used

Cantidad de memoria heap (en bytes) que utiliza actualmente JVM.

java_lang_Memory_HeapMemoryUsage_max

Cantidad máxima de memoria heap (en bytes) que se puede usar para la administración de la memoria.

java_lang_Memory_NonHeapMemoryUsage_used

Cantidad de memoria no heap (en bytes) que utiliza actualmente JVM.

kafka_cluster_Partition_Value

Estado o valor actual relacionado con las particiones del clúster de Kafka, desglosado por ID de partición y tema.

kafka_consumer_consumer_coordinator_metrics_assigned_partitions

Número de particiones actualmente asignadas a este consumidor.

kafka_consumer_consumer_coordinator_metrics_commit_latency_avg

Tiempo promedio que se tarda en efectuar las compensaciones en milisegundos.

kafka_consumer_consumer_coordinator_metrics_commit_rate

Número de confirmaciones de compensación por segundo.

kafka_consumer_consumer_coordinator_metrics_failed_rebalance_total

Número total de reequilibrios de grupos de consumidores con error.

kafka_consumer_consumer_coordinator_metrics_last_heartbeat_seconds_ago

Número de segundos transcurridos desde que se envió el último latido al coordinador.

kafka_consumer_consumer_coordinator_metrics_rebalance_latency_avg

Tiempo medio que tarda un grupo de consumidores en reequilibrarse en milisegundos.

kafka_consumer_consumer_coordinator_metrics_rebalance_total

Número total de reequilibrios de grupos de consumidores.

kafka_consumer_consumer_fetch_manager_metrics_bytes_consumed_rate

Número promedio de bytes consumidos por segundo.

kafka_consumer_consumer_fetch_manager_metrics_fetch_latency_avg

Tiempo medio que tarda una solicitud de recuperación en milisegundos.

kafka_consumer_consumer_fetch_manager_metrics_fetch_rate

Número de solicitudes del programa de recuperación por segundo.

kafka_consumer_consumer_fetch_manager_metrics_records_consumed_rate

Número promedio de registros consumidos por segundo.

kafka_consumer_consumer_fetch_manager_metrics_records_lag_max

Retraso máximo en términos de la cantidad de registros para cualquier partición de este consumidor.

kafka_consumer_consumer_metrics_connection_count

Cantidad actual de conexiones activas.

kafka_consumer_consumer_metrics_incoming_byte_rate

Cantidad promedio de bytes recibidos por segundo de todos los servidores.

kafka_consumer_consumer_metrics_last_poll_seconds_ago

Número de segundos transcurridos desde la última llamada a la encuesta de consumidores().

kafka_consumer_consumer_metrics_request_rate

Número de solicitudes enviadas por segundo.

kafka_consumer_consumer_metrics_response_rate

Número de respuestas recibidas por segundo.

kafka_consumer_group_ConsumerLagMetrics_Value

Valor actual de rezago con respecto al consumidor para un grupo de consumidores, que indica en qué medida está rezagado el consumidor.

kafka_controller_KafkaController_Value

Estado o valor actual del controlador Kafka (1 = controlador activo, 0 = inactivo).

kafka_controller_ControllerEventManager_Count

Cantidad total de eventos de controlador procesados.

kafka_controller_ControllerEventManager_Mean

Tiempo medio (promedio) que se tarda en procesar los eventos del controlador.

kafka_controller_ControllerStats_MeanRate

Tasa media de operaciones de estadísticas del controlador por segundo.

kafka_coordinator_group_GroupMetadataManager_Value

Estado o valor actual del administrador de metadatos de grupo para grupos de consumidores.

kafka_log_LogFlushStats_Count

Cantidad total de operaciones de vaciado del registro.

kafka_log_LogFlushStats_Mean

Tiempo medio (promedio) empleado en las operaciones de vaciado de registros.

kafka_log_LogFlushStats_MeanRate

Tasa media de operaciones de vaciado de registros por segundo.

kafka_network_RequestMetrics_Count

Recuento total de solicitudes de red procesadas.

kafka_network_RequestMetrics_Mean

Tiempo medio (promedio) necesario para procesar las solicitudes de red.

kafka_network_RequestMetrics_MeanRate

Velocidad media de solicitudes de red por segundo.

kafka_network_Acceptor_MeanRate

Velocidad media de conexiones aceptadas por segundo.

kafka_server_Fetch_queue_size

Tamaño actual de la cola de solicitudes de recuperación.

kafka_server_Produce_queue_size

Tamaño actual de la cola de solicitudes de producción.

kafka_server_Request_queue_size

Tamaño actual de la cola de solicitudes generales.

kafka_server_BrokerTopicMetrics_Count

Recuento total de operaciones relacionadas con el tema del agente (entrada/salida de mensajes, entrada/salida de bytes).

kafka_server_BrokerTopicMetrics_MeanRate

Tasa media de operaciones relacionadas con el agente por segundo.

kafka_server_BrokerTopicMetrics_OneMinuteRate

Tasa media móvil de un minuto de las operaciones relacionadas con un agente.

kafka_server_DelayedOperationPurgatory_Value

Número actual de operaciones retrasadas en el purgatorio (pendientes de finalización).

kafka_server_DelayedFetchMetrics_MeanRate

Tasa media de operaciones de recuperación retrasadas por segundo.

kafka_server_FetcherLagMetrics_Value

Valor de retraso actual para los subprocesos del recuperador de réplicas (en qué medida están lejos están del líder).

kafka_server_FetcherStats_MeanRate

Tasa media de operaciones del recuperador por segundo.

kafka_server_ReplicaManager_Value

Estado o valor actual del administrador de réplicas.

kafka_server_ReplicaManager_MeanRate

Tasa media de operaciones del administrador de réplicas por segundo.

kafka_server_LeaderReplication_byte_rate

Tasa de bytes replicados por segundo para las particiones en las que este agente sea el líder.

kafka_server_group_coordinator_metrics_group_completed_rebalance_count

Número total de reequilibrios de grupos de consumidores completados.

kafka_server_group_coordinator_metrics_offset_commit_count

Número total de operaciones de confirmación de compensación.

kafka_server_group_coordinator_metrics_offset_commit_rate

Tasa de compensación de operaciones por segundo.

kafka_server_socket_server_metrics_connection_count

Cantidad actual de conexiones activas.

kafka_server_socket_server_metrics_connection_creation_rate

Velocidad de creación de nuevas conexiones por segundo.

kafka_server_socket_server_metrics_connection_close_rate

Tasa de cierres de conexiones por segundo.

kafka_server_socket_server_metrics_failed_authentication_total

Número total de intentos de autenticación fallidos.

kafka_server_socket_server_metrics_incoming_byte_rate

Velocidad de bytes entrantes por segundo.

kafka_server_socket_server_metrics_outgoing_byte_rate

Velocidad de bytes salientes por segundo.

kafka_server_socket_server_metrics_request_rate

Tasa de solicitudes por segundo.

kafka_server_socket_server_metrics_response_rate

Tasa de respuestas por segundo.

kafka_server_socket_server_metrics_network_io_rate

Tasa de operaciones de E/S de la red por segundo.

kafka_server_socket_server_metrics_io_ratio

Fracción de tiempo dedicada a operaciones de E/S.

kafka_server_controller_channel_metrics_connection_count

Cantidad actual de conexiones activas para los canales del controlador.

kafka_server_controller_channel_metrics_incoming_byte_rate

Velocidad de bytes entrantes por segundo para los canales del controlador.

kafka_server_controller_channel_metrics_outgoing_byte_rate

Velocidad de bytes salientes por segundo para los canales del controlador.

kafka_server_controller_channel_metrics_request_rate

Velocidad de solicitudes por segundo para los canales del controlador.

kafka_server_replica_fetcher_metrics_connection_count

Cantidad actual de conexiones activas por recuperador de réplicas.

kafka_server_replica_fetcher_metrics_incoming_byte_rate

Velocidad de bytes entrantes por segundo para el recuperador de réplicas.

kafka_server_replica_fetcher_metrics_request_rate

Tasa de solicitudes por segundo para el recuperador de réplicas.

kafka_server_replica_fetcher_metrics_failed_authentication_total

Número total de intentos de autenticación fallidos para el recuperador de réplicas.

kafka_server_ZooKeeperClientMetrics_Count

Recuento total de las operaciones del cliente ZooKeeper.

kafka_server_ZooKeeperClientMetrics_Mean

Latencia media de las operaciones del cliente ZooKeeper.

Kafka_Server_KafkaServer_Value

Estado o valor actual del servidor Kafka (normalmente indica que el servidor está en ejecución).

node_cpu_seconds_total

Número total de segundos que las CPU gastaron en cada modo (usuario, sistema, inactivo, etc.), desglosados por CPU y modo.

node_disk_read_bytes_total

Número total de bytes leídos correctamente de los discos, desglosados por dispositivo.

node_disk_reads_completed_total

Número total de lecturas completadas correctamente de los discos, desglosadas por dispositivo.

node_disk_writes_completed_total

Número total de escrituras completadas correctamente de los discos, desglosadas por dispositivo.

node_disk_written_bytes_total

Número total de bytes escritos correctamente en los discos, desglosados por dispositivo.

node_filesystem_avail_bytes

Espacio disponible en el sistema de archivos en bytes para usuarios no raíz, desglosado por dispositivo y punto de montaje.

node_filesystem_size_bytes

Tamaño total del sistema de archivos en bytes, desglosado por dispositivo y punto de montaje.

node_filesystem_free_bytes

Espacio libre en el sistema de archivos en bytes, desglosado por dispositivo y punto de montaje.

node_filesystem_files

Número total de nodos de archivos (inodos) del sistema de archivos, desglosados por dispositivo y punto de montaje.

node_filesystem_files_free

Número de nodos de archivos libres (inodos) en el sistema de archivos, desglosados por dispositivo y punto de montaje.

node_filesystem_readonly

Indica si el sistema de archivos está montado en modo de solo lectura (1 = solo lectura, 0 = lectura-escritura).

node_filesystem_device_error

Indica si se ha producido un error al obtener las estadísticas del sistema de archivos (1 = error, 0 = éxito).

Limitaciones

La integración actual de Amazon MSK con Amazon Managed Service para Prometheus tiene las siguientes limitaciones:

  • Solo se admite para los clústeres aprovisionados de Amazon MSK (no disponible para Amazon MSK sin servidor)

  • No es compatible con los clústeres de Amazon MSK con acceso público habilitado en combinación con el modo de metadatos de KRaft

  • No es compatible con los agentes de Amazon MSK Express

  • Actualmente admite una asignación 1:1 entre los clústeres de Amazon MSK y los recopiladores/espacios de trabajo de Amazon Managed Service para Prometheus