Kafka 的 Prometheus JMX Exporter java 代理无法运行

Posted

技术标签:

【中文标题】Kafka 的 Prometheus JMX Exporter java 代理无法运行【英文标题】:Prometheus JMX Exporter java agent for Kafka won't run 【发布时间】:2020-08-15 01:23:17 【问题描述】:

我正在尝试设置 confluent kafka v5.4 并运行 prometheus JMX 导出器。我找到了这个博客来了解如何获得这个设置 https://alex.dzyoba.com/blog/jmx-exporter/ 。 Kafka 已设置并运行良好,但端口 8080 上的端点没有返回任何内容。我已经尝试了关于如何在 systemd 脚本中调用 javaagent 的所有方法,但似乎没有任何效果。

Description=Confluent Kafka Broker
After=network.target network-online.target remote-fs.target  zookeeper.service

[Service]
Type=forking
User=confluent
Group=confluent
Environment="KAFKA_JMX_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false  -Dcom.sun.management.jmxremote.ssl=false -javaagent=/opt/prometheus/jmx_prometheus_javaagent.jar=8080:/opt/prometheus/config.yaml"
Environment=LOG_DIR=/var/log/confluent
ExecStart=/opt/confluent/confluent-5.4.0/bin/kafka-server-start -daemon /opt/confluent/confluent-5.4.0/etc/kafka/server.properties
ExecStop=/opt/confluent/confluent-5.4.0/bin/kafka-server-stop
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

关于如何在 systemd 脚本中调用该 java 代理以使其正常工作的任何想法?我尝试了多种调用 OPTS 的选项,但它们都不起作用。我尝试将 -javaagent 命令放入 KAFKA_OPTS。感觉就像我已经尝试了几乎所有选项。 Kafka 日志没有提供任何线索,我不确定在哪里可以查看此类问题的日志。

OS Centos 7 JMX 导出器 0.12.0 Java openJDK 11

我发现的日志并没有告诉我为什么它没有运行。可能我查看的日志有误。

编辑:

conflue+ 11578 47.4 13.8 8679808 536764 ?      Sl   11:59   0:35 java -Xmx1G -Xms1G -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true -Xlog:gc*:file=/var/log/confluent/kafkaServer-gc.log:time,tags:filecount=10,filesize=102400 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -javaagent=/opt/prometheus/jmx_prometheus_javaagent.jar=8080:/opt/prometheus/config.yaml -Dkafka.logs.dir=/var/log/confluent -Dlog4j.configuration=file:/etc/kafka/log4j.properties -cp /opt/confluent/confluent-5.4.0/bin/../ce-broker-plugins/build/libs/*:/opt/confluent/confluent-5.4.0/bin/../ce-broker-plugins/build/dependant-libs/*:/opt/confluent/confluent-5.4.0/bin/../ce-auth-providers/build/libs/*:/opt/confluent/confluent-5.4.0/bin/../ce-auth-providers/build/dependant-libs/*:/opt/confluent/confluent-5.4.0/bin/../ce-rest-server/build/libs/*:/opt/confluent/confluent-5.4.0/bin/../ce-rest-server/build/dependant-libs/*:/opt/confluent/confluent-5.4.0/bin/../ce-audit/build/libs/*:/opt/confluent/confluent-5.4.0/bin/../ce-audit/build/dependant-libs/*:/opt/confluent/confluent-5.4.0/bin/../share/java/kafka/*:/opt/confluent/confluent-5.4.0/bin/../share/java/confluent-metadata-service/*:/opt/confluent/confluent-5.4.0/bin/../share/java/rest-utils/*:/opt/confluent/confluent-5.4.0/bin/../share/java/confluent-common/*:/opt/confluent/confluent-5.4.0/bin/../share/java/confluent-security/schema-validator/*:/opt/confluent/confluent-5.4.0/bin/../support-metrics-client/build/dependant-libs-2.12.10/*:/opt/confluent/confluent-5.4.0/bin/../support-metrics-client/build/libs/*:/usr/share/java/support-metrics-client/*:/opt/confluent/confluent-5.4.0/bin/../support-metrics-fullcollector/build/dependant-libs-2.12.10/*:/opt/confluent/confluent-5.4.0/bin/../support-metrics-fullcollector/build/libs/*:/usr/share/java/support-metrics-fullcollector/* io.confluent.support.metrics.SupportedKafka /opt/confluent/confluent-5.4.0/etc/kafka/server.properties

【问题讨论】:

显示 ps aux | grep Kafka 输出,或 systemctl status 该服务 顺便说一句,如果你使用 YUM,它会为你创建服务文件docs.confluent.io/current/installation/installing_cp/… 在@cricket_007 上方添加了输出,我没有使用 YUM 安装 【参考方案1】:

确保每次编辑服务文件时都运行systemctl daemon-reload


另外,我建议不要使用 LOG_DIR,从 log4j.properties 中删除 RollingFileAppender,然后让 journalctl 处理来自 SystemD 的所有日志记录

【讨论】:

【参考方案2】:

想通了 ExecStart=/opt/confluent/confluent-5.4.0/bin/kafka-server-start -daemon /opt/confluent/confluent-5.4.0/etc/kafka/server.properties

不正确

ExecStart=/opt/confluent/confluent-5.4.0/bin/kafka-server-start -daemon /etc/kafka/server.properties

是正确的,即使 2 是符号链接的。

【讨论】:

以上是关于Kafka 的 Prometheus JMX Exporter java 代理无法运行的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 JMX 将 Spring Boot 应用程序中的 Kafka 指标公开给 Prometheus?

使用 Jmx Exporter for Prometheus 缺少 Kafka Connect 指标

Kafka + 使用 prometheus 与 kafka cli 命令有冲突

可直接拿来用的kafka+prometheus+grafana监控告警配置

JMX 导出器和 Prometheus

JMX导出器和Prometheus