Zabbix监控Nginx的status

时间:2022-10-15 07:55:20

Zabbix监控Nginx的status

部署Zabbix监控Nginx的status

环境说明

主机名 IP 服务 系统
zabbix 192.168.92.139 zabbix centos8
nginx 192.168.92.130 nginx
zabbix_agentd
centos8

前言:

部署zabbix不作演示,请参考此篇博客==> 部署zabbix监控服务

nginx开启状态页面

nginx能开启状态页面的前提是安装了这个模块,你可以nginx -V查看一下编译参数里有无--with-http_stub_status_module

[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
...................
        location = /status {
            stub_status;
            allow 127.0.0.1;	 #允许本机访问
            allow 192.168.92.1;		#允许真实本机访问
            deny all;			#拒绝所有其它的主机
        }
...................

验证是否能访问,不能访问则无法监控状态

[root@nginx ~]# curl http://127.0.0.1/status
Active connections: 1
server accepts handled requests
 2 2 2
Reading: 0 Writing: 1 Waiting: 0

去浏览器验证真实本机是否能访问

![image-20221013231731147]https://qny.helloyf.fun/blog/nginx/nginx27.png)

在nginx服务器安装zabbix_agentd并配置监控脚本

安装zabbix_agentd

#新增zabbix用户
[root@nginx ~]# useradd -rMs /sbin/nologin zabbix
#安装依赖包
[root@nginx ~]# dnf -y install make gcc gcc-c++ pcre-devel openssl openssl-devel wget
#下载zabbix并解压
[root@nginx ~]# cd /usr/local/src/
[root@nginx src]# wget https://cdn.zabbix.com/zabbix/sources/stable/6.2/zabbix-6.2.3.tar.gz
[root@nginx src]# tar -xf zabbix-6.2.3.tar.gz
#编译安装zabbix_agentd
[root@nginx zabbix-6.2.3]# ./configure --enable-agent
......预编译过程略...........
***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*              <http://www.zabbix.com>                    *
***********************************************************
[root@nginx zabbix-6.2.3]# make install
#连接到zabbix服务端
[root@nginx zabbix-6.2.3]# cd /usr/local/etc/
[root@nginx etc]# ls
zabbix_agentd.conf  zabbix_agentd.conf.d
[root@nginx etc]# vim zabbix_agentd.conf
.......................
Server=192.168.92.139		#填写zabbix服务端的IP地址
.......................
ServerActive=192.168.92.139		#填写zabbix服务端的IP地址
.......................
Hostname=nginx		#该主机可自定义,但要全局唯一。在web管理界面中添加主机要用到该主机名,两边须一致方可识别
.......................
#启动zabbix_agentd
[root@nginx etc]# zabbix_agentd
#zabbix_agentd的默认端口是10050
[root@nginx etc]# ss -anlt | grep 10050
LISTEN 0      128          0.0.0.0:10050      0.0.0.0:*

编写并配置监控脚本

#编写监控脚本
[root@nginx ~]# mkdir /scripts
[root@nginx ~]# cd /scripts
[root@nginx scripts]# vim nginx_status.sh
#!/bin/bash

case $1 in
    Reading)
        curl -s 127.0.0.1/status |awk "NR==4{print\$2}"
        ;;
    Writing)
        curl -s 127.0.0.1/status |awk "NR==4{print\$4}"
        ;;
    Waiting)
        curl -s 127.0.0.1/status |awk "NR==4{print\$6}"
    ;;
    *)
        exit
        ;;
esac
[root@nginx scripts]# chmod +x nginx_status.sh

#配置监控脚本
[root@nginx scripts]# vim /usr/local/etc/zabbix_agentd.conf
.............
UnsafeUserParameters=1
UserParameter=nginx_status[*],/bin/bash /scripts/nginx_status.sh $1
[root@nginx scripts]# pkill zabbix_agentd
[root@nginx scripts]# zabbix_agentd

#去zabbix服务端检查key是否可用
[root@zabbix ~]# zabbix_get -s 192.168.92.130 -k nginx_status[Waiting]
2

在zabbix的Web界面配置监控nginx

  1. 添加主机

Zabbix监控Nginx的status

  1. 添加监控项

监控Reading

Zabbix监控Nginx的status

监控Writing

Zabbix监控Nginx的status

监控Waiting

Zabbix监控Nginx的status

Zabbix监控Nginx的status

查看是否有监控返回的值,有值则说明监控成功了

Zabbix监控Nginx的status

Zabbix监控Nginx的status

Zabbix监控Nginx的status

  1. 添加触发器

在企业中要视具体服务器情况而作配置。