Zabbix通过JMX监控java中间件.docx
《Zabbix通过JMX监控java中间件.docx》由会员分享,可在线阅读,更多相关《Zabbix通过JMX监控java中间件.docx(64页珍藏版)》请在冰豆网上搜索。
Zabbix通过JMX监控java中间件
Zabbix通过JMX方式监控java中间件
Zabbix2.0添加了支持用于监控JMX应用程序的服务进程,称为“Zabbix-Java-gateway”;它是用java写的一个程序。
工作原理:
zabbix_server想知道一台主机上的特定的JMX值时,它向Zabbix-Java-gateway询问,而Zabbix-Javagateway使用“JMXmanagementAPI”去查询特定的应用程序,而前提是应用程序这端在开启时需要“-Dcom.sun.management.jmxremote”参数来开启JMX查询就行了。
Zabbixserver有一个特殊的进程用来连接Java-gateway叫StartJavaPollers;Java-gateway通过配置文件中START_POLLERS参数设置启动多个线程,在zabbix服务器这边如果一个连接所用时间超过Timeout,将会被中断,但是Java-gateway将继续从JMXcounter取数据。
所以
StartJavaPollers设置的值要小于等于START_POLLERS设置的值。
Zabbix-Java-gateway就相当于一个代理。
一、zabbix的JMX架构
二、服务端配置(zabbix_java_gateway)
2.1.确认已安装jdk
#java-version
javaversion"1.6.0_22"
Java(TM)SERuntimeEnvironment(build1.6.0_22-b06)
JavaHotSpot(TM)64-BitServerVM(build20.12-b01,mixedmode)
出现此界面,说面jdk安装成功
2.2.安装zabbix-Java-gateway
软件包在zabbix自带的有,目前暂时只支持从zabbix软件包中获得。
安装Javagateway如果原来已经安装zabbix,只需要再添加以下zabbix-java
#tarzxvfzabbix-2.2.0.tar.gz
#cdzabbix-2.2.0
#./configure--enable-java--prefix=/opt/zabbix_java
#make&&makeinstall
2.3.修改Java-gateway的配置文件
在配置文件settings.sh中,可以配置以下参数:
LISTEN_IP="0.0.0.0"#监听地址
LISTEN_PORT=10052#监听端口
START_POLLERS=5#开启的工作线程数(必须大于等于后面zabbix_server.conf文件的StartJavaPollers参数)
2.4.修改zabbix_server的配置文件
为了支持java-gateway,zabbix_server或zabbix_proxy的配置文件中有以下内容需要配置:
JavaGateway=127.0.0.1#JavaGateway服务器地址,zabbix_server与zabbix_java_gateway在同一台主机
JavaGatewayPort=10052#端口
StartJavaPollers=5#从javaGateway采集数据的进程数
2.5.启动java-gateway
#cd /opt/zabbix_java_gateway/sbin/zabbix_java
#./startup.sh
#netstat–tulnp|grep10052
tcp 0 0*:
10052 *:
* LISTEN 5011/java
2.6.重启zabbix_server
#servicezabbix_serverrestart
zabbix_java_gateway就配置好了。
三、客户端配置
3.1.添加参数开启JMX
使用JMX前需要先开启JMX,默认是关闭的,在启动JAVA程序时,加入下面的参数,就可以开启JMX:
想更多的了解这些参数,可以参考下面这个链接:
3.2.开启JMX,监控tomcat
在tomcat下载页面Extras类别中下载JMX-Remote.jar二进制包。
放在tomcat/lib下面。
#mvcatalina-jmx-remote.jar /webapp/tomcat6/lib/
3.2.1.添加参数,开启JMX
修改tomcat/bin目录下catalina.sh,添加以下内容:
CATALINA_OPTS="-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.authenticate=false-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=客户端ip地址"
3.2.2.启动tomcat
#cd/usr/local/tomcat/bin/
#./startup.sh
下载cmdline-jmxclient-0.10.3.jar文件测试是否能够取得数据
#java-jarcmdline-jmxclient-0.10.3.jar-localhost:
12345java.lang:
type=MemoryNonHeapMemoryUsage
01/26/201411:
55:
55+0800org.archive.jmx.ClientNonHeapMemoryUsage:
committed:
52690944
init:
24313856
max:
136314880
used:
52454776
3.2.3.导入模板
成功后可以看到模板customTomcat(有朋友提供了一个更好的tomcat模板)
以获取tomcat使用内存模板为例如下图
关联模板完成后可见:
3.2.4.添加端口
设置jmxip地址及端口
成功后会显示JMX图标变绿,表示可用
3.2.5.出图
3.3.开启JMX,监控weblogic
3.3.1.添加参数,开启JMX
编辑WL_DOMAIN_HOME/bin/setDomainEnv.sh,在文件结尾加入下面几行:
#vi/root/Oracle/Middleware/user_projects/domains/base_domain/bin/setDomainEnv.sh
JAVA_OPTIONS="${JAVA_OPTIONS}-Djava.rmi.server.hostname=客户端ip地址"
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=端口"#默认12345
JAVA_OPTIONS="${JAVA_OPTIONS}-Dcom.sun.management.jmxremote.ssl=false"
JAVA_OPTIONS="${JAVA_OPTIONS}-Dcom.sun.management.jmxremote.authenticate=false"
exportJAVA_OPTIONS
3.3.2.启动weblogic
#./stopWebLogic.sh
#./startWebLogic.sh
#ps-ef|grepAdminServer|grep-vgrep
root2955229505019:
45?
00:
00:
22/usr/java/jdk1.6.0_30/bin/java-client-Xms256m-Xmx512m-XX:
CompileThreshold=8000-XX:
PermSize=128m-XX:
MaxPermSize=256m-Dweblogic.Name=AdminServer-Djava.security.policy=/root/Oracle/Middleware/wlserver_10.3/server/lib/weblogic.policy-Xverify:
none-da-Dplatform.home=/root/Oracle/Middleware/wlserver_10.3-Dwls.home=/root/Oracle/Middleware/wlserver_10.3/server-Dweblogic.home=/root/Oracle/Middleware/wlserver_10.3/server-Dweblogic.management.discover=true-Dwlw.iterativeDev=-Dwlw.testConsole=-Dwlw.logErrorsToConsole=-Dweblogic.ext.dirs=/root/Oracle/Middleware/patch_wls1036/profiles/default/sysext_manifest_classpath:
/root/Oracle/Middleware/patch_ocp371/profiles/default/sysext_manifest_classpath-Djava.rmi.server.hostname=172.28.6.246-Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder-Dcom.sun.management.jmxremote=true-Dcom.sun.management.jmxremote.port=12345-Dcom.sun.management.jmxremote.ssl=false-Dcom.sun.management.jmxremote.authenticate=falseweblogic.Server
3.3.3.添加模板
关联自带模板
Template—JMX—Generic
设置jmxip地址及端口
完成成功后会显示JMX图标变绿,表示可用
3.3.4.出图
四、几种常用的JAVA容器的JMX开启方式
4.1.ApacheTomcat
如果是windows版本,编辑TOMCAT_HOME/bin/catalina.bat,在开头加入下面几行:
setCATALINA_OPTS=%CATALINA_OPTS%-Djava.rmi.server.hostname=JMX_HOST
setCATALINA_OPTS=%CATALINA_OPTS%-Djavax.management.builder.initial=
setCATALINA_OPTS=%CATALINA_OPTS%-Dcom.sun.management.jmxremote=true
setCATALINA_OPTS=%CATALINA_OPTS%-Dcom.sun.management.jmxremote.port=JMX_PORT
setCATALINA_OPTS=%CATALINA_OPTS%-Dcom.sun.management.jmxremote.ssl=false
setCATALINA_OPTS=%CATALINA_OPTS%-Dcom.sun.management.jmxremote.authenticate=false
如果是linux版本,编辑TOMCAT_HOME/bin/catalina.sh,在开头加入下面几行:
CATALINA_OPTS=${CATALINA_OPTS}-Djava.rmi.server.hostname=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
CATALINA_OPTS=${CATALINA_OPTS}-Dcom.sun.management.jmxremote.ssl=false
CATALINA_OPTS=%{CATALINA_OPTS}-Dcom.sun.management.jmxremote.authenticate=false
注意JMX_HOST为tomcat的主机名或IP地址,JMX_PORT为JMX端口,通常使用12345,然后重启tomcat,JMX就开启了。
4.2.IBMWebSphereAS
进入WebSphereAdministrativeConsoleopenServers→ServerTypes→WebSphereapplicationservers→WAS_SERVER_NAME→JavaandProcessManagement→Processdefinition→JavaVirtualMachine.
在“GenericJVMarguments”增加下面环境变量:
-Djavax.management.builder.initial=
然后再进入WebSphereAdministrativeConsole,openServers→ServerTypes→WebSphereapplicationservers→WAS_SERVER_NAME→JavaandProcessManagement→Processdefinition→JavaVirtualMachine→Customproperties.
增加下面几个环境变量:
Name:
java.rmi.server.hostname
Value:
JMX_HOST
Name:
javax.management.builder.initial
Value:
none
Name:
com.sun.management.jmxremote
Value:
true
Name:
com.sun.management.jmxremote.port
Value:
JMX_PORT
Name:
com.sun.management.jmxremote.ssl
Value:
false
Name:
com.sun.management.jmxremote.authenticate
Value:
false
应用更改,重启应用就开启了。
4.3.OracleGlassFishAS
进入GlassFishConsole,openGAS_CONFIG→JVMSettings→JVMOptions.
加入下面的环境变量到“JVMoptions”:
Value:
-Djava.rmi.server.hostname=JMX_HOST
Value:
-Dcom.sun.management.jmxremote=true
Value:
-Dcom.sun.management.jmxremote.port=JMX_PORT
Value:
-Dcom.sun.management.jmxremote.ssl=false
Value:
-Dcom.sun.management.jmxremote.authenticate=false
重启就开启了。
4.4.OracleWebLogic11g(10.23.x)and12c(12.1.x)
对于windows的版本,编辑WL_DOMAIN_HOME/bin/setDomainEnv.cmd,在文件结尾加入下面几行:
setJAVA_OPTIONS=%JAVA_OPTIONS%-Djava.rmi.server.hostname=JMX_HOST
setJAVA_OPTIONS=%JAVA_OPTIONS%-Djavax.management.builder.initial=
weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder
setJAVA_OPTIONS=%JAVA_OPTIONS%-Dcom.sun.management.jmxremote=true
setJAVA_OPTIONS=%JAVA_OPTIONS%-Dcom.sun.management.jmxremote.port=JMX_PORT
setJAVA_OPTIONS=%JAVA_OPTIONS%-Dcom.sun.management.jmxremote.ssl=false
setJAVA_OPTIONS=%JAVA_OPTIONS%-Dcom.sun.management.jmxremote.authenticate=false
对于Linux的版本,编辑WL_DOMAIN_HOME/bin/setDomainEnv.sh,在文件结尾加入下面几行:
JAVA_OPTIONS="${JAVA_OPTIONS}-Djava.rmi.server.hostname=客户端ip地址"
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"
exportJAVA_OPTIONS
注意JMX_HOST为weblogic的主机名或IP地址,JMX_PORT为JMX端口,通常使用12345,然后重启weblogic,JMX就开启了。
如果你的应用不是布署在默认的应用服务器上,而是新增了一个应用服务器布署的话,应该使用下面这个方法:
进入weblogic控制台->环境->服务器->”你新增的服务器”->配置->服务器启动。
在“参数”的输入框内输入:
-Dcom.sun.management.jmxremote.port=JMX_PORT
-Djava.rmi.server.hostname=JMX_HOST-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djavax.management.builder.initial=
weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder
然后保存,激活更改,再重启这个应用服务器就开启JMX了。
五、测试和查看JMX的配置和状态信息
JMX开启后,我们就可以通过相关的工具去查看JMX内的状态信息了,通常可以使用JDK的jconsole程序查看,对于weblogic,它自带了一些工具也可以查看,可以参考官方文档(
5.1.使用JDK的jconsole程序查看
jconsole在JDK_HOME/bin下面,打开它,输入服务器的IP和端口就可以连接了:
com.bea下面都是Weblogic相关的信息,其它为JVM级别的信息。
应用服务器下的ServerRuntime这个Mbeans就是WEBLOGIC这个应用服务器的实时状态息。
5.2.使用cmdline-jmxclient-0.10.3.jar工具查看
cmdline-jmxclient-0.10.3.jar是一个非常方便的查看程序,它的下载地址为:
http:
//crawler.archive.org/cmdline-jmxclient/
使用方法:
Usage:
java-jarcmdline-jmxclient.jarUSER:
PASSHOST:
PORT[BEAN][COMMAND]
如查看服务器所有Mbeans的信息:
java-jarcmdline-jmxclient-0.10.3.jar–127.0.0.1:
12345
这个命令会输出所有的Mbeans,它能方便我们查找需要的Mbeans,如我们相查找和JDBC相关的Mbens,可以使用命令:
java-jarcmdline-jmxclient-0.10.3.jar–127.0.0.1:
12345|grepJDBC
如查看JDBCConnectionPoolRuntime的信息:
java-jarcmdline-jmxclient-0.10.3.jar- 127.0.0.1:
12345com.bea:
Name=fftdb,
ServerRuntime=shfft,Type=JDBCConnectionPoolRuntime
java-jarcmdline-jmxclient-0.10.3.jar–127.0.0.1:
12345com.bea:
Name=fftdb,
ServerRuntime=shfft,Type=JDBCConnectionP