当前位置: 首页 > 知识库问答 >
问题:

Kafka使用prometheus与kafka cli命令有冲突

裴浩歌
2023-03-14

我们正在使用普罗米修斯一段时间,真的很享受它。

关于什么是jmx导出器的几句话

jmx-exporter是一个程序,它从基于JVM的应用程序(例如Java和Scala)读取JMX数据,并通过HTTP以Prometheus理解并可以抓取的简单文本格式公开它。

所以让我们开始讨论我的问题…

我们使用jmx导出器配置了kafka,如下所示

export KAFKA_OPTS="-javaagent:/home/jmx_prometheus_javaagent-0.11.0.jar=7071:/home/kafka-2_0_0.yml"

该配置在kakfa配置下的ambari中设置

设置配置后,我们重新启动所有 3 个 Kafka 代理

我们检查jmx-exporter HTTP服务器是否正在监听:

netstat -tlnp | grep 7071
tcp6       0      0 :::7071                 :::*                    LISTEN      63872/java

并刮擦指标!

curl -s localhost:7071 | grep -i kafka | head
# HELP kafka_log_logcleanermanager_max_dirty_percent Attribute exposed for management (kafka.log<type=LogCleanerManager, name=max-dirty-percent><>Value)
# TYPE kafka_log_logcleanermanager_max_dirty_percent gauge
kafka_log_logcleanermanager_max_dirty_percent 0.0

直到现在,一切都很酷

但是当我们开始使用kafka命令时,例如打印我们得到的主题列表:

/usr/hdp/current/kafka-broker/bin/kafka-topics.sh –zookeeper $zookeeper_server:2181 –list

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)
        at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:386)
        at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:401)
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)
        ... 6 more
FATAL ERROR in native method: processing of -javaagent failed

注意–在添加以下行之前:

export KAFKA_OPTS="-javaagent:/home/jmx_prometheus_javaagent-0.11.0.jar=7071:/home/kafka-2_0_0.yml "

一切都还好

所以任何建议 - 如何从这一点开始解决这个问题?

更多参考-

https://alex.dzyoba.com/blog/jmx-exporter

https://medium . com/@ mousavi 310/monitor-Apache-Kafka-using-grafana-and-Prometheus-873 c7a 0005 e 2

共有3个答案

彭正谊
2023-03-14

您的Kafka实例正在端口7071上侦听prom抓取,这似乎很好。当您发出Kafka命令时,您添加到KAFKA_OPTS的javaAgent似乎也在尝试侦听端口7071。不确定为什么您需要javaAgent,但请尝试在那里使用不同的端口。

鲍驰
2023-03-14

裁判:https://github.com/wurstmeister/kafka-docker/wiki#why-启用jmx时kafka工具会失败吗

启用 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

竺绍辉
2023-03-14

在我找到的所有解决方案中,它帮助我将KAFKA_OPTS变量更改为EXTRA_ARGS。但是我仍然不明白冲突的原因。Kafka在一个端口上运行,javaAgent在另一个端口上运行。但是,当创建主题时,出现了一个错误。JavaAgent我用来传递Prometheus度量

 类似资料:
  • 常见命令 解析 Zookeeper相当于是管理员。Kafka相当于一个会议。Topic相当于会议上谈的话题。 Zookeeper的端口号为2181,broker的端口号为9092。

  • 本文向大家介绍linux中install命令和cp命令的使用与区别,包括了linux中install命令和cp命令的使用与区别的使用技巧和注意事项,需要的朋友参考一下 前言 install和cp类似,都可以将文件/目录拷贝到指定的地点。但是,install允许你控制目标文件的属性。install通常用于程序的makefile(在RPM的spec里面也经常用到),使用它来将程序拷贝到目标(安装)目录

  • Kubernetes 中的 kubectl 及其他管理命令使用。

  • 1.TopicCommand 1.1.Topic创建 相关可选参数: 1.2.删除Topic 支持正则表达式匹配Topic来进行删除,只需要将topic 用双引号包裹起来 例如: 删除以create_topic_byhand_zk为开头的topic; .表示任意匹配除换行符 \n 之外的任何单字符。要匹配 . ,请使用 . 。&middot;*&middot;:匹配前面的子表达式零次或多次。要匹配

  • 在实现第三方API(mollie)时,他们似乎将支持分页的参数之一命名为from,这与内置的python相冲突。 有没有办法让我正确使用这个?我没有正确传递参数吗?注意:它们被写成。 它唯一支持的参数是:和。 给予:

  • 本文向大家介绍Mysql Explain命令的使用与分析,包括了Mysql Explain命令的使用与分析的使用技巧和注意事项,需要的朋友参考一下 mysql explain命令用于显示mysql如何使用索引来处理select语句以及连接表。通过该命令可以分析出查询语句或是表结构的性能瓶颈,从而写出性能更好的SQL语句,通过 expalin 命令我们可以得到: 1. 表的读取顺序 2. 表的读取操