Hadoop

Kafka 生产集群监控调优之路

Kafka 生产集群监控调优之路

1. 参考

2. 部署监控

2.1下载 jmx_exporter

# 方式1: 源码编译
cd /tmp
git clone https://github.com/prometheus/jmx_exporter.git
git checkout 0.16.1
mvn clean -DskipTests -T 2C

# 方式2: 从maven仓库下载
curl -OL https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.16.1/jmx_prometheus_javaagent-0.16.1.jar

2.2 Attach 到 Kafka 进程

  • a) 停机
$KAFKA_HOME/bin/kafka-server-stop.sh
  • b) 将下载或编译的 jar 包拷贝到 libs/
cp /tmp/jmx_prometheus_javaagent-0.16.1.jar $KAFKA_HOME/libs/
  • c) 配置启动参数
KEY1='exec $base_dir/kafka-run-class.sh $EXTRA_ARGS kafka.Kafka "$@"'
KEY2='export KAFKA_OPTS="-javaagent:/etc/emr/agent-conf/jmx_prometheus_javaagent-0.16.1.jar=10105:/etc/emr/agent-conf/kafka20-jmx-rules.yml"'
sed -i "s#$KEY1#$KEY2\n$KEY1#g" $KAFKA_HOME/bin/kafka-server-start.sh
  • d) 下载指标配置
sudo mkdir -p /etc/emr/agent-conf
sudo curl -L -o /etc/emr/agent-conf/kafka20-jmx-rules.yml https://raw.githubusercontent.com/wl4g/prometheus-integration/master/prometheus/kafka/kafka20-jmx-rules.yml
# 或
sudo curl -L -o /etc/emr/agent-conf/kafka20-jmx-rules.yml https://gitee.com/wl4g/prometheus-integration/raw/master/prometheus/kafka/kafka20-jmx-rules.yml
  • e) 重启
$KAFKA_HOME/bin/kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties
  • f) 访问指标(prometheus标准格式)
curl http://localhost:10105/

2.3 配置 Grafana dashboard

3. 总结

  • 2.1 使用 jstat <pid> 查看,如果 M 区使用不大、或频繁 FGC 则通常是 Metaspace 区设置过小(默认21M),需增大它: -XX:MetaspaceSize=96m

  • 2.2 如果是普通 GC 频繁,则可能是并发过大建议调大堆内存 (默认1G) :

# 调大堆内存
sed -i 's/-Xmx1G -Xms1G/-Xmx3G -Xms3G/g' $KAFKA_HOME/bin/kafka-server-start.sh
# 检查配置
cat $KAFKA_HOME/bin/kafka-server-start.sh | grep KAFKA_HEAP_OPTS
# 重启生效
$KAFKA_HOME/bin/kafka-server-start.sh -daemon $KAFKA_HOME/conf/server.properties
-Xmx6g -Xms6g -XX:+UseG1GC
-XX:InitiatingHeapOccupancyPercent=35
-XX:MaxGCPauseMillis=20 -XX:G1HeapRegionSize=16M
-XX:MinMetaspaceFreeRatio=50 -XX:MaxMetaspaceFreeRatio=80
-XX:MetaspaceSize=96m

留言

您的电子邮箱地址不会被公开。