本主题为通过zabbix监控中间件。
Zabbix 基于JMX agent(zabbix-java-gateway) 获取JVM MBean 信息。
Zabbix Agent安装
注意:如果您希望监控目标主机的操作系统相关指标,如CPU、内存、文件系统等信息,那么需要在目标主机安装 zabbix agent。
rpm包安装方式
1 | rpm -ivh zabbix-agent-4.0.0-1.1rc2.el7.x86_64 |
源码包安装后打tar包介质–解压安装agent
1 | cd /usr/local |
Zabbix Agent配置
rpm安装配置
rpm安装方式配置文件路径为/etc/zabbix/zabbix_agentd.conf
1 | LogFile=/tmp/zabbix_agentd.log #日志文件路径 |
源码包安装后打tar包介质–配置
配置
源码包安装后打tar包介质-安装方式配置文件路径在解压目录,如:/usr/local/zabbix_agent/etc/zabbix_agentd.conf
1 | LogFile=/tmp/zabbix_agentd.log #日志文件路径 |
添加为服务与启停服务脚本
1 | cd /etc/init.d/ |
脚本内容为:
1 | !/bin/sh |
添加命令
1 | chmod u+x zabbix_agentd |
启停命令
1 | /etc/init.d/zabbix_agentd start |
Zabbix 服务端配置
请确保zabbix server已经配置java gateway,如果您已经配置,可略过此步骤。
配置文件配置
配置zabbix_java_gateway.conf
vi /etc/zabbix/zabbix_java_gateway.conf
1 | LISTEN_IP="0.0.0.0" |
配置完成后就可以启动zabbix-server 和 zabbix-java-gateway
1 | systemctl start zabbix-server.service |
配置zabbix/zabbix_server.conf
修改zabbix-server的配置,编辑/etc/zabbix/zabbix_server.conf ,修改下面几个参数:
1 | JavaGateway的服务器IP地址,一般与zabbix server同一台主机,可直接写zabbix server地址 |
配置文件修改后,重启zabbix-server:
1 | systemctl restart zabbix-server.service |
被监控端JVM开启JMX
使用JMX前需要先开启JMX,默认是关闭的,在启动JAVA程序时,如何开始请参考官方文档
https://docs.oracle.com/javase/1.5.0/docs/guide/management/agent.html
下面介绍几种常用中间件JMX开启方式:
Tomcat
Linux
Tomcat 编辑TOMCAT_HOME/bin/catalina.sh 在开头加入如下几行
1 | CATALINA_OPTS="${CATALINA_OPTS} -Djava.rmi.server.hostname=JMX_HOST" # 修改 JMX_HOST |
注意:JMX_HOST为tomcat的主机名或IP地址,JMX_PORT为JMX端口,通常使用12345,然后重启tomcat,JMX就开启了。
Windows
1 | set CATALINA_OPTS="${CATALINA_OPTS} -Djava.rmi.server.hostname=127.0.0.1" |
Weblogic
Weblogic 编辑WL_DOMAIN_HOME/bin/setDomainEnv.cmd,在文件结尾加入下面几行
1 | JAVA_OPTIONS="${JAVA_OPTIONS} -Djava.rmi.server.hostname=JMX_HOST" |
本地环境配置示例:
1 | JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote=true" |
IBM WebSphere
进入WebSphere Administrative Console open Servers → Server Types → WebSphere application servers → WAS_SERVER_NAME → Java and Process Management → Process definition → Java Virtual Machine.
在“Generic JVM arguments”增加下面环境变量:
1 | -Djavax.management.builder.initial= |
然后再进入 WebSphere Administrative Console, open Servers → Server Types → WebSphere application servers → WAS_SERVER_NAME → Java and Process Management → Process definition → Java Virtual Machine → Custom properties.
增加下面几个环境变量:
1 | Name: java.rmi.server.hostname |
应用更改,重启应用就开启了。
Oracle GlassFish
进入GlassFish Console, open GAS_CONFIG → JVM Settings → JVM Options.
加入下面的环境变量到“JVM options”:
1 | Value: -Djava.rmi.server.hostname=JMX_HOST |
重启就开启了。
JMX相关参数注意事项
-Djava.rmi.server.hostname=JMX_HOST
在多网卡主机上,启动weblogic,建议增加-Djava.rmi.server.hostname=JMX_HOST参数,-Djava.rmi.server.hostname= 被监控端Weblogic使用的网卡IP。否则使用jconsole或JRMC、jvisual工具连接时,会报出RMI(java.net.ConnectException: Connection refused: connect错误。
测试和查看JMX的配置和状态信息
基于jmxcmd.jar命令行方式测试
命令行参数建议使用jmxcmd.jar,下载地址如下:
https://sourceforge.net/projects/jmxcmd/
1 | [tomcat@localhost tmp]$ java -jar jmxcmd.jar - 192.168.100.1:8098 > weblogic_mebean.txt |
基于Jconsole测试
Jconsole查看
基于JRMC测试
JRMC查看
Mbean
Weblogic Mbean在线文档:WebLogic Server® MBean Reference
https://docs.oracle.com/middleware/11119/wls/WLMBR/core/index.html
Tomcat Mbean在线文档
http://tomcat.apache.org/tomcat-7.0-doc/monitoring.html
同一主机上监控多个Java进程Key健冲突问题
生产环境中我们经常使用同一台主机来搭建多个Tomcat或Weblogic节点对外提供服务,可是在监控主机时会碰到这样的问题,在被监控主机上使用模板,只能监控其中一个,如果想监控多个实例,我们只能通过添加多个模板来实现。这里提供两种解决方案:
对每个JVM进程当做一台主机
在zabbix 中建立两台主机,jmx接口不同。
缺点,主机监控数据
tomcat1:
tomcat2:
使用空格防止Key健冲突
在同一主机上,zabbix不允键值重复,但是监控的项目是一样的,不可能键值写的不重复,经过几番搜索,找到方法如下:
只要在箭头处添加1个空格就可以,也可以是多个。(注意位置不要错,在逗到后面)
错误方式:
欢迎关注米宝窝,持续更新中,谢谢!
[米宝窝 https://rocklei123.github.io/ ](