1判断状态统计模块“ngx_http_stub_status_module是否有:
[root@client ~]#nginx -V 2>&1 | grep -o 'with-http_stub_status_module'
with-http_stub_status_module2在配置文件中开启统计:
[root@client ~]#vim /application/nginx/conf/extra/nginx_status.conf
server {
listen 81;
server_name localhost;
location /status {
stub_status on;
}
}3重载nginx并测试:
[root@client ~]#systemctl reload nginx
[root@client ~]#nginx -t
nginx: the configuration file /application/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /application/nginx/conf/nginx.conf test is successful
[root@client ~]#systemctl status nginx
[root@client ~]#curl 10.0.0.31:81/status
Active connections: 1
server accepts handled requests
8 8 8
Reading: 0 Writing: 1 Waiting: 0
[root@client ~]#
各字段的含义:
Active connections:当前活跃的客户端连接数,包括Waiting连接数;
accepts:接受的客户端连接总数;
handled:已处理的连接总数。通常与“accepts”的值相同,除非达到某些资源限制,如“worker_connections”;
requests:客户端请求总数,一个客户端连接可能包含多个请求;
Reading:Nginx正在读取请求标头的当前连接数;
Writing:Nginx正在将响应写回给客户端的当前连接数;
Waiting:当前等待请求的空闲连接数。
4在子配置目录中创建一个脚本目录,并编写监控取值脚本:
[root@client ~]#cd /etc/zabbix/zabbix_agent2.d
[root@client /etc/zabbix/zabbix_agent2.d]#mkdir scripts
[root@client /etc/zabbix/zabbix_agent2.d]#cd scripts
[root@client /etc/zabbix/zabbix_agent2.d/scripts]#vi nginx_status.sh
[root@client /etc/zabbix/zabbix_agent2.d/scripts]#chmod +x nginx_status.sh
[root@client /etc/zabbix/zabbix_agent2.d/scripts]#sh nginx_status.sh #测试一下脚本
USAGE:nginx_status.sh {active|reading|writing|waiting|accepts|handled|requests}
[root@client /etc/zabbix/zabbix_agent2.d/scripts]#sh nginx_status.sh active
1
[root@client /etc/zabbix/zabbix_agent2.d/scripts]#sh nginx_status.sh accepts
3
[root@client /etc/zabbix/zabbix_agent2.d/scripts]#
#脚本内容
NGINX_PORT=81
NGINX_COMMAND=$1
nginx_active(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Active/ {print $NF}'
}
nginx_reading(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Reading/ {print $2}'
}
nginx_writing(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Writing/ {print $4}'
}
nginx_waiting(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Waiting/ {print $6}'
}
nginx_accepts(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $1}'
}
nginx_handled(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $2}'
}
nginx_requests(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/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
5在配置目录中创建执行脚本的配置文件并重启服务:
[root@client /etc/zabbix/zabbix_agent2.d]#vim nginx_status.conf
UserParameter=Ngx_status[*],/etc/zabbix/zabbix_agent2.d/scripts/nginx_status.sh $1
[root@client /etc/zabbix/zabbix_agent2.d]#systemctl restart zabbix-agent2.service
[root@client /etc/zabbix/zabbix_agent2.d]#netstat -lntup
6在服务端测试:
[root@server ~]#zabbix_get -s 10.0.0.31 -k Ngx_status
USAGE:/etc/zabbix/zabbix_agent2.d/scripts/nginx_status.sh {active|reading|writing|waiting|accepts|handled|requests}
[root@server ~]#zabbix_get -s 10.0.0.31 -k Ngx_status[accepts]
4
[root@server ~]#zabbix_get -s 10.0.0.31 -k Ngx_status[active]
1
[root@server ~]#
7在后台web页面中进行配置:
监测--最新数据--应用集输入USER后回车--点击master-10.0.0.31后选择配置--回车--选择监控项--创建监控项--键值框里输入Nginx[request]--添加
最后去监测--最新数据中查看