1.1 实验环境

  • Zabbix Server 2.2.0(172.16.0.2)

  • JBoss Server EAP 5.2.0或jboss-4.2.3.GA (172.16.0.13)

  • Both servers running Red Hat Enterprise Linux 6.3

1.2 Zabbix Serverd上Javagateway安装配置

1.工作原理:

Zabbix server想知道一台主机上的特定的JMX值时,它向Zabbix-Javagateway询问,而Zabbix-Javagateway使用“JMXmanagementAPI”去查询特定的应用程序,而前提是应用程序这端在开启时需要“-Dcom.sun.management.jmxremote”参数来开启JMX查询就行了。

Zabbixserver有一个特殊的进程用来连接Javagateway叫StartJavaPollers;Javagateway通过配置文件中START_POLLERS参数设置启动多个线程,在zabbix服务器这边如果一个连接所用时间超过Timeout,将会被中断,但是Javagateway将继续从JMXcounter取数据。所以StartJavaPollers设置的值要小于等于START_POLLERS设置的值。Zabbix-Javagateway就相当于一个代理。

2.安装JDK环境(如果Java环境已经配置,则跳过此步骤)

安装方法
将jdk-6u37-linux-x64.bin上传到Zabbix Server的/usr/local下
#cd /usr/local/
# chmod +x jdk-6u37-linux-x64.bin
# ./jdk-6u37-linux-x64.bin
 
# vim /etc/profile
在最后加入下面语句
#set java environment
JAVA_HOME=/usr/local/jdk1.6.0_37
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

使环境值立即生效
# source /etc/profile

查看JAVA是不是安装成功# java -version


(测试过,如果java环境是OpenJDK,则编译时会报错如)


3.安装Javagateway

软件包在zabbix自带有,目前暂时只支持从zabbix软件包中获得

(备份zabbix_server.conf和zabbix_agentd.conf文件,编译安装需要GCC环境)

# cp -p zabbix_server.conf zabbix_server.conf.bak

# cp -p zabbix_agentd.conf zabbix_agentd.conf.bak

# tar zxvf zabbix-2.2.0.tar.gz

# cd zabbix-2.2.0

# ./configure –enable-java –prefix=/opt/zabbix_java

编译完成

clip_p_w_picpath008[4]

# make && make install

4.修改Javagateway的配置文件

# vim /opt/zabbix_java/sbin/zabbix_java/settings.sh

在配置文件 settings.sh 中,可以配置以下参数:

LISTEN_IP=”172.16.0.2” #zabbix_server端ip地址

LISTEN_PORT=10052

START_POLLERS=5

clip_p_w_picpath010[4]

5.修改zabbix_server的配置文件,使支持javagateway

# vi /etc/zabbix_server.conf

zabbix_server 或 zabbix_proxy 的配置文件中有以下内容需要配置:

JavaGateway=172.16.0.2

JavaGatewayPort=10052

StartJavaPollers=5

clip_p_w_picpath012[4]

6.启动javagateway

# cd /opt/zabbix_java/sbin/zabbix_java/

#./startup.sh

#netstat –nlp |grep 10052

clip_p_w_picpath014[4]

7.重启zabbix_server服务

# /etc/init.d/zabbix_server restart

1.3 客户端JBOSS服务器配置

1. 启用远程JMX监控

编辑JBOSS_HOME/bin/run.conf(注:JBOSS_HOME为JBOSS安装的位置)

[root@JBOSS-4 jboss-4.2.3.GA]# vi /usr/jboss-4.2.3.GA/bin/run.conf

在文件结尾加入下面几行:

clip_p_w_picpath016[4]  
#JMX Remote Management configuration

JAVA_OPTS="$JAVA_OPTS -Dcom.rmi.server.hostname=<YOUR_JBOSS_SERVER_IP>" #注意如果没有此行,则JMX远程访问时会报错

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote"

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.port=12345" #端口号可以自己定义,注意不要冲突

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false"

JAVA_OPTS="$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false"

JAVA_OPTS="$JAVA_OPTS -Djboss.platform.mbeanserver"

JAVA_OPTS="$JAVA_OPTS -Djavax.management.builder.initial=org.jboss.system.server.jmx.MBeanServerBuilderImpl"

JBOSS_CLASSPATH="../lib/jboss-system-jmx.jar"

然后保存

2.重启JBOSS服务就开启JMX了

[root@JBOSS-4 bin]# ./shutdown.sh –S

#nohup ./run.sh -b 0.0.0.0 & 此时可以通过#more nohup.out查看启动情况

查看端口是否监听

# netstat -nlp | grep 12345

clip_p_w_picpath018[4]

3.使用cmdline-jmxclient-0.10.3.jar文件测试服务器端测试是否能正常获取信息

本地测试:

将cmdline-jmxclient-0.10.3.jar上传到JBOSS服务器上,为了方便管理,这里我们上传到JBOSS的lib目录下

clip_p_w_picpath020[4]

4.测试有数据则表示成功

[root@JBOSS-4 lib]# java -jar cmdline-jmxclient-0.10.3.jar -:- 172.16.0.13:12345

(注:这个命令会输出所有的Mbeans,”-:-“表示没有用户名和密码)

clip_p_w_picpath022[4]

查找需要的Mbeans,如我们相查找和jboss.management.local相关的Mbens,可以使用命令:  
[root@JBOSS-4 lib]# java -jar cmdline-jmxclient-0.10.3.jar -:- 172.16.0.13:12345 | grep jboss.management.local

clip_p_w_picpath024[4]

远程测试:

将cmdline-jmxclient-0.10.3.jar上传到Zabbix Server服务器上

clip_p_w_picpath026[4]

测试有数据则表示成功

[root@zabbix-server tmp]# java -jar cmdline-jmxclient-0.10.3.jar -:- 172.16.0.13:12345

(一般通过zabbix-server能获取到数据,通过JMX监控就基本成功)

clip_p_w_picpath028[4]

1.4 添加JBOSS监控主机

1. 在web前端添加JBOSS主机,设置jmx ip地址及端口

clip_p_w_picpath030[4]

2.添加成功后会显示JMX图标变绿,表示可用(必须有Items将能显示图标)

clip_p_w_picpath032[4]

1.5 添加JBOSS监控项

1. 在一台Windows机器上安装JAVA(该windows能与Weblogic服务器通信即可,不需要安装zabbix_agent)

下载JAVA程序,下载完后默认安装即可

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

clip_p_w_picpath034[4]

2. 配置JDK环境变量

选择环境变量

clip_p_w_picpath036[4]

选择新建,变量名输入“JAVA_HOME”,变量值输入“C:\Program Files\Java\jdk1.8.0_20\bin”

即JAVA安装目录

clip_p_w_picpath038[4]

在Path变量名中,添加路径; C:\Program Files\Java\jdk1.8.0_20\bin

clip_p_w_picpath040[6]

clip_p_w_picpath040[7]

3. 在cmd下输入”jconsole”打开java监视和管理控制台

clip_p_w_picpath042[4]

4.选择远程进程,输入tomcat的ip:端口号

clip_p_w_picpath044[4]

clip_p_w_picpath046[4]

5.这里以jboss.jca节点为例,展开jboss.jca-CachedConnectionManager,可以在右边详细中看到ObjectName的值: jboss.jca:service=CachedConnectionManager

这里的值在下面创建监控项时需要填入到Key中

clip_p_w_picpath048[4]

6.选择属性State,右边详细可以查看到对象的属性值,这里所有属性下面的值,都是item里面key的值,后面创建item的时候就会体现出来了

clip_p_w_picpath050[4]

7.这里我们以jboss.jca:service=CachedConnectionManager-State为例,进行创建监控项

clip_p_w_picpath052[4]

clip_p_w_picpath054[4]

创建State监控项,

clip_p_w_picpath056[4]

结果如下:

clip_p_w_picpath058[4]

这里主要注意Key值,其他监控值方法操作一样

jmx["jboss.jca:service=CachedConnectionManager",State]

语法:

jmx["ObjectName",属性名]

8.监控结果如图所示

clip_p_w_picpath060[4]

clip_p_w_picpath062[4]