千家信息网

Zabbix监控Tomcat及Nginx

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,注:本篇博文是基于部署zabbix监控服务器的环境进行的。这里将开启一台client服务器(被监控端)用于测试。博文大纲:一、监控Tomcat二、监控Nginx服务器一、监控Tomcat监控Tomca
千家信息网最后更新 2025年12月03日Zabbix监控Tomcat及Nginx

注:本篇博文是基于部署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=10052PID_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 10052tcp6       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_64java-1.8.0-openjdk-headless-1.8.0.102-4.b14.el7.x86_64java-1.7.0-openjdk-1.7.0.111-2.6.7.8.el7.x86_64copy-jdk-configs-1.2-1.el7.noarchjava-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_211export JRE_HOME=/usr/local/jdk1.8.0_211/jreexport CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jarexport 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.shexport 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 8080tcp6       0      0 :::8080                 :::*                    LISTEN      3871/java           [root@tomcat src]# netstat -anpt | grep 8888tcp6       0      0 :::8888                 :::*                    LISTEN      3871/java           

3、回到Zabbix-server进行JMX连接测试

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

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

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

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

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

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

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

二、监控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 zabbixtcp        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.pidLogFile=/usr/local/zabbix/logs/zabbix_agentd.logServer=192.168.20.2ListenPort=10050ListenIP=0.0.0.0ServerActive=192.168.20.2Hostname=192.168.20.3Timeout=15Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.confUnsafeUserParameters=1UserParameter=nginx.info[*],/usr/local/zabbix/scripts/nginx.sh  $1UserParameter=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/bashcase $1 inindex)    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界面:

1)配置应用集

2)配置监控项

监控Nginx总访问量:

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

独立IP数

Nginx主页的状态

Nginx当前并发数

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

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

监控nginx工作进程的个数

监控Nignx虚拟主机的个数

3)创建触发器

nginx服务意外停止工作触发器

创建Nginx主页不可访问的触发器

创建Nginx配置文件被修改触发器

4)添加被监控主机

5)查看Zabbix监控的数据

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


确定已添加:

关联到监控项

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

[root@zabbix ~]# vim a.sh      #编写脚本#!/bin/bashwhile truedoab -n 1000 -c 100 192.168.20.3/index.html &> /dev/nulldone[root@zabbix ~]# sh a.sh      #执行脚本

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

也可以自定义图表,如下:

监控 配置 服务 服务器 文件 脚本 测试 命令 信息 界面 图形 数据 源码 端口 触发器 主机 功能 环境 链接 面的 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 朝闻天下国家网络安全 我的世界服务器变成创造的指令 软件开发商用不了怎么办 一般数据库表的字段名怎么写 阿里网络安全部门 关于科技未来互联网的文章 软件开发模型价格 苹果电脑显示服务器连接错误 网络安全保卫支队民警升旗 网关服务器 设置 存储服务器接口 湖州网络安全防护 浦东新区应用软件开发服务 维护网络安全教程 江苏商城软件开发报价 抖音服务器一年维护费需要多少钱 上海服务器机柜价位 sql删除指定数据库某行语句 临沂蓝讯互联网科技有限公司 中信集团直属软件开发中心 数据库教学信息系统设计 苹果平板网络安全管理 加盟网络技术公司靠谱吗 企业级代理服务器软件 做单片机软件开发前景如何 网络安全相关技术和策略 个人游戏服务器cpu选什么 虎豹骑登录服务器 数据库系统中最常使用的数据模型 虹口区软件开发技术服务对象
0