zabbix 3.0 nginx监控

监控运维 649 浏览

zabbix agent端操作

查看nginx是否开启stub status

编译选项中必须包含–with-http_stub_status_module,如果没有,需要带上–with-http_stub_status_module重新编译nginx

请输入图片描述


配置nginx.conf

修改nginx.conf,重新加载nginx

[root@VM-4ac91edd-f241-426b-bf24-a14dc5d1ae2f conf]# vim nginx.conf

location /nginx_status {
              stub_status on;
              access_log   off;
        }
[root@VM-4ac91edd-f241-426b-bf24-a14dc5d1ae2f conf]# cd ../sbin/
[root@VM-4ac91edd-f241-426b-bf24-a14dc5d1ae2f sbin]# ./nginx -s reload

实验nginx状态是否能获取

如出现以下情况,说明配置成功

[root@VM-4ac91edd-f241-426b-bf24-a14dc5d1ae2f sbin]# curl http://127.0.0.1:90/nginx_status
Active connections: 12 
server accepts handled requests
 7900753 7900753 23731956 
Reading: 0 Writing: 1 Waiting: 11

在zabbix客户端机器上创建nginx监控脚本

[root@VM-4ac91edd-f241-426b-bf24-a14dc5d1ae2f zabbix]# cd /usr/local/zabbix/
[root@VM-4ac91edd-f241-426b-bf24-a14dc5d1ae2f zabbix]# mkdir scripts
[root@VM-4ac91edd-f241-426b-bf24-a14dc5d1ae2f zabbix]# vim scripts/nginx_status.sh
#!/bin/bash
case $1 in
    active)
        curl -s http://127.0.0.1:90/nginx_status | awk '/Active/ {print $3}' ;;
    accepts)
        curl -s http://127.0.0.1:90/nginx_status | awk 'NR==3 {print $1}' ;;
    handled)
        curl -s http://127.0.0.1:90/nginx_status | awk 'NR==3 {print $2}' ;;
    requests)
        curl -s http://127.0.0.1:90/nginx_status | awk 'NR==3 {print $3}' ;;
    reading)
        curl -s http://127.0.0.1:90/nginx_status | awk '/Reading/ {print $2}' ;;
    writing)
        curl -s http://127.0.0.1:90/nginx_status | awk '/Writing/ {print $4}' ;;
    waiting)
        curl -s http://127.0.0.1:90/nginx_status | awk '/Waiting/ {print $6}' ;;
    *)
        echo "Usage: $0 { active | accepts | handled | requests | reading | writing | waiting }" ;;
esac
[root@VM-4ac91edd-f241-426b-bf24-a14dc5d1ae2f zabbix]# vim etc/zabbix_agentd.conf
在zabbix_agentd.conf末尾添加:
#nginx status
UserParameter=nginx.active,/usr/local/zabbix/scripts/nginx_status.sh active
UserParameter=nginx.accepts,/usr/local/zabbix/scripts/nginx_status.sh accepts
UserParameter=nginx.handled,/usr/local/zabbix/scripts/nginx_status.sh handled
UserParameter=nginx.requests,/usr/local/zabbix/scripts/nginx_status.sh requests
UserParameter=nginx.reading,/usr/local/zabbix/scripts/nginx_status.sh reading
UserParameter=nginx.writing,/usr/local/zabbix/scripts/nginx_status.sh writing
UserParameter=nginx.waiting,/usr/local/zabbix/scripts/nginx_status.sh waiting

重启zabbix_agentd

[root@VM-4ac91edd-f241-426b-bf24-a14dc5d1ae2f zabbix]# service zabbix_agentd restart

zabbix server管理页面端操作

创建模板

配置->模板->创建模板->填写模板名称->添加,模板名称为Template App Nginx Service

请输入图片描述 请输入图片描述

给模板创建应用集

配置->模板,找到Template App Nginx Service模板,点击应用集,创建应用集(名称:Nginx status)

请输入图片描述

在刚创建的应用集中创建监控项

分别创建与zabbix_agentd.conf中对应的几个监控(nginx.accepts、nginx.active、nginx.handled、nginx.reading、nginx.requests、 nginx.waiting、 nginx.writing)

请输入图片描述

各个监控项创建好后结果如下,键值与zabbix_agentd.conf中用户参数一一对应(这里也可以看出zabbix进行各个监控项监控的套路。。) 

请输入图片描述 请输入图片描述

创建图形

创建图形很好理解,如果不创建图形,nginx的状态无法直观的展示

请输入图片描述

以上2.1、2.2、2.3、2.4步骤就完成了nginx监控模板的配置,包括创建模本、创建应用集、在应用集中创建监控项、给监控项创建图形操作,在以后的针对不同应用(例如mysql、tomcat、redis等等)的监控时可以按照这个套路来进行,达到统一配置,统一应用到被监控主机,这样操作和后期的管理都会很清晰。 

模板应用到被监控主机

配置->主机,选择要监控的主机名称,点击进去,添加刚创建的模板Template App Nginx Service即可

请输入图片描述

验证成功

请输入图片描述

关注微信公众号 "Kooola大数据" :) 聊人生 | 聊技术