首页 > 其他分享 >使用jmx exporter采集kafka指标

使用jmx exporter采集kafka指标

时间:2022-11-02 17:11:41浏览次数:91  
标签:jmx exporter name kafka metrics prometheus consumer

预置条件

安装kafka、prometheus

使用JMX exporter暴露指标

下载jmx exporter以及配置文件。Jmx exporter中包含了kafka各个组件的指标,如server metrics、producer metrics、consumer metrics等,但这些指标并不是prometheus格式的,因此需要通过重命名方式转变为prometheus格式,重命名规则配置在kafka-2_0_0.yml中。

wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.12.0/jmx_prometheus_javaagent-0.12.0.jar
wget https://raw.githubusercontent.com/prometheus/jmx_exporter/master/example_configs/kafka-2_0_0.yml 

kafka集群启用监控

启用的方式比较简单,只需要在kafka-server-start.sh中添加如下两行即可:

...
#添加如下两行
export JMX_PORT="7081"
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"

COMMAND=$1
case $COMMAND in
  -daemon)
    EXTRA_ARGS="-daemon "$EXTRA_ARGS
    shift
    ;;
  *)
    ;;
esac

exec $base_dir/kafka-run-class.sh $EXTRA_ARGS kafka.Kafka "$@"

prometheus的配置文件如下,启动之后即可看到kafka的指标:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: "kafka-cluster"
    static_configs:
    - targets: ["localhost:7072"]

采集producer/consumer的指标

kafka的producer metricsconsumer metrics的格式与kafka server metrics的格式不同,因此需要特定的重命名配置,可以将其追加到kafka-2_0_0.yml文件中:

# MBean: kafka.producer:type=producer-metrics,client-id=([-.w]+)
- pattern: kafka.(.*)<type=(.*)-metrics, client-id=(.*)><>(.+):\w*
  name: kafka_$2-metrics
  labels:
    client_id: "$3"
    attr_name: "$4"
  help: "Kafka global client JMX metric $1 $2-metrics"
  type: GAUGE

# MBean: kafka.producer:type=producer-node-metrics,client-id=([-.w]+),node-id=([0-9]+)
# MBean: kafka.consumer:type=consumer-node-metrics,client-id=([-.w]+),node-id=([0-9]+)
- pattern: kafka.(.*)<type=(.*)-metrics, client-id=(.*), node-id=(.*)><>(.+):\w*
  name: kafka_$2_$5-metrics
  labels:
    client_id: "$3"
    node_id: "$4"
    attr_name: "$5"
  help: "Kafka client JMX metric $1 $2-metrics"
  type: GAUGE

- pattern: kafka.(.*)<type=(.*)-metrics, client-id=(.*), topic=(.*)><>(.+):\w*
  name: kafka_$2_$5-metrics
  labels:
    client_id: "$3"
    topic: "$4"
    attr_name: "$5"
  help: "Kafka client JMX metric $1 $2-metrics"
  type: GAUGE

使用如下方式启动consumer,

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类似。

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: "kafka-cluster"
    static_configs:
    - targets: ["localhost:7072"]

  - job_name: "kafka-consumer"
    static_configs:
    - targets: ["localhost:7073"]

官方给出了Jmx exporter的其他例子

注:由于不同的配置Jmx exporter生成的kafka指标名称是不一样的,因此并没有统一的kafka grafana dashboard,最好还是自己绘制。

标签:jmx,exporter,name,kafka,metrics,prometheus,consumer
From: https://www.cnblogs.com/charlieroro/p/16851629.html

相关文章

  • Node_exporter+Prometheus+Grafana 安装配置详解
    在进行性能测试时,想直观看到服务器的CPU、内存占用多少,可以搭建prometheus+node_exporter+grafana来实现。通过node_exporter把从服务器(即被监控机器)采集到的信息发到pr......
  • 线上kafka消息堆积,consumer掉线,怎么办?
    线上kafka消息堆积,所有consumer全部掉线,到底怎么回事?最近处理了一次线上故障,具体故障表现就是kafka某个topic消息堆积,这个topic的相关consumer全部掉线。整体排查过程和......
  • Kafka 架构和原理机制 (图文全面详解)
    目录一:Kafka简介二:Kafka基本架构三:Kafka基本原理四:Zookeeper在kafka的作用五:Kafka的特性六:Kafka的应用场景一:Kafka简介ApacheKafka是分布式发布......
  • 小白入门kafka-附源码
    现在消息队列的主流kafaka面试过程中经常被提到,所以进行了学习和总结现在分享给大家,如有疑问可以评论沟通。 基础API使用源码和spirngboot+kafka集成源码:https://files.......
  • Kafka消息语义
    最多一次:消息最多被消费一次,可能丢失最少一次:消息最少被消费一次,可能被重复消费多次精确一次:消息会且只会被消费一次Producer默认语义默认情况下,Kafka会在producer的......
  • kafka服务端设置用户和密码登录及springboot访问实现
    1、先安装zookeeper,不会的可以去查一下。2、解压并放到目录下,改名tarzxvfkafka_2.12-2.4.0.tgz-C/datamvkafka_2.12-2.4.0kafka3、修改kafka配置文件server.......
  • Kafka数据重复和数据丢失的解决方案
     来源: https://blog.csdn.net/u011974797?type=blog 1.Kafka数据重复的解决方案:对每个生产者生成的每条数据,都添加由生产者id,分区号,随机的序列号组成的标识......
  • 【博学谷学习记录】超强总结,用心分享|狂野架构kafka概述
    概述Kafk定义​ 传统上定义是一个分布式的基于发布/订阅模式的消息队列,主要应用在大数据实时处理场景,现在Kafka已经定义为一个分布式流平台,用于数据通道处理,数据流分析,......
  • 【flink学习系列1】sink文件到kafka
    importjava.util.Properties;importorg.apache.flink.api.common.RuntimeExecutionMode;importorg.apache.flink.api.common.serialization.SimpleStringSchema;im......
  • Kafka简明教程(三)Kafka‘s Ecosystem
    ​​LinkedinBurrow​​:Burrow是linkedin开源的一个监控ApacheKafka的工具,burrow可以将消费者滞后检查作为一项服务来对外提供。它监视所有消费者的承诺偏移量,并根据需要......