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就相当于一个代理。
1.zabbix的JMX架构
2服务端配(zabbix_java_gateway)
2.1. 确认已安装jdk
出现此界面,说面jdk安装成功
2.2. 安装zabbix-Java-gateway
软件包在zabbix自带的有,目前暂时只支持从zabbix软件包中获得。
安装Javagateway如果原来已经安装zabbix,只需要再添加以下zabbix-java
2.3. 修改Java-gateway的配置文件
在配置文件 settings.sh 中,可以配置以下参数:
2.4. 修改zabbix_server的配置文件
为了支持java-gateway, zabbix_server 或 zabbix_proxy 的配置文件中有以下内容需要配置:
2.5. 启动java-gateway
2.6. 重启zabbix_server
zabbix_java_gateway就配置好了。
3客户端配置
3.1. 添加参数开启JMX
使用JMX前需要先开启JMX,默认是关闭的,在启动JAVA程序时,加入下面的参数,就可以开启JMX:
想更多的了解这些参数,可以参考下面这个链接:
http://docs.oracle.com/javase/1.5.0/docs/guide/management/agent.html
3.2. 开启JMX,监控tomcat
在 tomcat 下载页面 Extras 类别中下载 JMX-Remote.jar二进制包。放在 tomcat/lib 下面。
1) 添加参数,开启JMX
修改 tomcat/bin 目录下 catalina.sh ,添加以下内容:
2) 启动tomcat
下载cmdline-jmxclient-0.10.3.jar文件测试是否能够取得数据
3) 导入模板
成功后可以看到模板custom Tomcat(有朋友提供了一个更好的tomcat模板)
以获取tomcat使用内存模板为例如下图
关联模板完成后可见:
4) 添加端口
设置jmx ip地址及端口
成功后会显示JMX图标变绿,表示可用
5) 出图
3.3. 开启JMX,监控weblogic
1) 添加参数,开启JMX
编辑WL_DOMAIN_HOME/bin/setDomainEnv.sh,在文件结尾加入下面几行:
2) 启动weblogic
3) 添加模板
关联自带模板
Template—JMX—Generic
设置jmx ip地址及端口
完成成功后会显示JMX图标变绿,表示可用
4几种常用的JAVA容器的JMX开启方式
4.1. Apache Tomcat
如果是windows版本,编辑TOMCAT_HOME/bin/catalina.bat,在开头加入下面几行:
如果是linux版本,编辑TOMCAT_HOME/bin/catalina.sh,在开头加入下面几行:
注意JMX_HOST为tomcat的主机名或IP地址,JMX_PORT为JMX端口,通常使用12345,然后重启tomcat,JMX就开启了。
4.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”增加下面环境变量:
然后再进入 WebSphere Administrative Console, open Servers → Server Types → WebSphere application servers → WAS_SERVER_NAME → Java and Process Management → Process definition → Java Virtual Machine → Custom properties.
增加下面几个环境变量:
应用更改,重启应用就开启了。
4.3. Oracle GlassFish AS
进入GlassFish Console, open GAS_CONFIG → JVM Settings → JVM Options.
加入下面的环境变量到“JVM options”:
重启就开启了。
4.4. Oracle WebLogic 11g (10.23.x) and 12c (12.1.x)
对于windows的版本,编辑WL_DOMAIN_HOME/bin/setDomainEnv.cmd,在文件结尾加入下面几行:
对于Linux的版本,编辑WL_DOMAIN_HOME/bin/setDomainEnv.sh,在文件结尾加入下面几行:
注意JMX_HOST为weblogic的主机名或IP地址,JMX_PORT为JMX端口,通常使用12345,然后重启weblogic,JMX就开启了。
如果你的应用不是布署在默认的应用服务器上,而是新增了一个应用服务器布署的话,应该使用下面这个方法:
然后保存,激活更改,再重启这个应用服务器就开启JMX了。
5测试和查看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的工具也可以非常方便的查看这些信息。
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 -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下的一个属性。
6.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.1. 添加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为属性项。
注意Type内应该选择JMX Agent
最后看一张做出来的Weblogic JDBC连接池监控图:
原文地址是zabbix开源社区
关注公众号
加入社区(备注Zabbix)
Zabbix通过JMX方式监控java中间件的更多相关文章
- 利用VisualVm和JMX远程监控Java进程
自Java 6开始,Java程序启动时都会在JVM内部启动一个JMX agent,JMX agent会启动一个MBean server组件,把MBeans(Java平台标准的MBean + 你自己创建 ...
- Zabbix 通过 JMX 监控 java 进程
参考: [ JMX monitoring ] [ Zabbix Java gateway ] [ JMX Monitoring (Java Gateway) not Working ] [ Monit ...
- zabbix 监控java程序
http://www.tuicool.com/articles/IRnM7f http://transcoder.baidu.com/from=1012852q/bd_page_type=1/ssid ...
- zabbix 基于JMX的Tomcat监控
zabbix 基于JMX的Tomcat监控 一.环境 ubuntu14.04 LTS Java 1.7.0 zabbix 2.4.5 二.安装配置 1.安装JavaGateway 在ubuntu14. ...
- 利用JMX来监控大部分java应用
JMX(JavaManagement Extensions,即Java管理扩展)是一个为应用程序.设备.系统等植入管理功能的框架.JMX可以跨越一系列异构操作系统平台.系统体系结构和网络传输协议,灵活 ...
- 使用JMX Exporter监控Rainbond上的Java应用
场景 Prometheus 社区开发了 JMX Exporter 用于导出 JVM 的监控指标,以便使用 Prometheus 来采集监控数据.当您的 Java 应用部署在Rainbond上后 可通过 ...
- zabbix使用jmx监控tomcat
zabbix监控Tomcat/JVM实例性能(115) – 运维生存时间http://www.ttlsa.com/zabbix/zabbix-use-jmx-monitor-tomcat/ zabbi ...
- JAVA JMX协议监控
JMX协议监控,可通过JMX协议远程监控,实时监控线上jvm情况,并通过平台管理界面进行 展示,可以通过监控实时获得线上服务器运行情况. 可以监控内存.实时线程.共享内存等各种信息. 获取实时线程信息 ...
- zabbix Server 4.0监控Flume关键参数
zabbix Server 4.0监控Flume关键参数 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Flume本身提供了http, ganglia的监控服务.当然我们也可以使用 ...
随机推荐
- Netty学习笔记(五) 使用Netty构建静态网页服务器
昨天在继续完善基于Netty构建的聊天室系统的过程中,发现了一个有意思的知识点,特此拿来做一个简单的静态网页服务器,好好的玩一玩Netty. 但是不管怎么说利用netty实现各种功能的流程都是类似的 ...
- Django 如何获取真实远程客户端IP
问题简述 我们知道HttpRequest.META字典包含所有HTTP头部信息(可用的头部信息取决于客户端和服务器).一般情况下,HttpRequest.META.get('REMOTE_ADDR') ...
- TDBGridEh 标头排序
数据源为adoQuery 1.首先设置dbGridEh里需要排序的字段的Title->Titlebutton属性为true 2.设置dgGridEh的optionsEh->dbhautoS ...
- restful api与传统api的区别(方式及语法)
示例:一个状态数据操作接口 传统模式: api/getstate.aspx- 获取状态信息api/updatestate.aspx - 更新状态信息api/deletestate.aspx - 删除该 ...
- hive笔记:复杂数据类型-map结构
map 结构 1. 语法:map(k1,v1,k2,v2,…) 操作类型:map ,map类型的数据可以通过'列名['key']的方式访问 案例: select deductions['Feder ...
- Java程序设计与数据结构导论--读后感
与我前面所读的<Java7基础教程>相比,此书不适合自学,更适合作为教材使用. 虽然此书完整覆盖了Java的知识点和数据结构的基础问题,并且对每个部分都做了基本说明.但是因为没有深入展开, ...
- linux环境下快速安装Mariadb和Redis
一 Mariadb(Mysql)篇 1.新建一个yum源仓库 touch /etc/yum.repos.d/Mariadb.repo 2.在这个yum源仓库文件中,添加仓库url地址 [mariadb ...
- Python开发【前端篇】HTML5+CSS3
CSS权重 CSS权重指的是样式的优先级,有两条或多条样式作用于一个元素,权重高的那条样式对元素起作用,权重相同的,后写的样式会覆盖前面写的样式. 权重的等级 可以把样式的应用方式分为几个等级,按照等 ...
- ERROR in static/js/0.5d7325513eec31f1e291.js from UglifyJs
今天把vue项目打包是遇到这个问题.这是在服务器上打包时报的错误,本地打包不报错!很头疼!上网查了很多,发现有很多人和我遇到类似的问题,但是都没有解决我的问题!后来灵机一动,解决问题,这就跟大家说一下 ...
- 关键字-super
super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类. class BaseAction { String name; int age; void value( ...