zookeeper监控之JMX篇
来源:互联网 发布:你的名字发绳淘宝 编辑:程序博客网 时间:2024/04/28 20:44
最近zookeeper老是故障不断,所以需要一个zookeeper监控,来保证线上环境运行正常。
目前zookeeper获取监控指标有两种方式:
1、通过JMX来监控;
2、通过zookeeper自带的四字命令来获取各种监控指标。
现在我们来介绍第一种,通过JMX来监控。
JMX监控:
以本机环境为例,首先,在zookeeper安装目录的bin文件夹下,修改zkServer.cmd文件,修改完后如下:
@echo offsetlocalcall "%~dp0zkEnv.cmd"set ZOOMAIN=org.apache.zookeeper.server.quorum.QuorumPeerMain#新添加的内容set JAVA_OPTS=-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=falseecho on#将%JAVA_OPTS%加入执行路径java "-Dzookeeper.log.dir=%ZOO_LOG_DIR%" "-Dzookeeper.root.logger=%ZOO_LOG4J_PROP%" -cp "%CLASSPATH%" %JAVA_OPTS% %ZOOMAIN% "%ZOOCFG%" %*endlocal
1、jconsole监控
双击zkServer.cmd运行zookeeper,通过jconsole就可以监控zookeeper运行情况了,截图如下(红色框中为ObjectName)。
2、java代码监控
java代码监控如下:
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:8999/jmxrmi");JMXConnector connector = JMXConnectorFactory.connect(url);MBeanServerConnection mxBean = connector.getMBeanServerConnection();ObjectName objectName = new ObjectName("org.apache.ZooKeeperService:name0=StandaloneServer_port-1");String[] attrs = { "StartTime", "Version", "TickTime","MinSessionTimeout", "MaxSessionTimeout","NumAliveConnections", "MaxClientCnxnsPerHost","OutstandingRequests", "ClientPort", "PacketsSent","PacketsReceived", "MinRequestLatency", "MaxRequestLatency","AvgRequestLatency" };AttributeList attributes = mxBean.getAttributes(objectName, attrs);for (Object attribute : attributes) {System.out.println(attribute);}System.out.println("-------分隔符-----------");objectName = new ObjectName("org.apache.ZooKeeperService:name0=StandaloneServer_port-1,name1=InMemoryDataTree");attributes = mxBean.getAttributes(objectName, new String[] {"LastZxid", "WatchCount", "NodeCount" });for (Object attribute : attributes) {System.out.println(attribute);}
2.1、获取objectName
大家可能想知道,如何查看objectName名字,翻看zookeeper官方文档,链接如下:http://zookeeper.apache.org/doc/trunk/zookeeperJMX.html。
以下内容直接复制官网,就不翻译了。
This table details JMX for a standalone server. Typically standalone is only used in development situations.
可以看到Mbean ObjectName为StandaloneServer_port<#>和InMemoryDataTree,其中StandaloneServer_port<#>的<#>为zookeeper的myid值,如果只有单台运行,则默认为1。
2.2、获取attribute数组
JMXServiceURL url = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:8999/jmxrmi");JMXConnector connector = JMXConnectorFactory.connect(url);MBeanServerConnection mxBean = connector.getMBeanServerConnection();ObjectName objectName = new ObjectName("org.apache.ZooKeeperService:name0=StandaloneServer_port-1");MBeanInfo beanInfo = mxBean.getMBeanInfo(objectName);MBeanAttributeInfo[] infos = beanInfo.getAttributes();for (int i = 0; i < infos.length; i++) {System.out.println("属性名称:" + infos[i].getName());}
下一篇将介绍通过zookeeper的四字命令来进行监控。
1 0
- zookeeper监控之JMX篇
- 通过JMX监控Zookeeper
- 使用jmx 监控zookeeper
- 通过 JMX 监控Zookeeper
- zookeeper——JMX监控
- JMX监控Zookeeper状态Java API
- JMX监控Zookeeper状态Java API
- Zabbix之JMX监控Tomcat
- jmx 监控
- zabbix之通过jmx监控tomcat
- Zookeeper监控之bigdata1taokeeper-monitor
- apache kafka系列之jmx监控指标参数
- JMX实现远程服务器Tomcat系统监控之二
- JMX实现远程服务器Tomcat系统监控之三
- Java之——使用JMX监控Tomcat
- hadoop源码解析一之hadoop jmx 监控
- Java之——使用JMX监控Tomcat
- 利用JMX 监控 tomcat
- jQuery.extend
- Unity教程之- UGUI分页效果的实现
- C#中数组、ArrayList和List三者的区别
- 解决系统的badgeView
- Android开发四大组件
- zookeeper监控之JMX篇
- ubuntu 14.04登陆界面root登陆
- android多渠道打包
- Mac安装cordova
- vxworks任务间通信
- 【LeetCode】100. Same Tree(水)
- 球面投影 (立体和柱面的投影效果)
- spring整合hibernate
- pkg-config设置