4 回答

TA貢獻1807條經驗 獲得超9個贊
在我找到的所有解決方案中,它幫助我將 KAFKA_OPTS 變量更改為 EXTRA_ARGS。但我還是不明白沖突的原因。Kafka 在一個端口上運行,javaagent 在另一個端口上運行。但盡管如此,在創建主題時卻出現錯誤。我用來傳遞 Prometheus 指標的 Javaagent

TA貢獻1995條經驗 獲得超2個贊
Kafka CLI 腳本使用與代理使用的相同的環境變量(特別是KAFKA_OPTS和JMX_PORT)。這就是他們沖突的原因。我正在使用匯合容器(confluentinc/cp-server:5.5.1):
JMX_PORT: 9991
KAFKA_OPTS: "-javaagent:/usr/local/bin/jmx_prometheus_javaagent-0.13.0.jar=7071:/etc/jmx-exporter/kafka-2_0_0.yml"
volumes:
- ./jmx_exporter/kafka-2_0_0.yml:/etc/jmx-exporter/kafka-2_0_0.yml
- ./jmx_exporter/jmx_prometheus_javaagent-0.13.0.jar:/usr/local/bin/jmx_prometheus_javaagent-0.13.0.jar
很多線程都指向JMX_PORTonly 但這對我沒有幫助。在能夠運行 CLI 命令之前,我必須從容器內部取消設置兩個環境變量。它的工作原理如下:
unset JMX_PORT
unset KAFKA_OPTS
kafka-run-class kafka.tools.GetOffsetShell --broker-list localhost:9092 --topic your_topic
它不會破壞您的代理,因為這些變量是按會話設置的。

TA貢獻1785條經驗 獲得超8個贊
啟用 JMX 時,kafka-topics.sh 和 kafka-console- Producer.sh 等工具會失敗。這是由于 JMX_PORT 環境變量引起的。Kafka 幫助程序腳本 /opt/kafka/bin/kafka-run-class.sh 將嘗試在 JMX 綁定到指定端口的新 JVM 中調用所需的命令。由于已在容器中運行的代理 JVM 綁定了此端口,因此該進程失敗并錯誤退出。
解決方案是在命令前添加 JMX_PORT= 前綴或取消設置環境變量,即取消設置 JMX_PORT

TA貢獻1864條經驗 獲得超6個贊
您的 Kafka 實例正在端口 7071 上偵聽舞會刮擦信息,這看起來不錯。當您發出 Kafka 命令時,看起來您添加到 KAFKA_OPTS 的 javaagent 也在嘗試偵聽端口 7071。不確定為什么在那里需要 javaagent,但在那里嘗試不同的端口。
添加回答
舉報