Kafka 监控搭建
目录
Kafka 监控搭建方案:Prometheus + Grafana + JMX。
方案设计
采用 JMX 监控以获取完整的 Kafka 指标,而非 Kafka-specific exporter(如 KafkaOffsetMonitor、Burrow、kafka-monitor、Kafka-Manager),后者仅监控 topic 读写,不能提供集群整体监控信息(分片、延时、内存等)。
使用 jmx_prometheus_javaagent-0.6.jar + kafka-0-8-2.yml。
配置步骤
-
将两个文件放到 Kafka 主目录下,修改 Kafka 启动方式使用 JVM agent
-
启动命令:
KAFKA_OPTS="$KAFKA_OPTS -javaagent:../jmx_prometheus_javaagent-0.6.jar=7071:../kafka-0-8-2.yml" ./kafka-server-start.sh -daemon ../config/server.properties
- 查看监控项:
curl http://ip:7071/metrics
约 1 万多个监控项。
- Prometheus 配置(
prometheus.yml):
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets: []
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'druid_exporter'
static_configs:
- targets: ['10.165.6.157:8000']
- job_name: 'kafka_exporter'
static_configs:
- targets: ['10.165.23.149:9308']
- job_name: 'kafka'
static_configs:
- targets: ['10.165.23.149:7071', '10.165.23.202:7071', '10.165.23.204:7071']
- 在 Prometheus 页面验证各 job 状态为
up - 在 Grafana 中建立 Prometheus 数据源
- 下载并配置 Kafka dashboard 插件
- 配置 Kafka 自拉起脚本
Kafka 自拉起脚本
#!/bin/bash
# Kafka restart script
cd /usr/local/app/kafka/bin
function stop() {
echo "stop kafka"
PIDS=$(ps ax | grep -i 'kafka' | grep java | grep -v grep | awk '{print $1}')
if [ -z "$PIDS" ]; then
echo "No kafka server to stop"
else
kill -9 $PIDS
fi
}
function start() {
echo "starting kafka"
KAFKA_OPTS="$KAFKA_OPTS -javaagent:../jmx_prometheus_javaagent-0.6.jar=7071:../kafka-0-8-2.yml" ./kafka-server-start.sh -daemon ../config/server.properties
}
function moni() {
echo "monitoring kafka.."
if ! ps ax | grep -i 'kafka' | grep java | grep -v grep > /dev/null 2>&1; then
start
fi
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
stop
sleep 1
start
;;
moni)
moni
;;
*)
echo "Usage: $0 [start|stop|restart|moni]"
exit 1
;;
esac
遗留问题
- 三个节点分别监控,聚合监控配置:直接在 Prometheus 的 scrape_configs targets 中添加多个节点地址(已解决)
- Grafana 的 Kafka 插件需单独添加至镜像
- Prometheus 临时部署在 151.100 上
- 监控面板需继续完善