战一: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-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/
(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用户进行启动的
(7)网页验证此时的tomcat服务已经可以访问
(8)在oracle jdk download官网下载windows版本的JDK,安装并验证此时tomcat安装结果。
官网下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
(9)在安装好的windows版本的JDK后,打开指定的执行程序进行验证:
(10)远程登录连接(远程此时tomcat主机的IP地址)
(11)连接进去之后有tomcat服务的信息即可,说明安装正确。
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个进程
5、登陆zabbix网页:192.168.7.100/zabbix/index.html,添加JMX接口
(1)在原有的主机上进行选择,然后将之前配置好的机器进行克隆。
(2)克隆一个新的模板,不需要自己手动新建,节约时间。
(3)添加JMX接口:tomcat服务对应的IP地址
(4)node2上添加Tomcat JMX模板(最好添加自定义的模板,此模板显示不是很全面)
注意:以下是导入个人自定义的模板:先点击导入(推荐导入个人自定义模板)
选择自定义模板,并导入
(5)此时可以看到zabbix-web界面已经显示JMX变绿色的图标,说明配置正确。
(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
添加Template OS Linux模板,然后点击更新即可。
查看此时监控的agent和tomcat都显示绿色,说明监控正常。