Todos os produtos
Search
Central de documentação

Managed Service for Prometheus:Implante e configure um agente JMX do Kafka

Última atualização: Sep 09, 2026

Este tópico descreve como implantar e configurar um agente JMX do Kafka.

Limitações

O agente JMX do Kafka integra-se apenas a uma instância do Prometheus para ACK ou a uma instância do Prometheus para ECS.

Etapa 1: Implantar o agente JMX do Kafka

  1. Baixe o pacote do agente JMX do Kafka em cada pod ou instância ECS onde o Kafka esteja implantado.

  2. Nos parâmetros de inicialização da Java Virtual Machine (JVM) do Kafka Producer, Broker e Consumer, adicione o seguinte argumento: -javaagent:/<path_to_agent>/kafka-jmx_prometheus_javaagent-1.18.1.jar=<jmx_listening_port>.

    • <path_to_agent>: substitua este espaço reservado pelo diretório onde você salvou o agente.

    • <jmx_listening_port>: substitua este espaço reservado pela porta de escuta JMX real.

    Após reiniciar o Kafka, execute o comando ps -ef|grep javaagent para verificar se o agente JMX foi carregado. Se os parâmetros do processo incluírem -javaagent:/kafka-jmx_prometheus_javaagent-1_18_1.jar=5556, a implantação do agente ocorreu com sucesso.

    
    #ps -ef|grep javaagent
    admin    30038  30036 63 10:44 ?    00:00:14 /opt/taobao/java/bin/java -javaagent:/kafka-jmx_prometheus_javaagent-1.18.1.jar=5556 -Xmx4g -Xms4g -Xmn2g -Xss1024k -server -XX:+UseG1GC -XX:G1HeapRegionSize=16m -XX:MaxGCPauseMillis=20 ...
    
  3. Reinicie o Kafka Producer, Broker e Consumer.

  4. Para confirmar que o agente JMX do Kafka está em execução, execute o comando curl localhost:<jmx_listening_port>/metrics em cada pod ou instância ECS. O retorno de dados de métricas indica que o agente está funcionando corretamente.

    <jmx_listening_port>: substitua este espaço reservado pela porta de escuta JMX real.

    
    [root@kaikaxxx ~]# curl localhost:5556/metrics
    # HELP jvm_memory_pool_allocated_bytes_total Total bytes allocated in a given JVM memory pool. Only updated after GC, not continuously.
    # TYPE jvm_memory_pool_allocated_bytes_total counter
    jvm_memory_pool_allocated_bytes_total{pool="G1 Old Gen",} 1.7518xxx
    jvm_memory_pool_allocated_bytes_total{pool="Code Cache",} 1.4520xxx
    jvm_memory_pool_allocated_bytes_total{pool="G1 Eden Space",} 1.4xxx
    jvm_memory_pool_allocated_bytes_total{pool="G1 Survivor Space",}
    jvm_memory_pool_allocated_bytes_total{pool="Compressed Class Space",} 5352720.0
    jvm_memory_pool_allocated_bytes_total{pool="Metaspace",} 4.xxx
    # HELP jvm_gc_collection_seconds Time spent in a given JVM garbage collector in seconds.
    # TYPE jvm_gc_collection_seconds summary
    jvm_gc_collection_seconds_count{gc="G1 Young Generation",} 21.0
    jvm_gc_collection_seconds_sum{gc="G1 Young Generation",} 0.346
    jvm_gc_collection_seconds_count{gc="G1 Old Generation",} 0.0
    jvm_gc_collection_seconds_sum{gc="G1 Old Generation",} 0.0
    # HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
    # TYPE process_cpu_seconds_total counter
    process_cpu_seconds_total 22.85
    # HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
    # TYPE process_start_time_seconds gauge
    process_start_time_seconds 1.6654xxx
    # HELP process_open_fds Number of open file descriptors.
    # TYPE process_open_fds gauge
    process_open_fds 204.0
    # HELP process_max_fds Maximum number of open file descriptors.
    # TYPE process_max_fds gauge
    process_max_fds 65535.0
    # HELP process_virtual_memory_bytes Virtual memory size in bytes.
    # TYPE process_virtual_memory_bytes gauge
    process_virtual_memory_bytes 4.428xxx
    # HELP process_resident_memory_bytes Resident memory size in bytes.
    # TYPE process_resident_memory_bytes gauge
    process_resident_memory_bytes 9.36xxx
    # HELP jmx_config_reload_failure_total Number of times configuration have failed to be reloaded.
    # TYPE jmx_config_reload_failure_total counter
    jmx_config_reload_failure_total 0.0
    # HELP jmx_exporter_build_info A metric with a constant '1' value labeled with the version of the JMX exporter.
    # TYPE jmx_exporter_build_info gauge
    jmx_exporter_build_info{version="0.17.1-SNAPSHOT",name="jmx_prometheus_javaagent",} 1.0
    # HELP jvm_memory_objects_pending_finalization The number of objects waiting in the finalizer queue.
    # TYPE jvm_memory_objects_pending_finalization gauge
    jvm_memory_objects_pending_finalization 0.0
    # HELP jvm_memory_bytes_used Used bytes of a given JVM memory area.
    # TYPE jvm_memory_bytes_used gauge
    jvm_memory_bytes_used{area="heap",} 4.0462xxx
    jvm_memory_bytes_used{area="nonheap",} 6.57xxx
    # HELP jvm_memory_bytes_committed Committed (bytes) of a given JVM memory area.
    # TYPE jvm_memory_bytes_committed gauge
    jvm_memory_bytes_committed{area="heap",} 1.07374xxx
    jvm_memory_bytes_committed{area="nonheap",} 7.0xxx
    # HELP jvm_memory_bytes_max Max (bytes) of a given JVM memory area.
    # TYPE jvm_memory_bytes_max gauge
    jvm_memory_bytes_max{area="heap",} 1.0737xxx
    jvm_memory_bytes_max{area="nonheap",} -1.0
    # HELP jvm_memory_bytes_init Initial bytes of a given JVM memory area.
    # TYPE jvm_memory_bytes_init gauge
    jvm_memory_bytes_init{area="heap",} 1.0737xxx
    jvm_memory_bytes_init{area="nonheap",} 255xxx
    # HELP jvm_memory_pool_bytes_used Used bytes of a given JVM memory pool.
    # TYPE jvm_memory_pool_bytes_used gauge
                  

(Opcional) Etapa 2: Configurar a porta do contêiner

Se você utilizar uma instância do Prometheus para ACK, configure também a porta do contêiner para permitir que o Managed Service for Prometheus colete dados do agente JMX do Kafka. Caso utilize uma instância do Prometheus para ECS, ignore esta etapa.

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em Workloads > Deployments.

  3. Na coluna Actions da carga de trabalho desejada, clique em Edit. Na página Edit, configure a porta definindo Name, Container Port e Protocol e clique em Update.

Etapa 3: Configurar rótulos de pod ou tags de ECS

O Managed Service for Prometheus usa descoberta de service para identificar alvos de coleta com base em rótulos de pod ou tags de instância ECS. Adicione um rótulo ou tag para permitir que o Managed Service for Prometheus descubra os alvos. Ignore esta etapa se seus services já tiverem rótulos ou tags adequados.

Configurar rótulos para instância do Prometheus para ACK

Nos pods do Kafka Producer, Broker e Consumer, adicione um rótulo no formato <custom_label_key>:<custom_label_value>, por exemplo, arms-kafka-exporter:my-kafka1.

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do cluster. No painel de navegação à esquerda, clique em Workloads > Pods.

  3. Na página Container Group, clique em Edit na coluna Actions do pod desejado, adicione o rótulo e clique em Update.

    
    apiVersion: v1
    kind: Pod
    metadata:
      annotations:
        k8s.aliyun.com/pod-ips: 10.119.xxx.xxx
      creationTimestamp: '2025-01-10T05:58:06Z'
      generateName: nginx-xxx-deployment-basic-8f9xxx t-
      labels:
        app: nginx
        pod-template-hash: 8f95d5bd4
      managedFields:
      - apiVersion: v1
        fieldsType: FieldsV1
        fieldsV1:
          'f:metadata':
    

Configurar tags para instância do Prometheus para ECS

Nas instâncias ECS que executam o Kafka Producer, Broker e Consumer, adicione uma tag no formato <custom_tag_key>:<custom_tag_value>, por exemplo, arms-kafka-exporter:my-kafka1. Para obter instruções sobre como criar tags para uma instância ECS, consulte Tags.

Próximas etapas

Após configurar o agente JMX do Kafka, conclua a configuração de integração e visualize os dados de monitoramento no console do Managed Service for Prometheus. Para mais informações, consulte How to Use Prometheus to Monitor Kafka.