[JAVA] 使用jmxexporter采集kafka指标示例详解

1647 0
王子 2022-11-6 11:40:44 | 显示全部楼层 |阅读模式
目录

    预置条件
      使用JMX exporter暴露指标
    kafka集群启用监控采集producer/consumer的指标


预置条件

安装kafka、prometheus

使用JMX exporter暴露指标

下载jmx exporter以及配置文件。Jmx exporter中包含了kafka各个组件的指标,如server metrics、producer metrics、consumer metrics等,但这些指标并不是prometheus格式的,因此需要通过重命名方式转变为prometheus格式,重命名规则配置在kafka-2_0_0.yml中。
  1. wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.12.0/jmx_prometheus_javaagent-0.12.0.jar
  2. wget https://raw.githubusercontent.com/prometheus/jmx_exporter/master/example_configs/kafka-2_0_0.yml
复制代码
kafka集群启用监控

启用的方式比较简单,只需要在kafka-sever-start.sh中添加如下两行即可:
  1. ...
  2. #添加如下两行
  3. export JMX_PORT="7081"
  4. export KAFKA_OPTS="-javaagent:/Users/charlie.liu/kafka_2.13-3.2.3/monitor/jmx_prometheus_javaagent-0.12.0.jar=7072:/Users/charlie.liu/kafka_2.13-3.2.3/monitor/kafka-2_0_0.yml"
  5. COMMAND=$1
  6. case $COMMAND in
  7.   -daemon)
  8.     EXTRA_ARGS="-daemon "$EXTRA_ARGS
  9.     shift
  10.     ;;
  11.   *)
  12.     ;;
  13. esac
  14. exec $base_dir/kafka-run-class.sh $EXTRA_ARGS kafka.Kafka "$@"
复制代码
prometheus的配置文件如下,启动之后即可看到kafka的指标:
  1. global:
  2.   scrape_interval: 15s
  3. scrape_configs:
  4.   - job_name: "kafka-cluster"
  5.     static_configs:
  6.     - targets: ["localhost:7072"]
复制代码
采集producer/consumer的指标

kafka的producer metrics和consumer metrics的格式与kafka server metrics的格式不同,因此需要特定的重命名配置,可以将其追加到kafka-2_0_0.yml文件中:
  1. # MBean: kafka.producer:type=producer-metrics,client-id=([-.w]+)
  2. - pattern: kafka.(.*)<type=(.*)-metrics, client-id=(.*)><>(.+):\w*
  3.   name: kafka_$2-metrics
  4.   labels:
  5.     client_id: "$3"
  6.     attr_name: "$4"
  7.   help: "Kafka global client JMX metric $1 $2-metrics"
  8.   type: GAUGE
  9. # MBean: kafka.producer:type=producer-node-metrics,client-id=([-.w]+),node-id=([0-9]+)
  10. # MBean: kafka.consumer:type=consumer-node-metrics,client-id=([-.w]+),node-id=([0-9]+)
  11. - pattern: kafka.(.*)<type=(.*)-metrics, client-id=(.*), node-id=(.*)><>(.+):\w*
  12.   name: kafka_$2_$5-metrics
  13.   labels:
  14.     client_id: "$3"
  15.     node_id: "$4"
  16.     attr_name: "$5"
  17.   help: "Kafka client JMX metric $1 $2-metrics"
  18.   type: GAUGE
  19. - pattern: kafka.(.*)<type=(.*)-metrics, client-id=(.*), topic=(.*)><>(.+):\w*
  20.   name: kafka_$2_$5-metrics
  21.   labels:
  22.     client_id: "$3"
  23.     topic: "$4"
  24.     attr_name: "$5"
  25.   help: "Kafka client JMX metric $1 $2-metrics"
  26.   type: GAUGE
复制代码
使用如下方式启动consumer,
  1. KAFKA_OPTS="-javaagent:/kafka_2.13-3.2.3/monitor/jmx_prometheus_javaagent-0.12.0.jar=7073:/kafka_2.13-3.2.3/monitor/kafka-2_0_0.yml" kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic charlie-test1 --from-beginning
复制代码
并在prometheus的配置文件中添加consumer target,reload prometheus 配置即可发现consumer的指标,producer的指标采集与consumer类似。
  1. global:
  2.   scrape_interval: 15s
  3. scrape_configs:
  4.   - job_name: "kafka-cluster"
  5.     static_configs:
  6.     - targets: ["localhost:7072"]
  7.   - job_name: "kafka-consumer"
  8.     static_configs:
  9.     - targets: ["localhost:7073"]
复制代码
官方给出了Jmx exporter的其他例子。
注:由于不同的配置Jmx exporter生成的kafka指标名称是不一样的,因此并没有统一的kafka grafana dashboard,最好还是自己绘制。
以上就是使用jmx exporter采集kafka指标示例详解的详细内容,更多关于jmx exporter采集kafka的资料请关注中国红客联盟其它相关文章!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2025 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行