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