我们希望监控Kafka并有两个特定要求:在CSV文件中使用无头工具和存储性能指标。遵循Gwen Shapira系列[1],我倾向于请求延迟和 kafka.tools.JmxTool 开始。
设置:Kafka 0.11,公开JMX,无头指标收集工具
Q :JMX bean提供的指标如[2]所示,可能是每个Broker:“请求队列”,“请求本地”,“响应远程”,“响应队列”,“响应”发送”?
[2]期望的Kafka指标
答案 0 :(得分:1)
经过一番探索,以下是在3999端口打开Kafka JMX并收集请求指标的全套:
更新bin/kafka-run-class.sh
:
# JMX settings
if [ -z "$KAFKA_JMX_OPTS" ]; then
KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=0.0.0.0 -Djava.net.preferIPv4Stack=true"
fi
# JMX port to use
if [ $JMX_PORT ]; then
KAFKA_JMX_OPTS="$KAFKA_JMX_OPTS -Dcom.sun.management.jmxremote.port=${JMX_PORT} -Dcom.sun.management.jmxremote.rmi.port=${JMX_PORT} "
fi
更新bin/kafka-server-start.sh
:
if [ -z "$JMX_PORT" ]; then
export JMX_PORT=3999
fi
#!/bin/bash
PIPE=/tmp/kafka-monitoring-temp.out
mkfifo $PIPE
# Start logging to journal
systemd-cat -t 'kafka-monitoring' < $PIPE &
sleep_pid=$(
sleep 9999d > $PIPE & # keep pipe open
echo $! # but allow us to close it later...
)
arrayName=( "kafka.network:type=RequestMetrics,name=RequestQueueTimeMs,request=Fetch"
"kafka.network:type=RequestMetrics,name=LocalTimeMs,request=Fetch"
"kafka.network:type=RequestMetrics,name=RemoteTimeMs,request=Fetch"
"kafka.network:type=RequestMetrics,name=ResponseQueueTimeMs,request=Fetch"
"kafka.network:type=RequestMetrics,name=ResponseSendTimeMs,request=Fetch"
)
for name in "${arrayName[@]}"; do
timeout 1s /ust/lib/kafka/bin/kafka-run-class.sh kafka.tools.JmxTool --object-name "${name}" --jmx-url service:jmx:rmi:///jndi/rmi://127.0.0.1:3999/jmxrmi --reporting-interval 1100 | tee $PIPE
done
kill $sleep_pid
rm $PIPE
答案 1 :(得分:0)
答案 2 :(得分:0)
这里是对它们的含义的一些补充说明。希望对您有所帮助。
请求队列:请求在请求队列中等待的时间
kafka.network:type=RequestChannel,name=RequestQueueSizeMs
本地请求:在领导者处处理请求
kafka.network:type=RequestMetrics,name=LocalTimeMs,request=产品
远程响应:等待关注者处理请求的时间
kafka.network:type=RequestMetrics,name=RemoteTimeMs,request=产生
响应队列:请求在响应队列中等待的时间
kafka.network:type=RequestMetrics,name=ResponseQueueTimeMs,request=生产
回复发送:发送回复的时间
kafka.network:type=RequestMetrics,name=ResponseSendTimeMs