6 月 092015
 

jboss的监控 好坑啊。搞了一天遇到了很多的问题。

主要的策略就是用jmx去监控jboss,后来发现遇到了各种莫名其妙的问题。后来才发现 jboss 5.1 是有BUG的,无法实现(参见最后)。

zabbix 监控jmx 主要是通过Java gateway,

image

安装过程可以参见 http://caisangzi.blog.51cto.com/6387416/1301682

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

1.先安装jdk

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html   #下载对应版本的jdk

[root@zhu1 ~]# tar zxvf jdk-7u40-linux-i586.tar.gz

[root@zhu1 ~]# mv jdk1.7.0_40/ /usr/local/jdk

[root@zhu1 ~]# vim /etc/profile #在最后添加下面几行

export JAVA_HOME=/usr/local/jdk

export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$PATH:$JAVA_HOME/bin

[root@zhu1 ~]# source /etc/profile

[root@zhu1 ~]# java -version

java version "1.7.0_40"

Java(TM) SE Runtime Environment (build 1.7.0_40-b43)

Java HotSpot(TM) Client VM (build 24.0-b56, mixed mode)

#出现此界面,说面jdk安装成功

2.安装Javagateway

[root@zhu1 ~]# tar zxvf zabbix-2.0.5.tar.gz

[root@zhu1 ~]# cd zabbix-2.0.5

[root@zhu1 zabbix-2.0.5]# ./configure --enable-java --prefix=/opt/zabbix_java_gatway

[root@zhu1 zabbix-2.0.5]# make && make install

3.修改Javagateway的配置文件

[root@zhu1 zabbix_java]# pwd

/opt/zabbix_java_gatway/sbin/zabbix_java

[root@zhu1 zabbix_java]# ll

总计 20

drwxr-xr-x 2 root root 4096 09-21 05:18 bin

drwxr-xr-x 2 root root 4096 09-21 05:18 lib

-rw-r--r-- 1 root root  665 09-21 05:18 settings.sh #java gateway的配置文件

-rwxr-xr-x 1 root root  299 09-21 05:18 shutdown.sh #关闭脚本

-rwxr-xr-x 1 root root 1191 09-21 05:18 startup.sh #启动脚本

[root@zhu1 zabbix_java]# vim settings.sh

LISTEN_IP="0.0.0.0" #可以不配置,采用默认值即可

LISTEN_PORT=10052  #可以不配置,采用默认值即可

PID_FILE="/tmp/zabbix_java.pid" #该项必须配置,保存pid文件的位置

START_POLLERS=5 #必须配置,启动的进出数

4.修改zabbixserver的配置文件,使支持javagateway

JavaGateway=127.0.0.1 #指定Java gateway的ip地址或主机名,由于Java gateway是搭建在zabbix server所在的主机上所以可用127.0.0.1;

JavaGatewayPort=10052 #Java gateway监听的端口号

StartJavaPollers=5 #设定连接java gateway 的进程数,当设置为0时表示不具有抓取java信息的能力

5.启动javagateway

[root@zhu1 zabbix_java]# ./startup.sh

[root@zhu1 zabbix_java]# netstat -lntp | grep 10052

tcp        0      0 :::10052                    :::*                        LISTEN      10179/java

**********************************************************************************************************************************************

下面的配置以监控tomcat为例

1.tomcat安装好后,在tomcat下载页面的Extras目录中下载catalina-jmx-remote.jar并放到tomcat/lib下面

[root@zhu1 ~]# wget wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.42/bin/extras/catalina-jmx-remote.jar

[root@zhu1 ~]# mv catalina-jmx-remote.jar /usr/local/tomcat/lib/

[root@zhu1 ~]# cp  catalina-jmx-remote.jar /opt/zabbix_java_gatway/sbin/zabbix_java/lib/ #把catalina-jmx-remote.jar也放到zabbix_java/lib/下面,这是为了防止出现类没有发现的异常,有的文档上并没有这步操作

2.修改tomcatserver.xml配置文件,添加以下内容:

<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="12345" rmiServerPortPlatform="12346"/>

3.修改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=localhost"

#添加的位置一定不要在左后,由于是脚本文件,应添加在前面

4.启动tomcat

[root@zhu1 ~]# cd /usr/local/tomcat/bin/

[root@zhu1 bin]# ./startup.sh

5.下载cmdline-jmxclient-0.10.3.jar文件测试是否恩能够取得数据

[root@zhu1 ~]# wget http://repo.typesafe.com/typesafe/repo/cmdline-jmxclient/cmdline-jmxclient/0.10.3/cmdline-jmxclient-0.10.3.jar

[root@zhu1 ~]# java -jar /root/cmdline-jmxclient-0.10.3.jar - 192.168.70.133:12345 java.lang:type=Memory NonHeapMemoryUsage

09/21/2013 05:51:05 +0800 org.archive.jmx.Client NonHeapMemoryUsage:

committed: 15335424

init: 12746752

max: 100663296

used: 12345112

上面这个是测试zabbixserver上的tomcat

下面配置测试其他主机上的tomcat。

1.server.xml文件不做任何配置,仅配置catalina.sh

CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345  -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"

2。测试

[root@zhu1 ~]# java -jar /root/cmdline-jmxclient-0.10.3.jar - 192.168.70.135:12345 java.lang:type=Memory NonHeapMemoryUsage

09/21/2013 05:53:13 +0800 org.archive.jmx.Client NonHeapMemoryUsage:

committed: 15138816

init: 12746752

max: 100663296

used: 12474280

PS:5.1的bug

参考url:http://abh1sh3k.blogspot.com/2013/12/jmx-configuration-in-different-versions.html

Follow the instructions mentioned below to enable remote JMX monitoring in JBoss-

JBoss 4.2.3.GA

Modify run.conf file available in bin directory of JBoss and add below lines-

JAVA_OPTS=”$JAVA_OPTS -Dcom.sun.management.jmxremote.port=<PORT>
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 5.1.0.GA

JMX port cannot be configured in JBoss 5.1 due to an existing bug (https://issues.jboss.org/browse/JBAS-6185) in JBoss which has been fixed in JBoss 6.0 version.

JBoss 6.1.0.Final

Modify run.conf file available in bin directory of JBoss and add below lines-

JAVA_OPTS=”$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager”
JAVA_ARGS=”$JAVA_OPTS -Dorg.jboss.logging.Logger.pluginClass=org.jboss.logging.logmanager.LoggerPluginImpl”
JBOSS_CLASSPATH=”../lib/jboss-logmanager.jar”
JAVA_OPTS=”$JAVA_OPTS -Dcom.sun.management.jmxremote.port=<PORT>
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”
JAVA_OPTS=”$JAVA_OPTS -Djava.rmi.server.hostname=<IP_ADDRESS>

JBoss 7.1.1.Final

Modify standalone.conf file available in bin directory of JBoss and add below lines-

JAVA_OPTS=”$JAVA_OPTS -Dcom.sun.management.jmxremote.port=<PORT>
JAVA_OPTS=”$JAVA_OPTS -Dcom.sun.management.jmxremote.authenticate=false”
JAVA_OPTS=”$JAVA_OPTS -Dcom.sun.management.jmxremote”
JAVA_OPTS=”$JAVA_OPTS -Dcom.sun.management.jmxremote.ssl=false”
JAVA_OPTS=”$JAVA_OPTS -Djboss.platform.mbeanserver”
JAVA_OPTS=”$JAVA_OPTS -Djava.rmi.server.hostname=<IP_ADDRESS>
JAVA_OPTS=”$JAVA_OPTS -Djava.util.logging.manager=org.jboss.logmanager.LogManager -Xbootclasspath/p:../modules/org/jboss/logmanager/main/jboss-logmanager-1.2.2.GA.jar  -Xbootclasspath/p:../modules/org/jboss/logmanager/log4j/main/jboss-logmanager-log4j-1.0.0.GA.jar -Xbootclasspath/p:../modules/org/apache/log4j/main/log4j-1.2.16.jar”
JAVA_OPTS=”$JAVA_OPTS -Djboss.modules.system.pkgs=org.jboss.logmanager”

NOTE: Modify <PORT> and <IP_ADDRESS> according to your requirements.
Hope this helps !!
Best Regards,

 Posted by at 下午 4:58

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

This website stores cookies on your computer. These cookies are used to provide a more personalized experience and to track your whereabouts around our website in compliance with the European General Data Protection Regulation. If you decide to to opt-out of any future tracking, a cookie will be setup in your browser to remember this choice for one year.

Accept or Deny