zabbix自定义监控nginx状态界面

zabbix自定义监控nginx状态界面

环境说明

系统 主机 IP
centos8 zabbix 192.168.169.139
centos8 nginx 192.168.169.140

关于zabbix的部署,详情见《zabbix部署》

nginx主机需要部署nginx服务,这里已经提前部署完毕

在nginx主机安装zabbix_agentd

//首先想要监控nginx,就需要将nginx主机添加到zabbix的主机里,在nginx主机安装zabbix_agentd
//创建zabbix用户
[root@nginx ~]# useradd -rMs /sbin/nologin zabbix

//安装依赖包
[root@nginx ~]# dnf -y install openssl-devel pcre-devel expat-devel gcc gcc-c++ make

//解压nginx安装包
[root@nginx ~]# cd /usr/src/
[root@nginx src]# tar xf zabbix-6.2.2.tar.gz
[root@nginx src]# cd zabbix-6.2.2/
[root@nginx zabbix-6.2.2]# ./configure --enable-agent
[root@nginx zabbix-6.2.2]# make install

//启动zabbix_agentd
[root@nginx zabbix-6.2.2]# cd /usr/local/etc/
[root@nginx etc]# vim zabbix_agentd.conf
Server=192.168.169.139
ServerActive=192.168.169.139
Hostname=Zabbix_nginx

[root@nginx etc]# zabbix_agentd 
//有10050端口就说明启动成功
[root@nginx etc]# ss -antl
State          Recv-Q         Send-Q                  Local Address:Port                    Peer Address:Port         Process         
LISTEN         0              128                           0.0.0.0:111                          0.0.0.0:*                            
LISTEN         0              128                           0.0.0.0:80                           0.0.0.0:*                            
LISTEN         0              128                           0.0.0.0:22                           0.0.0.0:*                            
LISTEN         0              128                           0.0.0.0:443                          0.0.0.0:*                            
LISTEN         0              128                           0.0.0.0:10050                        0.0.0.0:*                            
LISTEN         0              128                              [::]:111                             [::]:*                            
LISTEN         0              128                              [::]:22                              [::]:*

将nginx主机加入zabbix监控host

编写脚本监控nginx状态界面

我们需要监控的nginx状态界面,所以需要打开nginx状态界面

//只需要在nginx配置文件里添加如下内容,然后重启或重新加载nginx配置文件即可
location /status {
            stub_status on;
            allow 192.168.169.139;		//允许nginx端能够进行访问
            allow 192.168.169.140;		//允许自己也就是nginx端能够访问
            deny all;
        }

我们可以试试在zabbix服务器端能否访问到nginx服务器的状态界面

[root@zabbix ~]# curl http://192.168.169.140/status
Active connections: 1 
server accepts handled requests
 20 20 14 
Reading: 0 Writing: 1 Waiting: 0

ok,既然能够访问的到,那么就可以进行监控

编写脚本,对nginx状态界面进行监控

脚本在agent端进行编写

//我们需要监控的值是状态界面里的Reading、Writing以及WAiting,当这三个值的某一个到达某个指定的值的时候就会告警,当然,我们这里是实验环境,所以不会出现值过大的情况,所以后面配置触发器的时候就使用现有的值进行触发,看看实验效果
//编写脚本,监控Reading、Writing、WAiting并获取对应的值
[root@nginx ~]# mkdir -p /scripts
[root@nginx ~]# cd /scripts/
[root@nginx scripts]# touch check_nginx_status.sh
[root@nginx scripts]# chmod +x check_nginx_status.sh
[root@nginx scripts]# cat check_nginx_status.sh 
#!/bin/bash

case $1 in
    'Reading')
        echo $(curl -s http://192.168.169.140/status | awk 'NR==4{print $2}')
        ;;
    'Writing')
        echo $(curl -s http://192.168.169.140/status | awk 'NR==4{print $4}')
        ;;
    'Waiting')
        echo $(curl -s http://192.168.169.140/status | awk 'NR==4{print $6}')
        ;;
    *)
        exit
        ;;
esac

//测试脚本功能
[root@nginx scripts]# ./check_nginx_status.sh Reading
0
[root@nginx scripts]# ./check_nginx_status.sh Writing
1
[root@nginx scripts]# ./check_nginx_status.sh Waiting
0

//编辑zabbix_agentd.conf文件
[root@nginx scripts]# vim /usr/local/etc/zabbix_agentd.conf
UnsafeUserParameters=1		//打开不安全用户参数
UserParameter=check_nginx_status[*],/bin/bash /scripts/check_nginx_status.sh $1	//配置检查nginx状态的key

//重启zabbix_agentd
[root@nginx scripts]# pkill zabbix_agentd 
[root@nginx scripts]# zabbix_agentd

//在zabbix服务器端测试key值能否正常使用
[root@zabbix ~]# zabbix_get -s 192.168.169.140 -k check_nginx_status[Reading]
0
[root@zabbix ~]# zabbix_get -s 192.168.169.140 -k check_nginx_status[Writing]
1
[root@zabbix ~]# zabbix_get -s 192.168.169.140 -k check_nginx_status[Waiting]
0
//ok,没问题,可以正常使用

配置监控项

Reading

Writing

Waiting

添加触发器

在前面已经说了,由于是实验环境,nginx没有很大的访问量,所以在配置触发器的时候,当值大于等于0的时候就告警,查看实验效果

Reading

Writing

Waiting

等待触发告警

posted @ 2022-10-13 23:33  Zic师傅  阅读(48)  评论(0编辑  收藏  举报