Zabbix 3.4 JMX 监控 Tomcat 性能

先决条件:

Zabbix Servers 3.4 源代码编译安装
Linux Apache Tomcat 8.5 安装与配置

如果完成了以上安装的部署,继续下一步。

Zabbix服务器端配置:

1.配置 zabbix_server.conf

主要参数:

...
 #JavaGateway服务器地址,zabbix-server与zabbix_java_gateway在同台服务器。
 JavaGateway=10.10.204.62
 JavaGatewayPort=10052
 #设置javaGateway抓取数据的进程数,当设置为0时表示不具有抓取java信息的能力。
 StartJavaPollers=5
...

在Zabbix Servers安装过程中,以上参数我已经配置完成。

2.配置 Zabbix Java gateway

修改完成后的内容如下:

$ egrep -v '^#|^$' /usr/local/zabbix/sbin/zabbix_java/settings.sh

#Zabbix Servers IP
LISTEN_IP="0.0.0.0"
#Port
LISTEN_PORT=10052
#PID_FILE路径必须正确。
PID_FILE="/usr/local/zabbix/sbin/zabbix_java/zabbix_java.pid"
#START_POLLERS项是配置启动的进出数,若不配置 zabbix_java 依旧可以启动但无法抓取数据。
START_POLLERS=5
#网络超时时间。
TIMEOUT=3

3.启动 zabbix_java

$ /usr/local/zabbix/sbin/zabbix_java/startup.sh

启动后可通过 ss -ntlp 查看 10052 端口是否运行。

Zabbix Agent Tomcat 客户端配置:

1.在 catalina.sh文件 Execute The Requested Command 上行或最上面添加以下内容:

$ vim /usr/local/tomcat/bin/catalina.sh
export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=10.10.204.65"

含义说明:

CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote #启用JMX远程监控。
-Dcom.sun.management.jmxremote.ssl=false #是否使用SSL。
-Dcom.sun.management.jmxremote.authenticate=false #是否开启认证。
-Djava.rmi.server.hostname=10.10.204.65" #Tomcat所在服务器IP。

2.修改Tomcat server.xml 配置文件

在 <Server port=”8005″ shutdown=”SHUTDOWN”> 换行添加以下内容:

$ vim /usr/local/tomcat/conf/server.xml
<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener" rmiRegistryPortPlatform="10053" rmiServerPortPlatform="10053"/>

3.重启 Tomcat 服务

$ systemctl restart tomcat

4.设置 Firewalld

$ firewall-cmd --zone=public --add-port=10053/tcp --permanent
$ firewall-cmd --reload

5.在 Zabbix server 检测数据

在zabbix 服务端使用 cmdline-jmxclient-0.10.3.jar 检测是否可以抓取数据

$ java -jar /tmp/cmdline-jmxclient-0.10.3.jar - 10.10.204.65:10053 java.lang:type=Memory NonHeapMemoryUsage
09/15/2017 19:06:49 +0800 org.archive.jmx.Client NonHeapMemoryUsage:
committed: 33406976
init: 2555904
max: -1
used: 32079720

成功获取数据。

之后在zabbix web界面添加主机并链接模板即可。

Template App Apache Tomcat JMX
Template App Generic Java JMX

以上两个模板是系统默认的,添加即可,其中有一些参数不通用,需要手动修改。

Zabbix 3.4 JMX 监控 Tomcat 性能》有8个想法

  1. zj

    大神,我在监控tomcat的时候遇到一个问题,我开了一台虚拟机,上面安装了zabbix服务器端,然后参数都配置好了,去公司服务器上开启远程jmx监控,参数也都配置完成了,到了用java -jar /tmp/cmdline-jmxclient-0.10.3.jar – 116.62.62.79:12345 java.lang:type=Memory NonHeapMemoryUsage测试的时候,总是报错拒绝连接,报错如下
    Exception in thread “main” java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 116.62.62.79; nested exception is:
    java.net.ConnectException: 拒绝连接 (Connection refused)]
    请问,这个是什么原因呢?

    回复
  2. zj

    java -jar cmdline-jmxclient-0.10.3.jar – 116.62.62.79:12345 java.lang:type=Memory NonHeapMemoryUsage
    Exception in thread “main” java.io.IOException: Failed to retrieve RMIServer stub: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 116.62.62.79; nested exception is:
    java.net.ConnectException: 拒绝连接 (Connection refused)]
    请问这个是什么原因?该如何解决?

    回复
  3. siae

    我zabbix 3.4,tomcat 8的,使用默认的模板,不支持 是什么情况
    [root@Server backup]# /usr/local/zabbix/bin/zabbix_get -s 10.163.254.120 -p 10050 -k jmx[“Catalina:type=GlobalRequestProcessor,name=http-8080”,bytesReceived]
    ZBX_NOTSUPPORTED: Unsupported item key.

    回复
  4. siae

    找不到用于监控项 key”jmx[“java.lang:type=ClassLoading”,LoadedClassCount]” 的主机接口.
    添加 template jmx generic,template jmx tomcat
    都是报这种找不到接口的,是什么问题的

    回复
    1. Node Cloud 文章作者

      你可以看下服务端和客户端端口10050是否通信,另外最好检查下Agent端和服务端的日志情况,这样有助于你快速解决此问题。

      回复

回复 zj 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code