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
等待触发告警