1,客户端agent的配置;
nginx编译安装需要带有该模块–with-http_stub_status_module;
查看nginx.conf配置文件;
- cat ../../nginx.conf;
- location /nginx_status {
- stub_status on;
- access_log off;
- allow 127.0.0.1;
- deny all;
- }
- 已经包含了nginx status,没有要加上;
- 2, 修改agent端配置文件监控nginx状态配置
- # vim /etc/zabbix/zabbix_agentd.d/nginx_monitor.conf
- UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh “$1”
3,创建nginx监控脚本;
#cd /etc/zabbix/zabbix_agentd.d/ (位置随你选择,但是记得要修改相应的地方)
#vim nginx_monitor.sh
NGINX_PORT=80
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
Active connections Nginx正处理的活动链接数个数;重要
server Nginx启动到现在共处理了多少个连接。
accepts Nginx启动到现在共成功创建几次握手。
handled requests Nginx总共处理了几次请求。
Reading Nginx读取到客户端的 Header 信息数。
Writing Nginx返回给客户端的 Header 信息数。
Waiting Nginx已经处理完正在等候下一次请求指令的驻留链接,开启。
Keep-alive的情况下,Waiting这个值等于active-(reading + writing)。
请求丢失数=(握手数-连接数)可以看出,本次状态显示没有丢失请求。
添加执行权限;
chmod +x nginx_monitor.sh
重启agent;
server端验证是否能获取agent端的key值;
zabbix_get -s ip地址 -k nginx_status[active];如果执行不了,确认nginx status是否设置了白名单;
添加新的模板
定义一个应用集;
定义监控项:
键值
nginx_status[active]
nginx_status[reading]
nginx_status[writing]
nginx_status[waiting]
nginx_status[accepts]
nginx_status[handled]
nginx_status[requests]
这边只展示了一个监控项。。。。
创建图形;
定义触发器报警,非必须;
我定义并发连接超过50就触发警告;
等一下数据就出来了;