我已按照以下步骤使用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也在运行
答案 0 :(得分:0)
如果你不介意打开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 &
您使用jar-with-dependencies
从source构建的mvn package
。
答案 1 :(得分:0)
在bash中设置KAFKA_OPTS环境变量时,我遇到了同样的问题。最糟糕的情况是将环境变量添加到〜/ .profile文件中。这种方法的问题在于,KAFKA-server-start.sh和zookeeper-server-start.sh都使用了KAFKA_OPTS,因此,当您启动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]
...