概述: JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。

使用zabbix监控weblogic是通过JMX agent(zabbix-java-gateway) 获取JVM MBean 信息。

环境: Centos7 + Zabbix 3.4 + Weblogic 10.3.6

一、部署zabbix-server ,zabbix-agent, zabbix-java-gateway

1. 部署LAMP或LNMP 环境
	此处略去,网上部署教程很多
2. 安装zabbix server , zabbix agent , zabbix-java-gateway
	yum install epel-release
	rpm --import http://repo.zabbix.com/RPM-GPG-KEY-ZABBIX
	rpm -Uv http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
	yum install zabbix-server zabbix-agent zabbix-java-gateway zabbix-web-mysql
	
	也可以通过源码方式安装参考官方文档
	
3. 配置zabbix-server 支持JMX
# grep '^[^#]' /etc/zabbix/zabbix_server.conf

	LogFile=/var/log/zabbix/zabbix_server.log
	LogFileSize=0
	PidFile=/var/run/zabbix/zabbix_server.pid
	SocketDir=/var/run/zabbix
	DBName=zabbix
	DBUser=zabbix
	DBPassword=zabbix
	DBPort=3306
	JavaGateway=192.168.154.130
	JavaGatewayPort=10052
	StartJavaPollers=5
	SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
	Timeout=4
	AlertScriptsPath=/usr/lib/zabbix/alertscripts
	ExternalScripts=/usr/lib/zabbix/externalscripts
	LogSlowQueries=3000
	
4. 配置zabbix_java_gateway.conf  
# grep '^[^#]' /etc/zabbix/zabbix_java_gateway.conf

LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=5
TIMEOUT=3

配置完成后就启动zabbix-server 和 zabbix-java-gateway了
# systemctl start zabbix-server.service
# systemctl start zabbix-java-gateway.service

二、开始JMX

使用JMX前需要先开启JMX,默认是关闭的,在启动JAVA程序时,如何开始请参考官方文档 https://docs.oracle.com/javase/1.5.0/docs/guide/management/agent.html

下面介绍几种常用的JAVA容器的JMX开启方式:

  1. Tomcat 编辑TOMCAT_HOME/bin/catalina.sh 在开头加入如下几行

CATALINA_OPTS="${CATALINA_OPTS} -Djava.rmi.server.hostname=JMX_HOST" # 修改 JMX_HOST CATALINA_OPTS="${CATALINA_OPTS} -Djavax.management.builder.initial="
CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote=true"
CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote.port=JMX_PORT" # 修改JMS PORT CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote.ssl=false"
CATALINA_OPTS="${CATALINA_OPTS} -Dcom.sun.management.jmxremote.authenticate=false"

重启tomcat 服务就可以了

  1. Weblogic 编辑WL_DOMAIN_HOME/bin/setDomainEnv.cmd,在文件结尾加入下面几行

JAVA_OPTIONS="${JAVA_OPTIONS} -Djava.rmi.server.hostname=JMX_HOST" JAVA_OPTIONS="${JAVA_OPTIONS} -Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder" JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote=true" JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.port=JMX_PORT" JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.ssl=false" JAVA_OPTIONS="${JAVA_OPTIONS} -Dcom.sun.management.jmxremote.authenticate=false"

重启weblogic 服务就可以了

三、测试和查看JMX的配置和状态信息

JMX开启后,我们就可以通过相关的工具去查看JMX内的状态信息了,通常可以使用JDK的jconsole程序查看,对于weblogic它自带了一些工具也可以查看,可以参考官方文档。 http://docs.huihoo.com/oracle/middleware/fusion/11g/apirefs.1111/e13951/core/index.html 另外还有一个叫cmdline-jmxclient-0.10.3.jar的工具也可以非常方便的查看这些信息

本文使用cmdline-jmxclient-0.10.3.jar工具查看

java -jar jmxcmd.jar - JMX_HOST:JMX_PORT | grep JDBC 查看JDBC 有哪些MBean,下面简单列出一些MBean

com.bea:Name=library,ServerRuntime=paic_App01,Type=JDBCConnectionPoolRuntime com.bea:Name=paic_App01,ServerRuntime=paic_App01,Type=JDBCServiceRuntime

java -jar jmxcmd.jar - JMX_HOST:JMX_PORT com.bea:Name=library,ServerRuntime=paic_App01,Type=JDBCConnectionPoolRuntime 查看JDBCConnectionPoolRuntime 下有哪些 Attributes

四、配置zabbix Item

  1. 配置一个 jmx interface

  2. 配置一个weblogic iteam

JMX Iteam 配置格式:jmx[object_name,attribute_name] 这里的object_name 就是java -jar jmxcmd.jar - JMX_HOST:JMX_PORT 查询出来的MBean 如com.bea:Name=library,ServerRuntime=paic_App01,Type=JDBCConnectionPoolRuntime

attribute_name 就是 java -jar jmxcmd.jar - JMX_HOST:JMX_PORT com.bea:Name=library,ServerRuntime=paic_App01,Type=JDBCConnectionPoolRuntime 查询出来的属性

完整的例子:jmx["com.bea:Name=ThreadPoolRuntime,ServerRuntime=App01,Type=ThreadPoolRuntime","QueueLength"]

至此 zabbix 监控 weblogic 配置完成, 此次配置也是参考了很多文档,折腾了一个中午,所以写个博客记录一下配置过程。