1.源码安装nginx
[root@agent ~]# tar zxf nginx-1.17.9.tar.gz
[root@agent ~]# cd nginx-1.17.9/
[root@agent nginx-1.17.9]# ./configure --with-http_stub_status_module #加入对应的模块
[root@agent nginx-1.17.9]# make && make install
2.修改配置文件
[root@agent conf]# cat nginx.conf | sed -n '48,53p'
location /nginx_status { #在server模块加入
allow 127.0.0.1;
deny all;
stub_status on;
access_log off;
}
3.重启nginx
[root@agent conf]# /usr/local/nginx/sbin/nginx -t
[root@agent conf]# /usr/local/nginx/sbin/nginx -s reload
4.访问
[root@agent conf]# curl http://127.0.0.1/nginx_status
Active connections: 1
server accepts handled requests
1 1 1
Reading: 0 Writing: 1 Waiting: 0
5.编写脚本
#!/bin/bash
#active 当前活动的客户端连接数,包括waiting连接数
#accepts 已接受的客户端连接数
#handled 已处理的连接总数
#requests 客户端请求的总数
#reading 正在读取请求头的当前连接数
#writing 将响应写回客户端的当前连接数
#waiting 等待请求空闲客户端的当前连接数
result="/usr/bin/curl -s http://127.0.0.1/nginx_status"
case $1 in
active)
$result |awk '/Active/ {print $NF}'
;;
accepts)
$result |awk 'NR==3 {print $1}'
;;
handled)
$result |awk 'NR==3 {print $2}'
;;
requests)
$result |awk 'NR==3 {print $3}'
;;
reading)
$result |awk '/Reading/ {print $2}'
;;
writing)
$result |awk '/Writing/ {print $4}'
;;
waiting)
$result |awk '/Waiting/ {print $6}'
;;
*)
echo "USAGE:$0 {active|reading|writing|waiting|accepts|handled|requests}"
esac
[root@agent scripts]# pwd
/etc/zabbix/scripts #新建文件夹scripts
[root@agent scripts]# cat nginx_status.sh
#!/bin/bash
case $1 in
active)
curl -s http://127.0.0.1/nginx_status | grep conn | awk '{print $3}'
;;
accepts)
curl -s http://127.0.0.1/nginx_status |awk 'NR==3' |awk '{print $1}'
;;
handled)
curl -s http://127.0.0.1/nginx_status |awk 'NR==3' |awk '{print $2}'
;;
requests)
curl -s http://127.0.0.1/nginx_status |awk 'NR==3' |awk '{print $3}'
;;
reading)
curl -s http://127.0.0.1/nginx_status |awk 'NR==4'| awk '{print $2}'
;;
writing)
curl -s http://127.0.0.1/nginx_status |awk 'NR==4'| awk '{print $4}'
;;
waiting)
curl -s http://127.0.0.1/nginx_status |awk 'NR==4'| awk '{print $6}'
;;
esac
解决docker的curl不能用的途径
#!/bin/bash
wget http://127.0.0.1/nginx_status -O nginx_status >/dev/null 2>&1 &
case $1 in
active)
cat nginx_status | grep conn | awk '{print $3}'
;;
accepts)
cat nginx_status |awk 'NR==3' |awk '{print $1}'
;;
handled)
cat nginx_status |awk 'NR==3' |awk '{print $2}'
;;
requests)
cat nginx_status |awk 'NR==3' |awk '{print $3}'
;;
reading)
cat nginx_status |awk 'NR==4'| awk '{print $2}'
;;
writing)
cat nginx_status |awk 'NR==4'| awk '{print $4}'
;;
waiting)
cat nginx_status |awk 'NR==4'| awk '{print $6}'
;;
esac
6.新建文件
[root@agent zabbix_agentd.d]# pwd
/etc/zabbix/zabbix_agentd.d
[root@agent zabbix_agentd.d]# cat nginx_status.conf
UserParameter=nginx_status[*],/etc/zabbix/scripts/nginx_status.sh $1
7.重启agent
[root@agent zabbix]# systemctl restart zabbix-agent
8.server端get值
[root@server ~]# zabbix_get -s 10.211.55.7 -k nginx_status[active]
1