配置kafka
JMX PORT,修改bin/kafka-server-start.sh,添加一行export JMX_PORT="9999",指定9999端口暴露出来供采集。像配置kafka-manager采集,也是要做这个事情的。
下载jmx_exporter
链接 https://github.com/prometheus/jmx_exporter, 将文件放在kafka目录下 比如 /kafka_2.11-1.0.0/jmx_prometheus_javaagent-0.3.1.jar
创建文件kafka-agent.yaml
放在目录 /kafka_2.11-1.0.0, 里面的内容就是你配置的kafka metrics
hostPort: 127.0.0.1:9999
lowercaseOutputName: true
whitelistObjectNames:
- "kafka.controller:type=KafkaController,name=OfflinePartitionsCount"
- "kafka.controller:type=KafkaController,name=ActiveControllerCount"
- "kafka.server:type=BrokerTopicMetrics,name=MessagesInPerSec"
- "kafka.server:type=BrokerTopicMetrics,name=BytesInPerSec"
- "kafka.server:type=ReplicaManager,name=UnderReplicatedPartitions"
- "kafka.server:type=ReplicaFetcherManager,name=MaxLag,clientId=Replica"
修改bin/kafka-server-start.sh
添加 export KAFKA_OPTS="-javaagent:/绝对路径/kafka_2.11-1.0.0/jmx_prometheus_javaagent-0.3.1.jar=9990:/绝对路径
/kafka_2.11-1.0.0/kafka-agent.yaml"
jmx_prometheus_javaagent-0.3.1.jar=9990:, 9990为jmx_exporter提供数据的端口,之后我们访问http://xxx.xxx.xxx:9990/metrics就能获得需要的metrics数据:
如果使用prometheus来抓取数据,只要增加prometheus抓取目标源如下
- job_name: kafka-jmx-monitor
static_configs:
- targets:
- localhost-XX:9990
最后,我是在grafana上配置了prometheus面板进行可视化显示和告警设置。