JMX类型监控

zabbix服务器配置

zabbix_server.conf:
JavaGateway=10.42.239.219		#JavaGateway的IP
JavaGatewayPort=10052			#JavaGateway监听的端口
StartJavaPollers=20				#获取数据的并发数


zabbix_java_gateway.conf
LISTEN_IP="0.0.0.0"			#监控地址
LISTEN_PORT=10052			#监听端口
START_POLLERS=5				#开启的工作线程数
TIMEOUT=3					#超时

可以在本地使用cmdline-jmxclient-0.10.3.jar 包来测试键来获取值
查看被监控服务器支持的JMX内容
查看10.42.233.22上tomcat当前支持的监控内容:
java -jar /tmp/cmdline-jmxclient-0.10.3.jar - 10.42.233.22:10052
注意第二个 - 前后都是空格

查看java.lang:type=Memory监控项支持的属性
java -jar /tmp/cmdline-jmxclient-0.10.3.jar - 10.42.233.22:10052 java.lang:type=Memory

Attributes:
Verbose: Verbose (type=boolean)
HeapMemoryUsage: HeapMemoryUsage (type=javax.management.openmbean.CompositeData)
NonHeapMemoryUsage: NonHeapMemoryUsage (type=javax.management.openmbean.CompositeData)
ObjectPendingFinalizationCount: ObjectPendingFinalizationCount (type=int)
ObjectName: ObjectName (type=javax.management.ObjectName)
Operations:
gc: gc
Parameters 0, return type=void

查看java.lang:type=Memory HeapMemoryUsage具体值
java -jar /tmp/cmdline-jmxclient-0.10.3.jar - 10.42.233.22:10052 java.lang:type=Memory HeapMemoryUsage

10/16/2018 17:35:48 +0800 org.archive.jmx.Client HeapMemoryUsage:
committed: 1043857408
init: 260017728
max: 3698327552
used: 329089432

监控项中的配置
jmx["java.lang:type=Memory",HeapMemoryUsage.used]
java.lang:type=Threading中属性PeakThreadCount数据

MBean中一般有属性,操作,通知等,对于属性值,zabbix是可以获取到值的,对于操作信息,处于安全考虑,外部是调用不到的,只能在jconsole中来执行方法来获取值,
java -jar /tmp/cmdline-jmxclient-0.10.3.jar - 10.42.233.22:10052 java.lang:type=Threading PeakThreadCount

用jconsole来获取MBean中的操作值
java -jar /tmp/cmdline-jmxclient-0.10.3.jar - 10.42.233.22:10052 java.lang:type=Threading getThreadingCount=参数1,参数2

jconsole连接

方式1 通过ip:port连接
方式2 用过协议连接

问题

1. 启动监控后提示 connect timeout的问题

在生产环境使用javagateway监控中间件 weblogic tomcat等信息的时候,出现connect timeout的问题,问题可能是是网络防火墙的限制

链接文
https://blog.51cto.com/xiumin/1898472
就是说javagateway主机对被监控中间件主机的指定端口发起连接,被控主机在返回数据包的时候是另起的其他端口返回的数据,由于防火墙的限制,回的包被截断

解决:
在中间件配置信息jvm里固定rmi
-Dcom.sun.management.jmxremote=true
-Dcom.sun.management.jmxremote.port=10052
-Dcom.sun.management.jmxremote.rmi.port=10052 跟上方port保持一致,可能是复用同一套连接,不另起端口返回jmx信息,
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=10.42.233.22" #Tomcat所在机器IP地址

原文地址:https://www.cnblogs.com/cizao/p/11481815.html