5.1 通过 JMX 获取监控
kafka 开启 JMX 端口
修改 kafka 的 kafka-server-start.sh 文件,增加 jmx 端口:
#...
# jmx 端口
export JMX_PORT="9999"
#...
使用 jmxterm
使用 jmxterm 连接 JMX 进入交互模式
java -jar jmxterm-1.0.4-uber.jar -l host:port
列出所有 domain
domains
列出所有 bean (相当于列出所有 object name (domain + properties))
beans
beans <domain>
选中 bean
bean <object name>
列出所选 bean 的属性和操作
info
查看属性值
get <attribute>
使用 jmx_exporter
作为 javaagent 启动
修改 kafka 的 kafka-run-class.sh 文件,增加 javaagent 配置:
# ...
if [[ $JMX_PORT && -f /usr/local/jmx_prometheus_javaagent-0.17.1.jar && -f /etc/default/jmx_prometheus_javaagent.yaml ]]; then
JMX_EXPORTER=-javaagent:/usr/local/jmx_prometheus_javaagent-0.17.1.jar=5556:/etc/default/jmx_prometheus_javaagent.yaml
else
JMX_EXPORTER=""
fi
# ...
# Launch mode
if [ "x$DAEMON_MODE" = "xtrue" ]; then
nohup $JAVA $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS $JMX_EXPORTER -cp $CLASSPATH $KAFKA_OPTS "$@" > "$CONSOLE_OUTPUT_FILE" 2>&1 < /dev/null &
else
exec $JAVA $KAFKA_HEAP_OPTS $KAFKA_JVM_PERFORMANCE_OPTS $KAFKA_GC_LOG_OPTS $KAFKA_JMX_OPTS $KAFKA_LOG4J_OPTS $JMX_EXPORTER -cp $CLASSPATH $KAFKA_OPTS "$@"
fi
增加 javaagent 配置后可以从 5556 端口获取 jmx metrics:
$ curl http://localhost:5556/metrics
修改 prometheus.yml,增加 job:
scrape_configs:
- job_name: 'kafka1'
static_configs:
- targets: ['10.0.0.1:5556']
- job_name: 'kafka2'
static_configs:
- targets: ['10.0.0.2:5556']
- job_name: 'kafka3'
static_configs:
- targets: ['10.0.0.3:5556']
作为 httpserver 启动
java -jar jmx_prometheus_httpserver-0.17.1.jar 5556 jmx_prometheus.yaml
cat jmx_prometheus.yaml
---
startDelaySeconds: 0
# hostPort: 127.0.0.1:5556
username:
password:
jmxUrl: service:jmx:rmi:///jndi/rmi://127.0.0.1:9999/jmxrmi
ssl: false
lowercaseOutputName: false
lowercaseOutputLabelNames: false