通过在 Kafka 应用中埋点来暴露应用的数据,使用 Prometheus 监控抓取数据,并借助 Grafana 大盘来展示数据,即可实现通过 Prometheus 监控 Kafka 应用的目的。
步骤一:启动 JMX 服务
首先需要在 Kafka 应用中启用 JMX 服务以获取资源信息。
- 修改 /opt/kafka/kafka_2.11-0.8.2.1/bin/kafka-server-start.sh,在第一行添加
export JMX_PORT="9999"
。 - 重启 Kafka。
步骤二:启动 jmx_exporter
其次需要启动 jmx_exporter,让 JMX 信息可以直接通过 HTTP 方式访问,以便 ARMS Prometheus 监控抓取。
- 下载 kafka.yml 到 /opt/exporter_kafka/ 目录下。
- 修改下载的 /opt/exporter_kafka/kafka-0.8.2.yml 文件,在第一行添加
hostPort: localhost:9999
,将 JMX 服务运行的端口暴露给 jmx_exporter。 - 下载 jmx_exporter 的可执行文件到 /opt/exporter_kafka/ 目录下。
- 启动 jmx_exporter。
至此应用部分配置完成。可通过运行以下命令验证 jmx_exporter 是否可以正常工作。java -Dcom.sun.management.jmxremote.ssl=false - Dcom.sun.management.jmxremote.authenticate=false - Dcom.sun.management.jmxremote.port=9998 -cp /opt/exporter_kafka/jmx_prometheus_httpserver-0.12.0-jar-with-dependencies.jar io.prometheus.jmx.WebServer 9997 /opt/exporter_kafka/kafka-0-8-2.yml &
curl http://<jmx_exporter所在机器的IP>:9997/metrics
Kafka 各指标的含义请参见 Monitoring Kafka。