zabbix监控nginx运行状态

   

注意:要执行nginx_status,就要在nginx编译时加上–with-http_stub_status_module

出于对廉价的垃圾服务器的不信任,我需要监控一台服务器上的nginx的状态,于是我决定将其加入到zabbix中去。

监控使用一个简单的命令nginx_status,我们能获得很多信息:

# /usr/bin/curl -s "http://127.0.0.1:80/nginx_status/"
Active connections: 1 
server accepts handled requests
 99 99 1763 
Reading: 0 Writing: 1 Waiting: 0

这些信息能够帮助我们了解nginx当前的状态,他们所代表的含义如下:

名称描述
Active正处理的活动链接个数
accepts处理连接总数
handled创建握手总数
requests处理请求总数
Reading读取到客户端的 Header 信息数
Writing返回给客户端的 Header 信息数
Waiting等候下一次请求指令的驻留链接

1 创建监控脚本

# vim /etc/zabbix/zabbix_agentd.d/nginx_monitor.conf
UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh "$1"
# vim /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh
NGINX_PORT=80  
NGINX_COMMAND=$1
nginx_active(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Active/ {print $NF}'
}
nginx_reading(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Reading/ {print $2}'
}
nginx_writing(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Writing/ {print $4}'
       }
nginx_waiting(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Waiting/ {print $6}'
       }
nginx_accepts(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $1}'
       }
nginx_handled(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $2}'
       }
nginx_requests(){
    /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $3}'
       }
  case $NGINX_COMMAND in
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
handled)
nginx_handled;
;;
requests)
nginx_requests;
;;
      *)
echo $"USAGE:$0 {active|reading|writing|waiting|accepts|handled|requests}"
    esac
# chmod +x /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh
# systemctl restart zabbix-agent #重启agent

2 服务端测试

# /usr/local/zabbix/bin/zabbix_get  -s  XXX.XXX.XXX.XXX -k nginx_status[requests]
1762
# /usr/local/zabbix/bin/zabbix_get  -s  XXX.XXX.XXX.XXX -k nginx_status[active]
1

3 zabbix server配置

配置—->主机—->监控项—->创建监控项,创建相应的监控项即可,然后就可以根据自己的需求创建触发项和图像了

举例

发表评论