使用Grafana + jmx 监控 kafka3.5 的过程
摘要
周五一边进行数据库监控, 同时想着部署一套监控系统.
能够监控一下kafka等中间件
结果不想自己遇到了很多坑.
下午有同事语音告诉自己一些排查问题的方式与方法.
自己又多花了半个小时才将数据捞出来.
感觉自己对很多工具的使用还是不够体系, 需要加强学习.
但是还是需要多学习和多记录的
StudyFrom
https://blog.csdn.net/LCBUSHIHAHA/article/details/132216491
https://grafana.com/grafana/dashboards/18276-kafka-dashboard/
需要注意的是 两者其实是一套机制.
问题的原因其实在于 3.5的kafka可能是与这个文档存在兼容性问题的.
部署方式
注意 我这边kafka的安装目录是 /usr/kafka 所以后面脚本比较简洁
下载jmx的文件到 /usr/kafka的目录下面
jmx_prometheus_javaagent-0.19.0.jar
然后创建一个配置文件 /usr/kafka/config.yaml
还需要修改一下启动文件
我这边的就是 /usr/kafka/bin/kafka-server-start.sh
可以在文件的最前面增加上:
export KAFKA_OPTS=-javaagent:/usr/kafka/jmx_prometheus_javaagent-0.19.0.jar=19092:/usr/kafka/config.yaml
注意端口需要是不被占用的端口.
配置文件内容
lowercaseOutputName: true
rules:
# Special cases and very specific rules
- pattern : kafka.server<type=(.+), name=(.+), clientId=(.+), topic=(.+), partition=(.*)><>Value
name: kafka_server_$1_$2
type: GAUGE
labels:
clientId: "$3"
topic: "$4"
partition: "$5"
- pattern : kafka.server<type=(.+), name=(.+), clientId=(.+), brokerHost=(.+), brokerPort=(.+)><>Value
name: kafka_server_$1_$2
type: GAUGE
labels:
clientId: "$3"
broker: "$4:$5"
- pattern : kafka.coordinator.(\w+)<type=(.+), name=(.+)><>Value
name: kafka_coordinator_$1_$2_$3
type: GAUGE
# Generic per-second counters with 0-2 key/value pairs
- pattern: kafka.(\w+)<type=(.+), name=(.+)PerSec\w*, (.+)=(.+), (.+)=(.+)><>Count
name: kafka_$1_$2_$3_total
type: COUNTER
labels:
"$4": "$5"
"$6": "$7"
- pattern: kafka.(\w+)<type=(.+), name=(.+)PerSec\w*, (.+)=(.+)><>Count
name: kafka_$1_$2_$3_total
type: COUNTER
labels:
"$4": "$5"
- pattern: kafka.(\w+)<type=(.+), name=(.+)PerSec\w*><>Count
name: kafka_$1_$2_$3_total
type: COUNTER
- pattern: kafka.server<type=(.+), client-id=(.+)><>([a-z-]+)
name: kafka_server_quota_$3
type: GAUGE
labels:
resource: "$1"
clientId: "$2"
- pattern: kafka.server<type=(.+), user=(.+), client-id=(.+)><>([a-z-]+)
name: kafka_server_quota_$4
type: GAUGE
labels:
resource: "$1"
user: "$2"
clientId: "$3"
# Generic gauges with 0-2 key/value pairs
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+), (.+)=(.+)><>Value
name: kafka_$1_$2_$3
type: GAUGE
labels:
"$4": "$5"
"$6": "$7"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+)><>Value
name: kafka_$1_$2_$3
type: GAUGE
labels:
"$4": "$5"
- pattern: kafka.(\w+)<type=(.+), name=(.+)><>Value
name: kafka_$1_$2_$3
type: GAUGE
# Emulate Prometheus 'Summary' metrics for the exported 'Histogram's.
#
# Note that these are missing the '_sum' metric!
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+), (.+)=(.+)><>Count
name: kafka_$1_$2_$3_count
type: COUNTER
labels:
"$4": "$5"
"$6": "$7"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.*), (.+)=(.+)><>(\d+)thPercentile
name: kafka_$1_$2_$3
type: GAUGE
labels:
"$4": "$5"
"$6": "$7"
quantile: "0.$8"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.+)><>Count
name: kafka_$1_$2_$3_count
type: COUNTER
labels:
"$4": "$5"
- pattern: kafka.(\w+)<type=(.+), name=(.+), (.+)=(.*)><>(\d+)thPercentile
name: kafka_$1_$2_$3
type: GAUGE
labels:
"$4": "$5"
quantile: "0.$6"
- pattern: kafka.(\w+)<type=(.+), name=(.+)><>Count
name: kafka_$1_$2_$3_count
type: COUNTER
- pattern: kafka.(\w+)<type=(.+), name=(.+)><>(\d+)thPercentile
name: kafka_$1_$2_$3
type: GAUGE
labels:
quantile: "0.$4"
重启添加相关prometheus
修改好配置文件和config.yaml 后需要重启kafka
然后修改prometheus 的配置文件
增加对应的job
需要注意, 这里面一个job 对应一套kafka, 我这边是single的节点, 所以比较简单一些.
- job_name: 'kafka203'
metrics_path: /metrics
static_configs:
- targets: ["192.168.254.203:19092"]
labels:
instance: kafka203
注意ip地址和端口的对应关系, 重启或者是刷新prometheus
就可以进行验证了 可以通过
prometheus的界面进行验证
http://192.168.255.xx:port/targets?search=
可以通过show more 的方式进行查看
打开链接 验证可以监控到jmx的相关信息.
导入grafana的面板
ID为: 18276
需要注意, 因为缺少一个必备的 变量, 直接引入时无法使用的.
而且貌似 3.5和jmx0.19 的版本缺少了一个必备的变量参数, 建议可以修改grafana 的这个 18276 的配置, 修改变量进行 修改为
settings -> Variables -> 点击kafka_job_name -> 选择 select variable type 修改为custom
->在 custom options 输入自己在prometheus 里面定义的job_name
-> 比如我这边是kafka203,kafka204 通过 逗号进行分割.
总结
再次进入grafana 查看kafka相关的信息
能够展示出一些基本的kafka信息.
本次处理过程中, 没注意到这里面的问题.
其实prometheus 里面是可以 进行查询和验证的.
代码能力是必须得有的, 而且必须有细心和慢慢查询的能力.
标签:jmx,name,kafka3.5,pattern,labels,kafka,GAUGE,Grafana,type
From: https://www.cnblogs.com/jinanxiaolaohu/p/17777503.html