Java Zookeeper的JMX客户端
我正在尝试为Zookeeper实例编写一个用于定制监控web应用程序的JMXJava客户端。根据文件中的规定 在本练习中,我使用以下参数在Windows 7 Enterprise上以独立模式本地运行Zookeeper intance:-Java Zookeeper的JMX客户端,java,jmx,apache-zookeeper,jmxmp,Java,Jmx,Apache Zookeeper,Jmxmp,我正在尝试为Zookeeper实例编写一个用于定制监控web应用程序的JMXJava客户端。根据文件中的规定 在本练习中,我使用以下参数在Windows 7 Enterprise上以独立模式本地运行Zookeeper intance:- -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.local.only=false -Dcom.su
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=10010
-Dzookeeper.jmx.log4j.disable=false
运行zookeeper intance后,我能够使用正确显示所有统计信息的连接到JMX bean:-
问题
尝试使用自己的代码连接时,我收到java.net.ConnectException:连接被拒绝:connect
错误。我正在尝试的代码:-
public static void main(String[] args) throws Exception {
// service:jmx:rmi:///jndi/rmi://#{host}:#{port}/jmxrmi
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:10010/jmxrmi");
// This throws java.net.ConnectException !!!
JMXConnector jmxConnector = JMXConnectorFactory.connect(url);
MBeanServerConnection mbeanServerConnection = jmxConnector.getMBeanServerConnection();
ObjectName mbeanName = new ObjectName("org.apache.ZooKeeperService:name0=StandaloneServer_port2181");
ZooKeeperServerMXBean newProxyInstance = MBeanServerInvocationHandler.newProxyInstance(mbeanServerConnection,
mbeanName, ZooKeeperServerMXBean.class, true);
System.out.println("Created zoo mbean proxy");
System.out.println(newProxyInstance.getAvgRequestLatency());
}
在尝试使用Java Visual VM进行连接时遇到相同的问题
使用Java代码连接Zookeeper MBean的正确方法是什么
更新1
有一个4年未解决的问题似乎在说有两种端口发挥作用——jmx端口和rmi端口。rmi端口是随机生成的&我想这就是创建连接时所需要的
但是JConsole是如何连接的呢
更新2
这说明通过RMI协议与远程JMX服务器通信可能是个问题,建议改用JMXMP(JMX消息传递协议)。
现在我该怎么做呢?您想要获得什么样的指标?这不正是我们应该做的吗?@Tombart-是的。但是我们不确定是否使用它,原因有很多-1。我们已经有了一个基于web的监控/管理应用程序,更喜欢在那里插入ZK管理。2.参展商gihub页面上写着:“参展商现在独立了!”。看起来它现在没有得到积极的支持/维护。3.4.参展商的用户界面看起来并不吸引人——至少对我来说是这样。我们正在寻找与我们现有的一致的UI/UX。@Tombart-我想要的度量/功能-ZK ensemble info,对于屏幕截图中提到的每个集成成员数据点,能够重置统计信息/延迟,更改计时时间。大多数监控插件用于获取统计信息
echo mntr | nc localhost 2181
。是的,在不改变方向盘的情况下改进参展商的绝佳机会。@Tombart-是的。我正在切换回使用4个字母的命令(尽管解析它们的响应很痛苦)。该文件称3.5将配备嵌入式jetty,该jetty将公开端点以执行4LC。希望响应是json,这可能会简化解析部分。