首页 > 解决方案 > 添加 jmx__javaagent 后无法在 kubernetes 中列出 kafka 主题

问题描述

我的 kubernetes 集群中有一个正在运行的 kafka pod。为了获取 prometheus 格式的自定义指标,我配置了一个 jmx_prometheus_javaagent 并设置了端口 2255。我可以列出来自 localhost:2255/metrics 的指标。

问题是,在此之后,我无法列出 kafka 主题。收到以下错误:


bash-4.3# /opt/kafka/bin/kafka-topics.sh --list --zookeeper dz-zookeeper:2181

Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
Caused by: java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at sun.net.httpserver.ServerImpl.bind(ServerImpl.java:133)
at sun.net.httpserver.HttpServerImpl.bind(HttpServerImpl.java:54)
at io.prometheus.jmx.shaded.io.prometheus.client.exporter.HTTPServer.<init>(HTTPServer.java:145)
at io.prometheus.jmx.shaded.io.prometheus.jmx.JavaAgent.premain(JavaAgent.java:49)
FATAL ERROR in native method: processing of -javaagent failed

中止(核心转储)


任何想法,如何解决这个错误?

标签: kubernetesapache-kafkaprometheuskafka-topic

解决方案


使用“docker ps”获取kafka broker容器ID

然后以这种方式从命令行对该容器运行 kafka 命令:

docker exec -it CONTAINERID /bin/bash -c "KAFKA_OPTS= && kafka-topics --zookeeper 127.0.0.1:2181 --list"

更改 CONTAINERID 和 zookeeper 地址以适应您的环境。


推荐阅读