有没有一种方式来获得在C#程序中的卡夫卡远程服务器的指标?
我在C#中当前的项目需要从卡夫卡服务器获取下复制分区的数量。我可以在mbeans部分的jconsole中查看它,但我需要在c#程序中获取值。我尝试使用NetMX与此代码进行初始连接。有没有一种方式来获得在C#程序中的卡夫卡远程服务器的指标?
AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
INetMXConnector connector = NetMXConnectorFactory.Connect(new Uri("http://<myserver>:<jmxport>"), null);
IMBeanServerConnection remoteServer = connector.MBeanServerConnection;
“未找到部分”错误是在第二行抛出,我想知道如果有人能帮助这一点吗?
我不认为NetMX将连接到Java JMX端点。这是专门针对DotNet的“独立”实现。
最好的办法是到Jolokia Java的代理加载到你的目标卡夫卡服务器。 Jolokia通过可以通过C#访问的HTTP/REST接口公开JMX。
你可以尝试IKVM(一个java字节码给CLR,它将为你提供一个Java JMX兼容的DLL,你可以调用它,IKVM是一个将Java字节码转换成.NET字节码的编译器。从
嘿,所以我把Jolokia war代理安装到了tomcat的webapp文件夹中。但是,当我提出获取kafka指标的请求时,它会给出错误。此外,我用列表请求,并且也没有显示关于卡夫卡任何东西,但它确实表明了标准的Java类的东西“的java.lang”。但是,当我在我的计算机上使用jconsole连接到服务器上的jmx端口时,我可以看到所有kafka指标。你以前遇到过吗? – Rish
我会使用jolokia java代理而不是战争。 – Nicholas
我尝试运行此文件中所述:java -javaagent:jolokia-jvm-1.3.7-agent.jar = port = 7777,host = localhost 我得到这个异常:线程“main”java.lang中的异常。 reflect.InvocationTargetException 引起:java.lang.NumberFormatException:对于输入字符串:“7777 host = localhost” 本机方法中的致命错误:处理-javaagent失败。我遗漏了大部分堆栈跟踪。 – Rish
关于你椒配置的C#的客户,也许你需要完全限定在坛路矿看起来像这样和作品:
export JOLOKIA_HOME=/libs/java/jolokia/1.3.7
export JOLOKIA_JAR=$JOLOKIA_HOME/jolokia-jvm-1.3.7-agent.jar
export KAFKA_OPTS="-javaagent:$JOLOKIA_JAR=port=7778,host=* $KAFKA_OPTS"
当我在非守护启动卡夫卡模式,它打印此:
I> No access restrictor found, access to any MBean is allowed
Jolokia: Agent started with URL http://10.8.36.121:7778/jolokia/
然后我指出我的浏览器http://localhost:7778/jolokia/search/:和获取:
{
"request": {
"mbean": "*:*",
"type": "search"
},
"value": [
"kafka.network:name=ResponseQueueTimeMs,request=ListGroups,type=RequestMetrics",
"kafka.server:delayedOperation=topic,name=PurgatorySize,type=DelayedOperationPurgatory",
"kafka.server:delayedOperation=Fetch,name=NumDelayedOperations,type=DelayedOperationPurgatory",
"kafka.network:name=RemoteTimeMs,request=Heartbeat,type=RequestMetrics",
<-- SNIP -->
"kafka.network:name=LocalTimeMs,request=Offsets,type=RequestMetrics"
],
"timestamp": 1504188793,
"status": 200
}
谢谢。我实际上是在Windows服务器上运行kafka。因此,我为“KAKFA_OPS”设置了一个环境变量并重新启动了kafka,但仍然无法工作。我需要有其他东西来运行代理jar吗?仅供参考我已安装JRE – Rish
这不是在.NET中,但我用椒一些基本的监控和它工作正常。 没试过INetMXConnector,但看着github上的代码,你的错误出现,你需要一个app.config,它的工作 - 看样品这里 https://github.com/SzymonPobiega/NetMX/tree/master/Samples/JmxClientDemo https://github.com/SzymonPobiega/NetMX/blob/master/NetMX.Default/MBeanServer.cs#L36 – Treziac