首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Kafka上使用JMX导出程序在代理加载时抛出一个NoSuchFieldException

在Kafka上使用JMX导出程序在代理加载时抛出一个NoSuchFieldException
EN

Stack Overflow用户
提问于 2022-06-24 12:55:49
回答 1查看 264关注 0票数 2

我目前正在尝试揭发Kafka Connect Workers:

使用这个对接者图像:

代码语言:javascript
复制
FROM cnfldemos/cp-server-connect-datagen:0.5.3-7.1.0
ADD --chown=1000:1000 exporterConfig.yml /opt/prometheus-exporter/prom-jmx-agent-config.yml
ADD --chown=1000:1000 jmx_prometheus_javaagent-0.17.0.jar /opt/prometheus-exporter/agent.jar

JMX出口商版本是0的最后一个版本。

以下是连接工作人员启动时的结果日志:

代码语言:javascript
复制
PS D:\env\confluent-platform> docker logs connect -f
===> User
uid=1000(appuser) gid=1000(appuser) groups=1000(appuser)
===> Configuring ...
===> Running preflight checks ...
===> Check if Kafka is healthy ...
Exception in thread "main" java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:513)
        at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:525)
Caused by: java.lang.NoSuchFieldError: UNKNOWN
        at io.prometheus.jmx.JmxCollector$Rule.<init>(JmxCollector.java:57)
        at io.prometheus.jmx.JmxCollector.loadConfig(JmxCollector.java:214)
        at io.prometheus.jmx.JmxCollector.<init>(JmxCollector.java:91)
        at io.prometheus.jmx.JavaAgent.premain(JavaAgent.java:29)
        ... 6 more
*** java.lang.instrument ASSERTION FAILED ***: "result" with message agent load/premain call failed at src/java.instrument/share/native/libinstrument/JPLISAgent.c line: 422
FATAL ERROR in native method: processing of -javaagent failed, processJavaStart failed

这个java.lang.NoSuchFieldError让我思考依赖冲突问题,

我通过了JMX出口商的代码&它简单的依赖性

实际上,Collector.java类中来自简单依赖项的未知Type枚举值仅出现在版本10之后,而14是JMX导出程序中的依赖版本号。

但是我使用了cnfldemos/cp connect的源代码,并且我找不到对这个依赖程序包的任何引用。

欢迎任何建议!

EN

回答 1

Stack Overflow用户

发布于 2022-11-02 12:58:53

如果您检查融合卡夫卡-连接图像的源代码

您将注意到,您必须设置以下环境变量以启用JMX

  1. KAFKA_JMX_OPTS
  2. KAFKA_JMX_HOSTNAME (可选,如果没有指定,它将采用当前主机名)
  3. KAFKA_JMX_PORT

您面临的问题是,当您指定KAFKA_JMX_OPTS时,默认情况下jmx身份验证是enabled。若要禁用它,请使用此标志-Dcom.sun.management.jmxremote.authenticate=false

我通过以下配置解决了这个问题:

代码语言:javascript
复制
  KAFKA_JMX_OPTS: -javaagent:/usr/share/java/kafka-connect-sample/jmx_prometheus_javaagent-0.17.2.jar=8080:/usr/share/java/kafka-connect-sample/prometheus-kafka-connect.yml -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72744425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档