首页 > 网络 > 其他 >

Zabbix监控Tomcat及Nginx-warrent-51CTO博客

2019-11-14

注:本篇博文是基于部署zabbix监控服务器的环境进行的。这里将开启一台client服务器(被监控端)用于测试。 博文大纲:一、监控Tomcat二、监控Nginx服务器 一、监控Tomcat 监控Tomcat需要用到zabbix_java_gate

注:本篇博文是基于部署zabbix监控服务器的环境进行的。这里将开启一台client服务器(被监控端)用于测试。

博文大纲:一、监控Tomcat二、监控Nginx服务器

一、监控Tomcat

监控Tomcat需要用到zabbix_java_gateway这个组件(在zabbix2.0引入的功能),顾名思义就是:Java网关,类似于agentd,但是只用于Java方面。需要注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会提交到server端或proxy。

如果需要开启监控Tomcat功能,在编译zabbix server端时,需要添加--enable_java 参数。

1、Zabbix Server安装zabbix_java_gateway程序

zabbix_java_gateway程序既可以安装在zabbix server端,也可以安装在被监控端,不过一般都是安装在Zabbix server端,这里我就安装在Zabbix Server端。

注:文中所有用到的源码包都可以从我的网盘链接中下载

#执行下面命令前,请先下载我网盘链接中的对应rpm包
[root@zabbix ~]# rpm -ivh zabbix-java-gateway-3.2.1-1.el7.x86_64.rpm
#修改java_gateway配置文件
[root@zabbix ~]# cd /etc/zabbix/
[root@zabbix zabbix]# sed -i 's/# LISTEN_IP="0.0.0.0"/LISTEN_IP="0.0.0.0"/g' zabbix_java_gateway.conf 
[root@zabbix zabbix]# sed -i 's/# LISTEN_PORT=10052/LISTEN_PORT=10052/g' zabbix_java_gateway.conf 
[root@zabbix zabbix]# egrep -v '^$|^#' zabbix_java_gateway.conf 
#确定修改后的配置文件
LISTEN_IP="0.0.0.0"
LISTEN_PORT=10052
PID_FILE="/var/run/zabbix/zabbix_java.pid"
TIMEOUT=3
#启动java-gateway
[root@zabbix zabbix]# systemctl start zabbix-java-gateway.service 
#确定端口在监听
[root@zabbix zabbix]# netstat -anpt | grep 10052
tcp6       0      0 :::10052                :::*                    LISTEN      3112/java           
#修改Zabbix-Server的配置文件
[root@zabbix zabbix]# cd /usr/local/zabbix/etc/
[root@zabbix etc]# sed -i 's/# JavaGateway=/JavaGateway=192.168.20.2/g' zabbix_server.conf
[root@zabbix etc]# sed -i 's/# JavaGatewayPort=10052/JavaGatewayPort=10052/g' zabbix_server.conf
[root@zabbix etc]# sed -i 's/# StartJavaPollers=0/StartJavaPollers=5/g' zabbix_server.conf
[root@zabbix etc]# /etc/init.d/zabbix_server restart    #重启zabbix server
2、测试端配置Tomcat

启动一台IP为192.168.20.3的服务器作为Tomcat服务器,用于测试。

#安装Tomcat
[root@tomcat ~]# rpm -qa | grep jdk       #查询系统默认的JAVA包
java-1.8.0-openjdk-1.8.0.102-4.b14.el7.x86_64
java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64
java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64
copy-jdk-configs-1.2-1.el7.noarch
java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.8.el7.x86_64
[root@tomcat ~]# rpm -e java-1.8.0-openjdk-headless --nodeps        #卸载Java1.8
[root@tomcat ~]# rpm -e java-1.7.0-openjdk-headless --nodeps        #卸载Java1.7
[root@tomcat ~]# cd /usr/src
[root@tomcat src]# rz      #上传我提供的两个源码包
[root@tomcat src]# ls         #源码包如下
apache-tomcat-8.5.35.tar.gz  jdk-8u211-linux-x64.tar.gz
[root@tomcat ~]# tar zxf jdk-8u211-linux-x64.tar.gz -C /usr/local/   #解压JDK到指定路径
[root@tomcat src]# tar zxf apache-tomcat-8.5.35.tar.gz   #解压Tomcat源码包
[root@tomcat src]# mv apache-tomcat-8.5.35 /usr/local/tomcat   #将解压后的目录移动到指定目录并命名为tomcat
[root@tomcat ~]# vim /etc/profile         #编辑环境变量,在配置文件末尾添加以下内容
export JAVA_HOME=/usr/local/jdk1.8.0_211
export JRE_HOME=/usr/local/jdk1.8.0_211/jre
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
[root@tomcat ~]# . /etc/profile       #重新加载环境变量
[root@tomcat ~]# java -version       #查看java版本
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)
#开启Tomcat的JMX远程管理功能
[root@tomcat src]# vim /usr/local/tomcat/bin/catalina.sh
export JDK_JAVA_OPTIONS    #跳转到306行,也就是该行,下面写入以下内容
CATALINA_OPTS=" $CATALINA_OPTS  -Dcom.sun.management.jmxremote  -Dcom.sun.management.jmxremote.port=8888 -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.20.3  -Dcom.sun.management.jmxremote.authenticate=false"
#注:上面的IP为Tomcat本机的IP,端口“8888”可以自定义,不要冲突即可
[root@tomcat src]# /usr/local/tomcat/bin/startup.sh   #启动Tomcat
#确定相关端口在监听
[root@tomcat src]# netstat -anpt | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      3871/java           
[root@tomcat src]# netstat -anpt | grep 8888
tcp6       0      0 :::8888                 :::*                    LISTEN      3871/java           
3、回到Zabbix-server进行JMX连接测试

注:该测试需要系统支持图形化桌面,若没有图形化桌面,此验证过程可以省略。

[root@zabbix ~]# jconsole    #执行此命令,此命令是Java-gateway提供的。

执行上面的命令后,会弹出下面提示框(输入Tomcat的IP+JMX监听端口,进行连接):

Zabbix监控Tomcat及Nginx

确保可以看到以下画面即可:

Zabbix监控Tomcat及Nginx

4、登录到Zabbix Server的web界面进行配置

Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及Nginx

稍等片刻,显示如下即可:

Zabbix监控Tomcat及Nginx

可以进行以下操作,看到JVM虚拟机相关的信息:

Zabbix监控Tomcat及Nginx

二、监控Nginx服务器

自行安装部署Nginx,这里我还将Nginx配置在Tomcat这台主机上。部署Nginx可参考博文:搭建Nginx服务器及深度优化

1、在Nginx服务器上部署agent客户端
#安装zabbix-agent
[root@tomcat src]# tar zxf zabbix-3.2.1.tar.gz 
[root@tomcat src]# cd zabbix-3.2.1/
[root@tomcat zabbix-3.2.1]# ./configure --prefix=/usr/local/zabbix --enable-agent && make && make install
[root@tomcat zabbix-3.2.1]# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
[root@tomcat zabbix-3.2.1]# chmod +x /etc/init.d/zabbix_agentd 
#修改启动脚本
[root@tomcat zabbix-3.2.1]# sed -i 's/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g' /etc/init.d/zabbix_agentd 
[root@tomcat zabbix-3.2.1]# sed -i 's/PIDFILE=\/tmp\/$BINARY_NAME.pid/PIDFILE=$BASEDIR\/logs\/$BINARY_NAME.pid/g' /etc/init.d/zabbix_agentd
[root@tomcat zabbix-3.2.1]# useradd -M -s /sbin/nologin zabbix
[root@tomcat ~]# mkdir -p /usr/local/zabbix/logs/
[root@tomcat ~]# chown -R zabbix:zabbix /usr/local/zabbix
[root@tomcat zabbix-3.2.1]# chkconfig --add zabbix_agentd
[root@tomcat zabbix-3.2.1]# chkconfig zabbix_agentd on
[root@tomcat zabbix-3.2.1]# systemctl start zabbix_agentd
[root@tomcat zabbix-3.2.1]# netstat -anpt | grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      97364/zabbix_agentd 
#修改agent配置文件
[root@tomcat zabbix-3.2.1]# cd /usr/local/zabbix/etc/
[root@tomcat etc]# sed -i 's/# PidFile=\/tmp\/zabbix_agentd.pid/PidFile=\/usr\/local\/zabbix\/logs\/zabbix_agentd.pid/g' zabbix_agentd.conf
[root@tomcat etc]# sed -i 's/LogFile=\/tmp\/zabbix_agentd.log/LogFile=\/usr\/local\/zabbix\/logs\/zabbix_agentd.log/g' zabbix_agentd.conf
[root@tomcat etc]# sed -i 's/Server=127.0.0.1/Server=192.168.20.2/g' zabbix_agentd.conf
[root@tomcat etc]# sed -i 's/# ListenPort=10050/ListenPort=10050/g' zabbix_agentd.conf
[root@tomcat etc]# sed -i 's/# ListenIP=0.0.0.0/ListenIP=0.0.0.0/g' zabbix_agentd.conf
[root@tomcat etc]# sed -i 's/ServerActive=127.0.0.1/ServerActive=192.168.20.2/g' zabbix_agentd.conf
[root@tomcat etc]# sed -i 's/Hostname=Zabbix server/Hostname=192.168.20.3/g' zabbix_agentd.conf
[root@tomcat etc]# sed -i 's/# Timeout=3/Timeout=15/g' zabbix_agentd.conf
[root@tomcat etc]# sed -i 's/# Include=\/usr\/local\/etc\/zabbix_agentd.conf.d\//Include=\/usr\/local\/zabbix\/etc\/zabbix_agentd.conf.d\//g' zabbix_agentd.conf
[root@tomcat etc]# sed -i 's/# UnsafeUserParameters=0/UnsafeUserParameters=1/g' zabbix_agentd.conf
[root@tomcat etc]# echo 'UserParameter=nginx.info[*],/usr/local/zabbix/scripts/nginx.sh  $1' >> zabbix_agentd.conf
[root@tomcat etc]# echo "UserParameter=nginx.ping[*],netstat -anput | grep -w 80 | grep -w LISTEN | wc -l" >> zabbix_agentd.conf
[root@tomcat etc]# egrep -v '^$|^#' zabbix_agentd.conf   #确定配置无误
PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=192.168.20.2
ListenPort=10050
ListenIP=0.0.0.0
ServerActive=192.168.20.2
Hostname=192.168.20.3
Timeout=15
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf
UnsafeUserParameters=1
UserParameter=nginx.info[*],/usr/local/zabbix/scripts/nginx.sh  $1
UserParameter=nginx.ping[*],netstat -anput | grep -w 80 | grep -w LISTEN | wc -l
2、在Nginx服务器上编写Nginx脚本

注:此脚本可在我文章开头的下载链接中获得。

[root@tomcat etc]# mkdir /usr/local/zabbix/scripts/
[root@tomcat etc]# cd /usr/local/zabbix/scripts/
[root@tomcat scripts]# cat nginx.sh     #脚本如下,所有IP均为Nginx的IP

#!/bin/bash
case $1 in
index)
    RS=`curl -s -I 192.168.20.3/index.html |head -n1 |awk '{print $2}'`
    echo $RS
    ;;

WorkerProcesses)
    RS=`ps aux |grep nginx | grep -w worker |wc -l`
    echo $RS
    ;;

bps)
    RS=`ab -q -n 1000 -c 1000 http://192.168.20.3/index.html |grep Request | awk '{print $4}'`
    echo $RS
    ;;

Current)
    LINES=`cat /usr/local/nginx/logs/access.log |wc -l`
    sleep 1
    NOW_LINES=`cat /usr/local/nginx/logs/access.log |wc -l`
    echo $NOW_LINES $LINES | awk '{print $1 -$2}'
;;
IP)
    RS=`cat /usr/local/nginx/logs/access.log | awk '{print $1}' |sort -u | wc -l`
    echo $RS
    ;;

VirtualHost)
    RS=`cat /usr/local/nginx/conf/nginx.conf |grep -v '#' | grep server_name | wc -l`
    echo $RS
    ;;

MD5)
    RS=`md5sum /usr/local/nginx/conf/nginx.conf |awk '{print $1}'`
    echo $RS
    ;;

PV)
    RS=`wc -l /usr/local/nginx/logs/access.log | awk '{print $1}'`
    echo $RS
    ;;
esac
[root@tomcat scripts]#  /etc/init.d/zabbix_agentd restart   #重启agent
#调整相应权限,需要所有用户都可以执行netstat命令
[root@tomcat scripts]# chmod +s /usr/bin/netstat
[root@tomcat scripts]# chmod  +x  nginx.sh
3、配置Zabbix-Server Web界面

1、在配置web界面前,可现在Zabbix-Server端测试一下相关信息是否可以获得,以便验证脚本的正确性(同时ab压力测试是必须要有的,Server端和Agent端都要装该命令)。

[root@zabbix fonts]# yum -y install httpd-tools     #安装ab压力测试命令
[root@zabbix fonts]# ab -q -n 1000 -c 1000 http://192.168.20.3/index.html |grep Request | awk '{print $4}'
2117.31         #有信息返回则表示正常

配置Web界面:

Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及Nginx

1)配置应用集

Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及Nginx

2)配置监控项

Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及Nginx

监控Nginx总访问量:

接下来每添加一个监控项,都要点击下面的按钮,为了简单,以后就不截下面页面的图了。

Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及Nginx

独立IP数

Zabbix监控Tomcat及Nginx

Nginx主页的状态

Zabbix监控Tomcat及Nginx

Nginx当前并发数

Zabbix监控Tomcat及Nginx

配置文件MD5值用来监控nginx配置文件是否被更改(注意图中其信息类型)

Zabbix监控Tomcat及Nginx

当前吞吐量bps,并且让其更新时间为60秒(注意其信息类型)

Zabbix监控Tomcat及Nginx

监控nginx工作进程的个数

Zabbix监控Tomcat及Nginx

监控Nignx虚拟主机的个数

Zabbix监控Tomcat及Nginx

3)创建触发器

nginx服务意外停止工作触发器Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及Nginx

创建Nginx主页不可访问的触发器Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及Nginx

创建Nginx配置文件被修改触发器Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及Nginx

4)添加被监控主机

Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及Nginx

5)查看Zabbix监控的数据

Zabbix监控Tomcat及Nginx

6)给监控nginx状态添加映射(更加友好)

Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及NginxZabbix监控Tomcat及Nginx

确定已添加:Zabbix监控Tomcat及Nginx

关联到监控项

Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及Nginx

在Server端模拟并发,然后查看图形检测页面:

[root@zabbix ~]# vim a.sh      #编写脚本

#!/bin/bash
while true
do
ab -n 1000 -c 100 192.168.20.3/index.html &> /dev/null
done
[root@zabbix ~]# sh a.sh      #执行脚本

执行脚本后,图形界面如下:

Zabbix监控Tomcat及Nginx

也可以自定义图表,如下:Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及Nginx

Zabbix监控Tomcat及Nginx

相关文章
最新文章
热点推荐