一、总述
在Kafka应用与运维过程中,常需要了解Kafka的运行状态。Kafka本身提供了丰富的运行指标以供查询。Kafka指标通过可JMX的方式进行指标采集、暴露。Kafka开启JMX后即可以对外提供指标查询。我们可以通过jconsole查看kafka指标。但更常用的方法是kafka_exporter将kafka指标导出到prometheus,并成grafana完成集成。
二、使用kafka_exporter采集kafka指标
采集kafka指标的方式有很多种,可以通过Kafka开启JMX_PORT,采集kafka的内置指标。也可以使用开源的kafka_exporter采集。个人认为kafka_exporter导出的指标更加友好,更加实用,它是从应用用户的角度采集指标的go语言程序,可以从github上下载对应的release来使用,下载地址kafka_exporter release下载链接。下面示例使用kafka_exporter采集kafka指标。
首先在kafka_exporter的release页面下载对应版本的kafka_exporter。下载完成后,解压对应的压缩包,使用以下命令采集kafka指标
单节点kafka:
./kafka_exporter --kafka.server=localhost:9092
多节点kafka:
./kafka_exporter --kafka.server=localhost:9092 --kafka.server=localhost:9093
启动成功后,会在命令行页面看到,内容显示kafka_exporter使用9308端口开启了一个http服务:
[kafka_exporter-1.7.0.darwin-arm64 % ./kafka_exporter --kafka.server=localhost:9092
I0713 16:18:41.960616 63404 kafka_exporter.go:800] Starting kafka_exporter (version=1.7.0, branch=HEAD, revision=7e840e81a0170375214e2c1e1dc7ce94aeff8712)
I0713 16:18:41.968533 63404 kafka_exporter.go:971] Listening on HTTP :9308
使用浏览器访问对应的ip:9308,可以访问到页面
点击Metrics访问kafka metric页面,查看kafka_exporter采集的指标:
三、Prometheus配置到KafkaExporter
在prometheus的配置文件prometheus.yml的scrape_configs上,增加kafka_exporter的target,最简配置如下。
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
- job_name: "kafka_exporter"
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ["localhost:9308"]
添加后即可以在prometheus上面板上查到kafka的指标:
四、Grafana连接Prometheus
在Granfana中选中或配置Prometheus,新建面板,可以选择导入KafkaExporter官网的面板,面板详情如下。
以上内容为指出了采集kafka指标到prometheus+grafana的过程,对kafka/prometheus/grafana并没有展开描述,如有兴趣或需要了解的地方,可以查看对应组件的官方文档或自行百度。