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 @   Zic师傅  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示