kafka 和 JMX 导出器

ank*_*tel 3 bash apache-kafka prometheus jmx-exporter

我无法使用 JMX 导出器公开 kafka 指标。您可以查看我的步骤并在需要的地方纠正我吗?\n我正在按照此处的步骤使用 JMX 导出器启用 kafka。

\n\n

以下是我遵循的分步说明

\n\n
#get kafka\nwget kafka_2.11-2.0.0\n\n# Download Prometheus JMX exporter:\nsudo wget -P /opt/kafka/prometheus/ https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.3.0/jmx_prometheus_javaagent-0.3.0.jar\nsudo wget -P /opt/kafka/prometheus/ https://raw.githubusercontent.com/prometheus/jmx_exporter/master/example_configs/kafka-0-8-2.yml\n\n#Edit Prometheus JMX exporter config file; and append following lines \necho  \xe2\x80\x9c- pattern : kafka.producer<type=producer-metrics, client-id=(.+)><>(.+):\\w* name: kafka_producer_$2\xe2\x80\x9d >> /opt/kafka/prometheus/kafka-0-8-2.yml\necho  \xe2\x80\x9c\xe2\x80\x94 pattern : kafka.consumer<type=consumer-metrics, client-id=(.+)><>(.+):\\w* name: kafka_consumer_$2\xe2\x80\x9d >> /opt/kafka/prometheus/kafka-0-8-2.yml\necho  \xe2\x80\x9c\xe2\x80\x94 pattern : kafka.consumer<type=consumer-fetch-manager-metrics, client-id=(.+)><>(.+):\\w* name: kafka_consumer_$2\xe2\x80\x9d >> /opt/kafka/prometheus/kafka-0-8-2.yml\n\n\n#start zookeeper in terminal 0\n/opt/kafka/bin/zookeeper-server-start.sh config/zookeeper.properties\n\n\n#start kafka broker in terminal 1\nKAFKA_HEAP_OPTS=\xe2\x80\x99\xe2\x80\x9d-Xmx1000M -Xms1000M\xe2\x80\x9d\xe2\x80\x99 \nKAFKA_OPTS=\xe2\x80\x9d-javaagent:/opt/kafka/prometheus/jmx_prometheus_javaagent-0.3.0.jar=7071:/opt/kafka/prometheus/kafka-0\xe2\x80\x938\xe2\x80\x932.yml\xe2\x80\x9d \nJMX_PORT=7071\n/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties  \n\n\n#start kafka consumer in terminal 2\nKAFKA_OPTS=\xe2\x80\x9d-javaagent:/opt/kafka/prometheus/jmx_prometheus_javaagent-0.3.0.jar=7072:/opt/kafka/prometheus/kafka-0\xe2\x80\x938\xe2\x80\x932.yml\xe2\x80\x9d \nJMX_PORT=7072\n/opt/kafka/bin/kafka-console-consumer.sh \xe2\x80\x94 bootstrap-server 0.0.0.0:9092 \xe2\x80\x94 topic test \xe2\x80\x94 from-beginning\n\n#start kafka producer in terminal 3\nKAFKA_OPTS=\xe2\x80\x9d-javaagent:/opt/kafka/prometheus/jmx_prometheus_javaagent-0.3.0.jar=7073:/opt/kafka/prometheus/kafka-0\xe2\x80\x938\xe2\x80\x932.yml\xe2\x80\x9d \nJMX_PORT=7073\n/opt/kafka/bin/kafka-console-producer.sh \xe2\x80\x94 broker-list 0.0.0.0:9092 \xe2\x80\x94 topic test\n
Run Code Online (Sandbox Code Playgroud)\n\n

经过上述步骤后,zookeeper 和 kafka 运行正常。\n我可以在生产者终端中输入一条消息,并在消费者控制台上收到该消息。然而,Prometheus 上没有可见的 kafka 指标。为了调试这个,我检查了端口 7071/2/3

\n\n
netstat -tlnp | grep 7071\nnetstat -tlnp | grep 7072\nnetstat -tlnp | grep 7073\n
Run Code Online (Sandbox Code Playgroud)\n\n

这导致空白响应;这意味着没有服务正在使用上述端口。我觉得 JMX 导出器未正确启用。

\n\n

你能帮我解决以上问题吗?

\n

cri*_*007 5

从你的问题来看,你将变量放在自己的行上,而博客将它们放在同一行上......

\n\n

例如这是如何启动 Kafka 服务器

\n\n

KAFKA_HEAP_OPTS=\'"-Xmx1000M -Xms1000M"\' KAFKA_OPTS=\'-javaagent:/opt/kafka/prometheus/jmx_prometheus_javaagent-0.3.0.jar=7071:/opt/kafka/prometheus/kafka-0\xe2\x80\x938\xe2\x80\x932.yml\' JMX_PORT=7081 /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties

\n\n

否则,您需要导出变量,以便子流程会像您在上一个问题中所做的那样拾取它们,这对于公开指标来说似乎工作得很好

\n\n
export KAFKA_HEAP_OPTS=\'"-Xmx1000M -Xms1000M"\'\nexport KAFKA_OPTS=\'-javaagent:/opt/kafka/prometheus/jmx_prometheus_javaagent-0.3.0.jar=7071:/opt/kafka/prometheus/kafka-0\xe2\x80\x938\xe2\x80\x932.yml\'\nexport JMX_PORT=7081\n/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties\n
Run Code Online (Sandbox Code Playgroud)\n\n

注意:您链接到的博客不使用JMX_PORT,但这些端口不能与导出器相同。

\n\n

我还建议至少下载高于 0.3 的版本 - https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/

\n\n

并使用 Kafka 2.0 的配置 - https://github.com/prometheus/jmx_exporter/blob/master/example_configs/kafka-2_0_0.yml

\n\n
\n\n

旁注:netstat -tlnp | grep 707会立即向您展示所有内容

\n