【问题标题】:Monitor kafka with Prometheus and Grafana使用 Prometheus 和 Grafana 监控 kafka
【发布时间】:2017-10-11 09:48:52
【问题描述】:

我已按照以下步骤使用 Prometheus 和 Grafana 监控 kafka。

jmx 端口未打开

wget http://ftp.heanet.ie/mirrors/www.apache.org/dist/kafka/0.10.1.0/kafka_2.11-0.10.1.0.tgz
tar -xzf kafka_*.tgz
cd kafka_*

wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.6/jmx_prometheus_javaagent-0.6.jar
wget https://raw.githubusercontent.com/prometheus/jmx_exporter/master/example_configs/kafka-0-8-2.yml

./bin/zookeeper-server-start.sh config/zookeeper.properties &
KAFKA_OPTS="$KAFKA_OPTS -javaagent:$PWD/jmx_prometheus_javaagent-0.6.jar=7071:$PWD/kafka-0-8-2.yml" 
 ./bin/kafka-server-start.sh config/server.properties &

然后我在终端中使用curl http://localhost:7071/metrics 进行检查

它报告curl: (7) Failed connect to localhost:7071; Connection refused

目前我已经在服务器中打开了我的网络的所有端口。

当我检查netstat -tupln | grep LISTEN 输出中未列出端口号 7071

以下是kafka目录的内容:

drwxr-xr-x. 3 root root    4096 Aug 23 12:22 bin
drwxr-xr-x. 2 root root    4096 Oct 15  2016 config
-rw-r--r--. 1 root root   20356 Aug 21 10:50 hs_err_pid1496.log
-rw-r--r--. 1 root root   19432 Aug 21 10:55 hs_err_pid2447.log
-rw-r--r--. 1 root root 1225418 Feb  5  2016 jmx_prometheus_javaagent-0.6.jar
-rw-r--r--. 1 root root    2824 Aug 21 10:48 kafka-0-8-2.yml
drwxr-xr-x. 2 root root    4096 Aug 21 10:48 libs
-rw-r--r--. 1 root root   28824 Oct  5  2016 LICENSE
drwxr-xr-x. 2 root root    4096 Oct 11 15:05 logs
-rw-------. 1 root root    8453 Aug 23 12:08 nohup.out
-rw-r--r--. 1 root root     336 Oct  5  2016 NOTICE
drwxr-xr-x. 2 root root      46 Oct 15  2016 site-docs

kafka在2181端口运行,zookeeper也在运行

【问题讨论】:

    标签: apache-kafka grafana prometheus


    【解决方案1】:

    如果你不介意开放jmx端口,你也可以这样做:

    export JMX_PORT=9999
    export KAFKA_JMX_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.rmi.port=9999'
    ./bin/kafka-server-start.sh config/server.properties &
    java -jar jmx_prometheus_httpserver-0.10-jar-with-dependencies.jar 9300 kafka-0-8-2.yaml &
    

    您从sourcemvn package 构建的jar-with-dependencies

    【讨论】:

      【解决方案2】:

      我在 bash 中设置 KAFKA_OPTS 环境变量时遇到了同样的问题。更糟糕的情况是当您将环境变量添加到 ~/.profile 文件时。这种方法的问题在于 KAFKA_OPTS 用于 kafka-server-start.sh 和 zookeeper-server-start.sh,因此当您启动 Zookeeper 时,Zookeeper 将使用端口 7071 来导出指标。然后,当您运行 Kafka 时,您将收到“7071 端口正在使用错误”。

      我通过在 systemd 服务文件中设置环境解决了这个问题。我上周在my article描述了它:

      [Unit]
      ...
      [Service]
      ...
      Restart=no
       Environment=KAFKA_OPTS=-javaagent:/home/morteza/myworks/jmx_prometheus_javaagent-0.9.jar=7071:/home/morteza/myworks/kafka-2_0_0.yml
      [Install]
      ...
      

      【讨论】: