Fork me on GitHub

zabbix监控nginx

nginx和php-fpm一样内建了一个状态页,利用状态页得到的各项参数,使用zabbix实现对nginx状态监控

nginx配置

在配置的server内添加location

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

需要安装插件http_stub_status_module,编译安装即:

./configure --with-http_stub_status_module 

nginx status数值的含义说明

字段 含义
Active connections 当前的活动连接数,包含处于等待状态的连接
accepts 接收到的客户端发来的连接数
handled 已经处理完成的连接数,一般情况下它和accepts值相同,如果不同说明nginx性能出现瓶颈
requests 客户端请求总数
reading 正在读取请求头信息的连接数
writing 正在发送响应报文的连接数
waiting 处于闲置状态正等待客户端发送请求的连接数

浏览器或者curl指令查看nginx status:

[root@localhost ~]# curl http://localhost/status
Active connections: 1 
server accepts handled requests
 201 201 1630 
Reading: 0 Writing: 1 Waiting: 0

监控nginx

zabbix agent客户端脚本

/etc/zabbix/script/nginx_status.sh

#!/bin/bash

SERVER='127.0.0.1:8080'

case $1 in
  ping)
    /usr/sbin/pidof nginx | wc -l
    ;;
  active)
    /usr/bin/curl "http://$SERVER/status" 2>/dev/null | grep 'Active' | awk '{print $NF}'
    ;;
  reading)
    /usr/bin/curl "http://$SERVER/status" 2>/dev/null | grep 'Reading' | awk '{print $2}'
    ;;
  writing)
    /usr/bin/curl "http://$SERVER/status" 2>/dev/null | grep 'Writing' | awk '{print $4}'
    ;;
  waiting)
    /usr/bin/curl "http://$SERVER/status" 2>/dev/null | grep 'Waiting' | awk '{print $6}'
    ;;
  accepts)
    /usr/bin/curl "http://$SERVER/status" 2>/dev/null | awk NR==3 | awk '{print $1}'
    ;;
  handled)
    /usr/bin/curl "http://$SERVER/status" 2>/dev/null | awk NR==3 | awk '{print $2}'
    ;;
  requests)
    /usr/bin/curl "http://$SERVER/status" 2>/dev/null | awk NR==3 | awk '{print $3}'
    ;;
  *)
   echo "Usage: %0 {active | reading | writing| waiting| accepts | handled | requests}"
   ;;
esac

zabbix agent客户端配置

/etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf

#Monitor Nginx status
UserParameter=nginx.status[*],/etc/zabbix/script/nginx_status.sh $1   

zabbix web端配置

配置请参考 zabbix自动发现规则监控redis(主从哨兵)

下载:nginx监控模板

轻轻的我走了,正如我轻轻的来