设为首页 收藏本站
查看: 8521|回复: 0

[经验分享] 用Zabbix通过JMX方式监控weblogic

  [复制链接]
累计签到:2 天
连续签到:1 天
发表于 2016-1-18 09:05:14 | 显示全部楼层 |阅读模式
JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。
上面的介绍有点绕,我是这么简单粗暴地理解的:JMX之于JVM或JAVA,相当于SNMP之于OS。只是JMX比SNMP更强大,除了监控外,还可以通过JMX对JAVA程序进行管理,如更改一些配置等。
Zabbix已经集成JMX,可以用Zabbix通过JMX监控JVM,TOMCAT,Weblogic,Jboss等。要使用Zabbix监控Weblogic,我们先要了解Zabbix的JMX监控架构,Weblogic的JMX信息,最后才能去实现怎么去配置监控和报警。
1. Zabbix 的JMX监控架构
QQ截图20160118090502.jpg 如上面的Zabbix JMX监控架构图所示,Zabbix是使用了一个叫做Java Gateway的应用去监控JMX的。Java Gateway集成在zabbix官方开发发布的。
2. Zabbix server及Java gateway的配置
rpm -ivh http://repo.zabbix.com/zabbix/2. ... .2-1.el6.noarch.rpm
yum -y install zabbix-java-gateway zabbix-web-mysql zabbix-server-mysql
也可以通过源码安装,请参考官方文档。
zabbix-server的配置我就不介绍了,我们着重看下与java-gateway相关的配置:
zabbix-java-gateway的配置文件是/etc/zabbix/zabbix_java_gateway.conf,配置文件很简单,如下:
# 监听地址
LISTEN_IP=”0.0.0.0″
# 监听端口
LISTEN_PORT=10052
# PID_FILE文件
PID_FILE=”/var/run/zabbix/zabbix_java.pid”
# 开启的工作线程数
START_POLLERS=5
启动zabbix-java-gateway:
service zabbix-java-gateway start
再修改zabbix-server的配置,编辑/etc/zabbix/zabbix_server.conf ,修改下面几个参数:
# JavaGateway的服务器IP地址
JavaGateway=192.168.89.204
# JavaGateway的服务端口
JavaGatewayPort=10052
# 从javaGateway采集数据的进程数
StartJavaPollers=5
配置文件修改后,重启zabbix-server:
service zabbix-server restart
好,现在zabbix-java-gateway就配置好了。
3. 开启JMX
使用JMX前需要先开启JMX,默认是关闭的,在启动JAVA程序时,加入下面的参数,就可以开启JMX:
enableJMX.jpg 想更多的了解这些参数,可以参考下面这个链接:
http://docs.oracle.com/javase/1.5.0/docs/guide/management/agent.html
下面介绍几种常用的JAVA容器的JMX开启方式:
1)Apache Tomcat
如果是windows版本,编辑TOMCAT_HOME/bin/catalina.bat,在开头加入下面几行:
set CATALINA_OPTS=%CATALINA_OPTS% -Djava.rmi.server.hostname=JMX_HOST
set CATALINA_OPTS=%CATALINA_OPTS% -Djavax.management.builder.initial=
set CATALINA_OPTS=%CATALINA_OPTS% -Dcom.sun.management.jmxremote=true
set CATALINA_OPTS=%CATALINA_OPTS% -Dcom.sun.management.jmxremote.port=JMX_PORT set CATALINA_OPTS=%CATALINA_OPTS% -Dcom.sun.management.jmxremote.ssl=false
set CATALINA_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就开启了。
2)IBM WebSphere AS
进入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”增加下面环境变量:
-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.
增加下面几个环境变量:
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

应用更改,重启应用就开启了。
3)Oracle GlassFish AS
进入GlassFish Console, open GAS_CONFIG → JVM Settings → JVM Options.
加入下面的环境变量到“JVM options”:
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)Oracle WebLogic 11g (10.23.x) and 12c (12.1.x)
对于windows的版本,编辑WL_DOMAIN_HOME/bin/setDomainEnv.cmd,在文件结尾加入下面几行:
set JAVA_OPTIONS=%JAVA_OPTIONS% -Djava.rmi.server.hostname=JMX_HOST
set JAVA_OPTIONS=%JAVA_OPTIONS% -Djavax.management.builder.initial=weblogic.management.jmx.mbeanserver.WLSMBeanServerBuilder set JAVA_OPTIONS=%JAVA_OPTIONS% -Dcom.sun.management.jmxremote=true
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dcom.sun.management.jmxremote.port=JMX_PORT
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dcom.sun.management.jmxremote.ssl=false
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dcom.sun.management.jmxremote.authenticate=false
对于Linux的版本,编辑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” export JAVA_OPTIONS
然后重启weblogic,就开启了。
需要注意的是,如果你的应用不是布署在默认的应用服务器上,而是新增了一个应用服务器布署的话,应该使用下面这个方法:
进入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
weblogic_jmx.jpg 然后保存,激活更改,再重启这个应用服务器就开启JMX了。
4. 测试和查看JMX的配置和状态信息
JMX开启后,我们就可以通过相关的工具去查看JMX内的状态信息了,通常可以使用JDK的jconsole程序查看,对于weblogic,它自带了一些工具也可以查看,可以参考官方文档(http://docs.huihoo.com/oracle/middleware/fusion/11g/web.1111/e13715/nav_edit.htm#WLSTG175),另外还有一个叫cmdline-jmxclient-0.10.3.jar的工具也可以非常方便的查看这些信息。
1) 使用JDK的jconsole程序查看
jconsole在JDK_HOME/bin下面,打开它,输入服务器的IP和端口就可以连接了。如图: jconsole2.jpg jconsole3.jpg jconsole4.jpg jconsole5.jpg
com.bea下面都是Weblogic相关的信息,其它为JVM级别的信息。 jconsole6.jpg 应用服务器下的ServerRuntime这个Mbeans就是WEBLOGIC这个应用服务器的实时状态信息。
2)使用cmdline-jmxclient-0.10.3.jar工具查看
cmdline-jmxclient-0.10.3.jar是一个非常方便的查看程序,它的下载地址为:http://crawler.archive.org/cmdline-jmxclient/
使用方法:
Usage: java -jar cmdline-jmxclient.jar USER:PASS HOST:PORT [BEAN] [COMMAND]
如查看服务器所有Mbeans的信息:
java -jar cmdline-jmxclient-0.10.3.jar – 127.0.0.1:12345
这个命令会输出所有的Mbeans,它能方便我们查找需要的Mbeans,如我们相查找和JDBC相关的Mbens,可以使用命令:
java -jar cmdline-jmxclient-0.10.3.jar – 127.0.0.1:12345 | grep JDBC
如查看JDBCConnectionPoolRuntime的信息:
java -jar cmdline-jmxclient-0.10.3.jar – 127.0.0.1:12345 com.bea:Name=fftdb,ServerRuntime=shfft,Type=JDBCConnectionPoolRuntime
java -jar cmdline-jmxclient-0.10.3.jar – 127.0.0.1:12345 com.bea:Name=fftdb,ServerRuntime=shfft,Type=JDBCConnectionPoolRuntime ActiveConnectionsCurrentCount
其中com.bea:Name=fftdb,ServerRuntime=shfft,Type=JDBCConnectionPoolRuntime是Mbeans名,ActiveConnectionsCurrentCount为这个Mbeans下的一个属性。
5. Weblogic的常用性能指标
JMSRuntime
JMSServersCurrentCount 返回当前JMS服务的连接数
ConnectionsCurrentCount 返回本JMS服务器上当前的连接数
JMSServersHighCount 返回自服务器启动后JMS服务的最大连接数
ConnectionsHighCount 返回本JMS服务器自上次重置后的最大连接数
JVMRuntime
HeapSizeCurrent 返回当前JVM堆中内存数,单位时字节
HeapFreeCurrent 返回当前JVM堆中空闲内存数,单位时字节
ExecuteQueueRuntime
ExecuteThreadCurrentIdleCount 返回队列中当前空闲线程数
PendingRequestOldestTime 返回队列中最长的等待时间
PendingRequestCurrentCount 返回队列中等待的请求数
Queue Length 队列长度
JDBCConnectionPoolRuntime
WaitingForConnectionHighCount    返回本JDBCConnectionPoolRuntimeMBean 上最大等待连接数
WaitingForConnectionCurrentCount 返回当前等待连接的总数
MaxCapacity 返回JDBC池的最大能力
WaitSecondsHighCount 返回等待连接中的最长时间等待者的秒数
ActiveConnectionsCurrentCount 返回当前活动连接总数
ActiveConnectionsHighCount 返回本JDBCConnectionPoolRuntimeMBean 上最大活动连接数
要想了解更多Weblogic的各种运行时Mbeans信息,请参考官方文档:http://docs.huihoo.com/oracle/middleware/fusion/11g/apirefs.1111/e13951/core/index.html
6. 添加Weblogic监控项到Zabbix
新增监控项,在key内填入:
jmx[“com.bea:Name={$JDBC_NAME},ServerRuntime={$JDBC_SERVER},Type=JDBCConnectionPoolRuntime”,ActiveConnectionsCurrentCount]
其中com.bea:Name={$JDBC_NAME},ServerRuntime={$JDBC_SERVER},Type=JDBCConnectionPoolRuntime为Mbeans,ActiveConnectionsCurrentCount为属性项。
zabbix1.jpg
注意Type内应该选择JMX Agent。 zabbix2-1024x448.jpg
最后看一张做出来的Weblogic JDBC连接池监控图:
weblogin_monitor-1024x331.jpg


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-165785-1-1.html 上篇帖子: Linux(CentOS)安装weblogic 下篇帖子: linux安装配置weblogic10 监控
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表