zabbix之通过jmx监控tomcat

一、安装配置JDK

# rpm -ivh jdk-8u45-linux-x64.rpm

# vim /etc/profile.d/java.sh

export JAVA_HOME=/usr/java/default

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

系统配置立即生效

# source /etc/profile.d/java.sh

查看JAVA版本

# java -version

java version "1.8.0_45"

Java(TM) SE Runtime Environment (build 1.8.0_45-b14)

Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

二、zabbix的编译

1、编译zabbix的时候需要添加参数--enable-java

2、备份zabbix_server.conf和zabbix_agentd.conf文件,重新编译安装zabbix

# ./configure --prefix=/usr/local/zabbix --sysconfdir=/etc/zabbix --enable-server --enable-agent --with-mysql --with-net-snmp --with-libcurl --with-ssh2 --enable-java

三、zabbix的配置

1、修改zabbix_java相关选项

# cd /usr/local/zabbix/sbin/zabbix_java/

# vim settings.sh

LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/tmp/zabbix_java.pid"
START_POLLERS=5

其中 LISTEN_PORT 和 LISTEN_IP 可以不配置,zabbix_java 会采用默认值。但是 PID_FILE 和 START_POLLERS 必须配置,尤其主意 START_POLLERS,若不配置 zabbix_java 依旧可以启动但是是不工作的。

2、修改zabbix_server文件

在配置文件中开启如下几项参数

JavaGateway=127.0.0.1
JavaGatewayPort=10052
StartJavaPollers=5

这三项都需要配置,其中 StartJavaPollers 会被视为开关性质的参数。0 或者未配置将被系统认为不具有 Java 信息抓取能力。这点在 Zabbix JMX Monitoring Wiki 中未提及,但是实际效果就是这样。同时 Zabbix Proxy 的配置文件解析 中也有介绍此参数的含义。

3、启动zabbix_java

找到zabbix_java目录路径,然后执行命令./startup.sh

4、调整tomcat端,安装catalina-jmx-remote.jar

# wget  http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.8/bin/extras/catalina-jmx-remote.jar

将下载好的文件存放到tomcat子目录目录lib录下

# mv catalina-jmx-remote.jar /usr/local/tomcat/lib/

5、修改catalina.sh文件

修改catalina.sh文件,添加

CATALINA_OPTS="-Xms1024m -Xmx1024m -XX:NewRatio=4 -XX:PermSize=192m -XX:MaxPermSize=192m -Xss256k -XX:SurvivorRatio=4

-Dcom.sun.management.jmxremote

-Dcom.sun.management.jmxremote.authenticate=false

-Dcom.sun.management.jmxremote.port=8090

-Dcom.sun.management.jmxremote.ssh=false

-Djava.rmi.server.hostname=10.0.0.15"      10.0.0.15是客户端的IP,8090是端口

就这种方式而言,需要注意的是 catalina.sh 中提供的默认变量名 JAVA_OPTS 和 CATALINA_OPTS。由于 JAVA_OPTS 所添加的参数会在 tomcat 开启和关闭时都运行,所以如果你把 -Dcom.sun.management.jmxremote.port=8090 写在 JAVA_OPTS 中,就会在关闭 tomcat 时出现如下错误:

Error: Exception thrown by the agent : java.rmi.server.ExportException : Port
already in use: 8090;nested exception is:
java.net.BindException: Address already in use: JVM_Bind

从而无法关闭。
    而 CATALINA_OPTS 只会在开启 tomcat 的时候运行,所以应该将这些配置写在 CATALINA_OPTS 中。这个问题在这里有被详细的讨论。

但是这并不是在 tomcat 中开启 jmx 的正确方式,如果你用这种方式,紧接着就会遇到 这样的问题。
    正确的方式应该是这样的:

  1. 在 tomcat 下载页面 Extras 类别中下载 JMX Remote jar 二进制包。放在 tomcat/lib 下面.
    2. 修改 tomcat server.xml 配置文件,添加以下内容:
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="8090" rmiServerPortPlatform="8090" />

具体参数内容请参考 apache tomcat 文档

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=10.0.0.15"

在这里写上 hostname 是由于 hostname 默认值为 localhost,如果你的 tomcat 未监听在 localhost,那么不写具体 ip 会引发问题。

4. 确保 zabbix server 或者 proxy 和 配置文件中的端口通讯畅通。

5、重启启动tomcat服务和zabbix_agentd服务

6、服务器端测试是否能正常获取信息

# java -jar /root/cmdline-jmxclient-0.10.3.jar  - 10.0.0.15:8090 java.lang:type=Memory NonHeapMemoryUsage

09/07/2015 17:29:29 +0800 org.archive.jmx.Client NonHeapMemoryUsage:

committed: 80543744

init: 2555904

max: -1

used: 76760296

时间: 2024-10-28 19:01:04

zabbix之通过jmx监控tomcat的相关文章

zabbix监控通过jmx监控tomcat的配置过程

1.zabbix获取通过jmx监控tomcat示意图 2.在tomcat的catalina.sh配置文件中添加如下信息: JAVA_OPTS="-Dcom.sun.management.jmxremote -Djava.rmi.server.hostname=127.0.0.1 -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremo

14、Zabbix如何使用JMX监控

JMX(Java Management Extensions,即Java管理扩展)是java平台上为应用程序.设备.系统等植入管理功能的框架. JMX工作原理:  zabbix_server想知道一台主机上的特定的JMX值时,它向Zabbix-Java-gateway询问,而Zabbix-Javagateway使用"JMXmanagementAPI"去查询特定的应用程序,而前提是应用程序这端在开启时需要"-Dcom.sun.management.jmxremote"

运用JMX监控Tomcat

1.先配Tomcat的启动语句,window下tomcat的bin/catalina.bat(linux为catalina.sh),在头上注释部分(.bat为rem..sh为#)后面加上set JAVA_OPTS=-Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true (linux为JAVA_

监控应用服务器使用JMX监控Tomcat (转收藏)

前言:做了一个监控应用服务器的项目(支持Tocmat.WebSphere.WebLogic各版本), 过程也算是磕磕绊绊,由于网上缺少相关资料,或者深陷于知识的海洋难以寻觅到有效的资料,因而走过不少弯路,遇过不少困难.为了留下点印记,给后来人留下 点经验之谈,助之少走弯路,故将这些经验整理出来,与大家分享.水平有限,难免疏漏,还望指正.如有疑问,欢迎留言,或者加入Q群参与讨 论:35526521. 一.激活Tomcat的JMX远程配置 要通过JMX远程监控Tomcat,首先需要激活Tomcat的

Zabbix通过JMX监控tomcat——防火墙策略问题分析

一.现 状 对于Zabbix通过JMX来监控tomcat,网络上有很多文章,但大都是相同或类似的,且都是没有设置防火墙的,所以就安装而言百度就行.现在为了服务的安全,是必须开启防火墙的.于是出现了一系列的问题. 二.当前环境 1.Zabbix_server的Zabbix版本是3.0.4,系统是Centos7.0,使用YUM安装. Centos7.0 YUM安装地址:http://blog.csdn.net/reblue520/article/details/52136850 2.Zabbix-s

Zabbix通过JMX监控tomcat

Zabbix监控tomcat方案 1)zabbix的版本为2.4 编译zabbix的时候需要添加参数 --enable-java 2)服务器端配置 2.1确认已经安装JDK [[email protected] zabbix]# java -version java version "1.7.0_79" Java(TM) SE Runtime Environment (build 1.7.0_79-b15) Java HotSpot(TM) 64-Bit Server VM (buil

Zabbix使用jmx监控tomcat

Zabbix自带了一部分对于JMX的监控,如果要想使用此模板对tomcat进行比较简单的监控可以考虑使用此模板. 与其他应用使用zabbix-agent不同,对JMX进行监控需要使用zabbix-java-gateway,来与系统的JMX交互获取数据,zabbix-java-gateway将获取到的数据交给zabbix-agent,然后将zabbix-agent将数据发送给zabbix-server. 这里为了方便理解,使用两台机器,一台作为zabbix-server, 另一台作为tomcat服

zabbix通过JMX监控tomcat状态

因为公司大量使用tomcat作为应用服务,所以,这两天催生了一个想法,通过zabbix监控tomcat的运行状态,从而能够更快的发现tomcat服务出现的问题以及判断问题出现在哪块. 在网上找了一些资料来看,写的都不是很全面(PS:对于我这种菜鸟来说,还有很多东西不知道的,所以需要有解释的详细点的文档来帮助我更好理解原理,于是就有了本篇博文的诞生!) 首先,zabbix监控tomcat等这一类java平台的应用不是直接通过agentd来实现的,而是使用jmx来获取到tomcat这类应用的状态,然

zabbix 监控服务系列之--------使用JMX监控tomcat

我的环境是centOS6.5.64位. 首先,我的zabbix--server服务器端,之前已经安装了zabbix,所以环境省略. 接下来,开始安装需要用于监控tomcat的一些东西: 1. rpm -ivh jdk-8u20-linux64-x.rpm or tar xvf jdk-8u20-linux64-tar.gz 2. vi /etc/profile JAVA_HOME=/usr/java/jdk1.8.0_20 PATH=$PATH:$JAVA_HOME CLASSPATH=.:$J