UserParameter=Nginx.Accepted-Connections,python /etc/zabbix/zabbix_agentd.d/scripts/nginx_status.py -h 127.0.0.1 -p 80 -a accepted
UserParameter=Nginx.Active-Connections,python /etc/zabbix/zabbix_agentd.d/scripts/nginx_status.py -h 127.0.0.1 -p 80 -a active
UserParameter=Nginx.Handled-Connections,python /etc/zabbix/zabbix_agentd.d/scripts/nginx_status.py -h 127.0.0.1 -p 80 -a handled
UserParameter=Nginx.Reading-Connections,python /etc/zabbix/zabbix_agentd.d/scripts/nginx_status.py -h 127.0.0.1 -p 80 -a reading
UserParameter=Nginx.Total-Requests,python /etc/zabbix/zabbix_agentd.d/scripts/nginx_status.py -h 127.0.0.1 -p 80 -a requests
UserParameter=Nginx.Waiting-Connections,python /etc/zabbix/zabbix_agentd.d/scripts/nginx_status.py -h 127.0.0.1 -p 80 -a waiting
UserParameter=Nginx.Writting-Connections,python /etc/zabbix/zabbix_agentd.d/scripts/nginx_status.py -h 127.0.0.1 -p 80 -a writingActive connections:当前活动的连接数
server accepts handled requests:服务器处理的连接数
这里有三个数字,分别是:连接数、握手数和请求数
Reading:成功读取到客户端Header的数量
Writing:返还给客户端Header的数量
Waiting:如果服务器开启了keep-alive
那么这个数值应该为:active – (reading + writing)#!/bin/env python
### nginx_status.py -h 127.0.0.1 -p 123456 -a handled
#
# Options:
#
# -a active
# -a accepted
# -a handled
# -a requests
# -a reading
# -a writing
# -a waiting
#
import urllib2, base64, sys, getopt
import re
##
def Usage ():
print "Usage: getNginxInfo.py -h 127.0.0.1 -p 80 -a [active|accepted|handled|request|reading|writing|waiting]"
sys.exit(2)
##
def main ():
# Default values
host = "localhost"
port = "80"
getInfo = "None"
if len(sys.argv) < 2:
Usage()
try:
opts, args = getopt.getopt(sys.argv[1:], "h:p:a:")
except getopt.GetoptError:
Usage()
# Assign parameters as variables
for opt, arg in opts :
if opt == "-h" :
host = arg
if opt == "-p" :
port = arg
if opt == "-a" :
getInfo = arg
url="http://" + host + ":" + port + "/nginx_status/"
request = urllib2.Request(url)
result = urllib2.urlopen(request)
buffer = re.findall(r'\d{1,8}', result.read())
## Format:
## Active connections: 196
## server accepts handled requests
## 272900 272900 328835
## Reading: 0 Writing: 6 Waiting: 190
if ( getInfo == "active"):
print buffer[0]
elif ( getInfo == "accepted"):
print buffer[1]
elif ( getInfo == "handled"):
print buffer[2]
elif ( getInfo == "requests"):
print buffer[3]
elif ( getInfo == "reading"):
print buffer[4]
elif ( getInfo == "writing"):
print buffer[5]
elif ( getInfo == "waiting"):
print buffer[6]
else:
print "unknown"
sys.exit(1)
if __name__ == "__main__":
main()server {
#监听80端口
listen 58565;
#指定域名
server_name 127.0.0.1;
location /nginx_status {
#开启stub_status
stub_status on;
#关闭访问日志
access_log off;
#允许访问的IP
allow 127.0.0.1;
#禁止其他IP访问
deny all;
}
}#!/bin/bash
############################################################
# $Name: nginx_status.sh
# $Version: v1.0
# $Function: Nginx Status
# $Author: xuliangwei
# $organization: www.xuliangwei.com,www,bjstack.com
# $Create Date: 2016-06-23
# $Description: Monitor Nginx Service Status
############################################################
NGINX_PORT=80 #如果端口不同仅需要修改脚本即可,否则修改xml很麻烦
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