简述
tomcat需要jdk(java)依赖,zabbix有独立的zabbix-java-gateway监控java
程序;监控tomcat流程如下:
- zabbix-web用于web界面显示,没有特殊含义;
- zabbix-server启用javapollers进程去链接zabbix-java-gateway去请求数据(修改配置文件可实现),Zabbix-Javagateway就相当于一个代理,它负责收集客户端tomcat数据;
- zabbix-java-gateway开启JMX功能,用于远程连接tomcat,收集tomcat信息;
- tomcat配置文件添加JMX参数
实验环境
主机 | 用途 |
---|---|
Centos7:192.168.10.1 | zabbix-server,zabbix-java-gateway |
Centos7:192.168.10.5 | tomcat |
tomcat添加JMX参数
修改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
-Djava.rmi.server.hostname=127.0.0.1"
注意格式问题,不要去复制上面的,看别人的博客都是直接放在了代码片里面,自己跟着做坑死了,按照下面的来
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 -Djava.rmi.server.hostname=127.0.0.1"
重启tomat
保证12345端口可以正常开启
[root@localhost ~]# sh tomcat.sh restart
[root@localhost ~]# netstat -anpt | grep 12345
tcp6 0 0 :::12345 :::* LISTEN 3049/java
[root@localhost ~]# netstat -anpt | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 3049/java
tcp6 0 0 ::1:45152 ::1:8080 TIME_WAIT -
配置zabbix服务端
安装zabbix-java-gateway
#安装
yum -y install zabbix-java-gateway
#启动
systemctl start zabbix-java-gateway
#开机启动
systemctl enable zabbix-java-gateway
zabbix-server默认工作在10051端口,zabbix-agent默认工作在10050端口,zabbix-java-ggateway默认工作在10052
修改zabbix-java-gateway
配置文件
[root@localhost ~]# grep -Ev '^#|^$' /etc/zabbix/zabbix_java_gateway.conf
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=5 #设置启动多个线程,这里和server段相同
TIMEOUT=3
#添加以下参数开启JMX功能
uncomment to enable remote monitoring of the standard JMX objects on the Zabbix Java Gateway itself
JAVA_OPTIONS="$JAVA_OPTIONS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345
-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
修改zabbix-server
配置文件
[root@localhost ~]# grep -Ev '^#|^$' /etc/zabbix/zabbix_server.conf
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/var/run/zabbix/zabbix_server.pid
SocketDir=/var/run/zabbix
DBName=zabbix
DBUser=zabbix
DBPassword=123.com
JavaGateway=192.168.10.7
JavaGatewayPort=10052
StartJavaPollers=5 #和zabbix-java-gateway的线程一致
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
重启zabbix服务
systemctl restart zabbix-server
systemctl restart zabbix-java-gateway
tomcat添加catalina-jmx-remote.jar
JMX远程生命周期侦听器,没有必要性,可以添加也可以不添加
要找到对应tomcat版本的catalina-jmx-remote.jar,访问 tomcat各个版本
下载完成以后要放到tomcat8/lib
wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.55/bin/extras/catalina-jmx-remote.jar
mv catalina-jmx-remote.jar /usr/local/tomcat8/lib/
重启tomcat
sh tomcat.sh restart
关闭防火墙或者开发端口
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
测试
下载cmdline-jmxclient-0.10.3.jar
https://pan.baidu.com/s/1Kg2JAwaenYJhZPdYP9aOGA
提取码:f37k
[root@localhost ~]# mv cmdline-jmxclient-0.10.3.jar /usr/local/tomcat8/
[root@localhost ~]# java -jar /usr/local/tomcat8/cmdline-jmxclient-0.10.3.jar - 127.0.0.1:12345 java.lang:type=Memory HeapMemoryUsage
06/21/2020 17:51:39 +0800 org.archive.jmx.Client HeapMemoryUsage:
committed: 28061696
init: 16777216
max: 249364480
used: 19246760
zabbix-web界面添加主机
我这里zabbix-java-gateway和zabbix-server在一台主机,可以分开,分开的话就填写对应的ip即可
添加模板
稍等一会儿,JMX就会绿起来
监控效果