战一:Zabbix监控Tomcat

1、介绍

Java虚拟机(JVM)具有内置的插装,使您能够使用JMX监视和管理它。您还可以使用JMX监视工具化的应用程序。

监控原理:当Zabbix-Server需要知道java应用程序的某项性能的时候,会启动自身的一个Zabbix-JavaPollers进程去连接Zabbix-JavaGateway请求数据,而ZabbixJavagateway收到请求后使用"JMXmanagementAPI"去查询特定的应用程序,而前提是应用程序这端在开启时需要"-Dcom.sun.management.jmxremote"参数来开启JMX远程查询就行。Java程序会启动自身的一个简单的小程序端口12345向Zabbix-JavaGateway提供请求数据。

zabbix监控后端java接口 zabbix监控java进程_IP

 

 从上面的原理图中可以看出,配置Zabbix监控Java应用程序的关键点在于:配置Zabbix-JavaGateway、让Zabbix-Server能够连接Zabbix-JavaGateway、Tomcat开启JVM远程监控功能等。

2、node2主机上(Tomcat服务器)安装JDKrpm包

使用Oracle官网的JDK 8的rpm包

官方下载JDK地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

(1)安装下载下来的JDK 8的rpm包

[root@node2 ~]# yum install jdk-8u211-linux-x64.rpm -y

(2)配置java全局变量

[root@node2 ~]# cat /etc/profile.d/jdk.sh  # 设置环境变量
export JAVA_HOME=/usr/java/default
export PATH=$JAVA_HOME/bin:$PATH

[root@node2 ~]# . /etc/profile.d/jdk.sh  # 使环境变量生效

(3)查看JDK版本

[root@node2 ~]# java -version
java version "1.8.0_211"
Java(TM) SE Runtime Environment (build 1.8.0_211-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.211-b12, mixed mode)

3、下载安装二进制Tomcat包

(1)从官网下载tomcat二进制安装包 http://tomcat.apache.org/

下载路径:https://archive.apache.org/dist/tomcat/

zabbix监控后端java接口 zabbix监控java进程_IP_02

(2)解包,指定解压的目录,并创建软链接

[root@node2 ~]# tar xvf apache-tomcat-8.5.42.tar.gz  -C /usr/local
[root@node2 ~]# ln -sv  /usr/local/apache-tomcat-8.5.42/  /usr/local/tomcat
‘/usr/local/tomcat/apache-tomcat-8.5.42’ -> ‘/usr/local/apache-tomcat-8.5.42/’

(3)配置tomcat参数vim /usr/local/tomcat/bin/catalina.sh

CATALINA_OPTS="$CATALINA_OPTS
-Dcom.sun.management.jmxremote  #启用远程监控JMX
-Dcom.sun.management.jmxremote.port=12345 # 默认启动的JMX端口号,要和zabbix添加主机时候的端口一致即可
-Dcom.sun.management.jmxremote.authenticate=false # 不使用用户名密码
-Dcom.sun.management.jmxremote.ssl=false #不使用ssl认证
-Djava.rmi.server.hostname=192.168.7.102" #tomcat主机自己的IP地址,不要写zabbix服务器的地址

(4)以ROOT身份启动Tomcat服务(不推荐,账号破解后就会被黑客以root身份做其他服务的破坏)

[root@node2 tomcat]# ./bin/catalina.sh start
Using CATALINA_BASE:   /usr/local/tomcat
Using CATALINA_HOME:   /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME:        /usr/java/default
Using CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
[root@node2 tomcat]# ss -nlt
State       Recv-Q Send-Q                           Local Address:Port                                          Peer Address:Port              
LISTEN      0      100                                  127.0.0.1:25                                                       *:*                  
LISTEN      0      128                                          *:22                                                       *:*                  
LISTEN      0      50                                        [::]:12345   # 验证监听了12345端口                                               [::]:*                  
LISTEN      0      100                                      [::1]:25                                                    [::]:*                  
LISTEN      0      1                           [::ffff:127.0.0.1]:8005                                                  [::]:*                  
LISTEN      0      50                                        [::]:22567                                                 [::]:*                  
LISTEN      0      100                                       [::]:8009                                                  [::]:*                  
LISTEN      0      50                                        [::]:35756                                                 [::]:*                  
LISTEN      0      100                                       [::]:8080     # 监听8080的tomcat端口                                             [::]:*                  
LISTEN      0      128                                       [::]:22                                                    [::]:*

(5)为了tomcat服务安全起见,最好不要用root用户登录,防止被破解之后存在安全隐患,建议自己新建一个普通用户进行登录  

[root@node2 tomcat]# useradd -r java # #创建一个系统账号,此时就没有家目录
[root@node2 tomcat]# chown -R java.java /usr/local/tomcat/  #将tomcat目录下的文件所有者和所属组都进行修改
[root@node2 tomcat]# su - java -c /usr/local/tomcat/bin/startup.sh  #以java用户形式进行启动tomcat服务

(6)查看此时启动的服务是以java用户进行启动的

zabbix监控后端java接口 zabbix监控java进程_zabbix监控后端java接口_03

 (7)网页验证此时的tomcat服务已经可以访问

zabbix监控后端java接口 zabbix监控java进程_IP_04

 (8)在oracle jdk download官网下载windows版本的JDK,安装并验证此时tomcat安装结果。

     官网下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html

zabbix监控后端java接口 zabbix监控java进程_java_05

 (9)在安装好的windows版本的JDK后,打开指定的执行程序进行验证:

zabbix监控后端java接口 zabbix监控java进程_tomcat_06

 (10)远程登录连接(远程此时tomcat主机的IP地址)

zabbix监控后端java接口 zabbix监控java进程_tomcat_07

 (11)连接进去之后有tomcat服务的信息即可,说明安装正确。

zabbix监控后端java接口 zabbix监控java进程_tomcat_08

 4、在zabbix-server服务端机器上安装对应的zabbix-java-gateway包

 (1)在zabbix-server服务器上安装zabbix-java-gateway包。

[root@zabbix ~]# yum install zabbix-java-gateway -y

(2)修改/etc/zabbix/zabbix_java_gateway.conf 配置文件

LISTEN_IP="0.0.0.0"  # 默认监控0.0.0.0的IP地址
LISTEN_PORT=10052 # 默认监控10052端口
START_POLLERS=5  # 启动多少个进程轮询java,要和java 应用保持一定关系
TIMEOUT=30   # 超时时间30s,最大时间也就是30s,尽量超时时长改大点,否则后端服务器还未响应,当大于超时时长才进行响应,此时java-gateway已经显示超时。

核对配置的信息:

[root@zabbix ~]# grep "^[a-Z]" /etc/zabbix/zabbix_java_gateway.conf 
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
START_POLLERS=5
TIMEOUT=30

重启zabbix-java-gateway服务:systemctl restart zabbix-java-gateway

(3)修改vim /etc/zabbix/zabbix_server.conf 配置文件

JavaGateway=192.168.7.100 # 数据库的IP地址,此时的数据库IP地址和zabbix-server在同一机器,也可以分开配置
JavaGatewayPort=10052 # 默认监听的是10052端口
StartJavaPollers=5  #启动多少个进程去轮询java gateway,要和java gateway的配置一致

重启zabbix-server服务:systemctl restart zabbix-server

(4)查看此时的进程数,就会看到有5个进程

zabbix监控后端java接口 zabbix监控java进程_zabbix监控后端java接口_09

 5、登陆zabbix网页:192.168.7.100/zabbix/index.html,添加JMX接口

 (1)在原有的主机上进行选择,然后将之前配置好的机器进行克隆。

zabbix监控后端java接口 zabbix监控java进程_tomcat_10

(2)克隆一个新的模板,不需要自己手动新建,节约时间。

zabbix监控后端java接口 zabbix监控java进程_java_11

 (3)添加JMX接口:tomcat服务对应的IP地址

zabbix监控后端java接口 zabbix监控java进程_IP_12

 (4)node2上添加Tomcat JMX模板(最好添加自定义的模板,此模板显示不是很全面)

zabbix监控后端java接口 zabbix监控java进程_IP_13

 注意:以下是导入个人自定义的模板:先点击导入(推荐导入个人自定义模板)

zabbix监控后端java接口 zabbix监控java进程_IP_14

  选择自定义模板,并导入

zabbix监控后端java接口 zabbix监控java进程_IP_15

 (5)此时可以看到zabbix-web界面已经显示JMX变绿色的图标,说明配置正确。

zabbix监控后端java接口 zabbix监控java进程_IP_16

 (6)在安装了tomcat服务的基础上安装zabbix-agent包,将agent也监控上

[root@node2 ~]# yum install zabbix-agent  -y  # 安装zabbix-agent包

(7)配置zabbix-agent文件:vim /etc/zabbix/zabbix_agentd.conf

Server=192.168.7.100   # zabbix服务端的IP地址
Hostname=192.168.7.102 # 本机node2主机的IP地址,或者起一个与zabbix服务器端不重名的名称
ListenPort=10050    # 本机监听的端口
ListenIP=0.0.0.0   # 允许监听在本机的地址,0.0.0.0 是监听所有

(8)重启zabbix-agent服务

# systemctl restart zabbix-agent

(9)在zabbix-server服务端进行测试验证此时的zabbix-agent是否正常

[root@zabbix ~]# zabbix_get -s 192.168.7.102 -p 10050 -k "agent.ping"  # 显示结果是1,说明配置正常
1

(10)在zabbix网页上配置zabbix-agent

 添加zabbix-agent

zabbix监控后端java接口 zabbix监控java进程_IP_17

zabbix监控后端java接口 zabbix监控java进程_tomcat_18

 添加Template OS Linux模板,然后点击更新即可。

zabbix监控后端java接口 zabbix监控java进程_tomcat_19

查看此时监控的agent和tomcat都显示绿色,说明监控正常。

zabbix监控后端java接口 zabbix监控java进程_zabbix监控后端java接口_20