那年那日那朵花

".......(o´ω`o)......"

zabbix监控nginx状态

2016-05-31 14:45 linux zabbix

分享一下zabbix监控nginx状态的方法,实现方式分3个部分

  1. 自定义监控脚本
  2. 自定义key来调用
  3. zabbix的web界面上通过配置实现

自定义监控脚本

实现自定义监控脚本需要首先配置nginx的状态展示功能。添加nginx的server如下

server {
    listen 80;
    server_name 127.0.0.1;

    location /nginxstatus {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    deny all;
    }
}

配置完nginx reload后测试下 curl -s "http://127.0.0.1/nginxstatus" 正常这样就会看到输出nginx的状态信息的。然后贴一下nginx的监控脚本

#!/bin/bash
#monitor nginx status
checkactive(){
    curl -s "http://127.0.0.1/nginxstatus" |grep Active |awk '{print $3}'
}

checkaccept(){
    curl -s "http://127.0.0.1/nginxstatus" |awk 'NR==3 {print $1}'
}

checkhandled(){
    curl -s "http://127.0.0.1/nginxstatus" |awk 'NR==3 {print $2}'
}

checkrequest(){
    curl -s "http://127.0.0.1/nginxstatus" |awk 'NR==3 {print $3}'
}

checkreading(){
    curl -s "http://127.0.0.1/nginxstatus" |grep Reading|awk '{print $2}'
}

checkwriting(){
    curl -s "http://127.0.0.1/nginxstatus" |grep Writing|awk '{print $4}'
}

checkwaiting(){
    curl -s "http://127.0.0.1/nginxstatus" |grep Waiting|awk '{print $NF}'
}

case "$1" in
active)
    checkactive
    ;;
accept)
    checkaccept
    ;;
handled)
    checkhandled
    ;;
request)
    checkrequest
    ;;
reading)
    checkreading
    ;;
writing)
    checkwriting
    ;;
waiting)
    checkwaiting
    ;;
*)
    echo "Usage : $0  {active|accept|handled|request|reading|writing|waiting}"
esac

脚本执行时 $1参数为active|accept|handled|request|reading|writing|waiting 根据不同的参数输出不同的监控结果。

自定义key

可以这样:

vi /etc/zabbix/zabbix_agentd.d/nginx_monitor.conf

内容如下:

UserParameter=custom.nginx.monitor[*],/etc/zabbix/scripts/zabbix_minitor_nginx.sh $1

web界面上配置

在zabbix的web界面上可以这样定义key,例如

custom.nginx.monitor[active]

custom.nginx.monitor[accept]

这样就可以监控nginx的active和accept值了,其他监控项是同样的道理。

心情

Cloudhu 个人随笔|built by django|

沪ICP备16019452号-1