1、nginx添加ngx_http_stub_status_module模块
vim /etc/nginx/conf.d/default.conf
location = /basic_status {
stub_status;
}
stub_status模块提供以下状态信息:
Active connections:当前活动客户端连接数,包括Waiting连接数。
accepts:接受的客户端连接总数。
handled:处理的连接总数。accepts 通常,除非已达到某些资源限制(例如, worker_connections限制) ,否则该参数值相同。
requests:客户端请求的总数。
Reading: nginx 正在读取请求标头的当前连接数。
Writing :nginx 将响应写回客户端的当前连接数。
Waiting:当前等待请求的空闲客户端连接数。
2、创建脚步获取nginx.status数据
vim /server/scripts/nginx_status.sh
#!/bin/bash
# Description:zabbix监控nginx性能以及进程状态
HOST="172.16.1.21"
PORT="80"
# 检测nginx进程是否存在
function ping {
/sbin/pidof nginx | wc -l
}
# 检测nginx性能
function active {
/usr/bin/curl "http://$HOST:$PORT/basic_status" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
/usr/bin/curl "http://$HOST:$PORT/basic_status" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
/usr/bin/curl "http://$HOST:$PORT/basic_status" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
/usr/bin/curl "http://$HOST:$PORT/basic_status" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
/usr/bin/curl "http://$HOST:$PORT/basic_status" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
/usr/bin/curl "http://$HOST:$PORT/basic_status" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
/usr/bin/curl "http://$HOST:$PORT/basic_status" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
$1
# 执行function
3、创建key,为zabbix提供变量获取参数
vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
UserParameter=nginx.status[*],/bin/bash /server/scripts/nginx_status.sh $
4、赋予脚步执行权限
chmod +x /server/scripts/nginx_status.sh
#测试脚步
sh /server/scripts/nginx_status.sh active
5、创建模版
#在zabbix服务器上面测试获取key值
zabbix_get -s 172.16.1.21 -p 10050 -k nginx.status[ping]