服务监控:Nginx状态监控

1.配置所有Agent(标准化目录结构)

[root@linux-node1 ~]# vim /etc/zabbix/zabbix_agentd.conf #编辑配置文件引用key
Include=/etc/zabbix/zabbix_agentd.d/*.conf
[root@linux-node1 ~]# mkdir /etc/zabbix/scripts #存放Shell脚本

2.在nginx.conf的Server标签中添加如下内容(如果nginx通过saltstack等配置管理工具进行统一管理,则需要在模板中统一加入这段配置)

location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}

3.本地访问Nginx Status测试

[root@linux-node1 ~]# curl http://127.0.0.1/nginx_status
Active connections: 1
server accepts handled requests
1 1 1
Reading: 0 Writing: 1 Waiting: 0
Nginx状态解释:
Active connections Nginx正处理的活动链接数1个
server Nginx启动到现在共处理了1个连接。
accepts Nginx启动到现在共成功创建1次握手。
handled requests Nginx总共处理了1次请求。
Reading Nginx读取到客户端的 Header 信息数。
Writing Nginx返回给客户端的 Header 信息数。
Waiting Nginx已经处理完正在等候下一次请求指令的驻留链接,开启。
Keep-alive的情况下,这个值等于active-(reading + writing)。
请求丢失数=(握手数-连接数)可以看出,本次状态显示没有丢失请求。

4.编写Nginx的Shell脚本(如果端口不一致,只需要修改脚本端口即可)

 
[root@linux-node1 ~]# cd /etc/zabbix/scripts
[root@linux-node1 scripts]# vim nginx_status.sh
#!/bin/bash
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

给脚本添加执行权限

[root@linux-node1 scripts]# chmod +x nginx_status.sh

5.key的nginx_status.conf的子配置文件如下:

[root@linux-node1 ~]# cat /etc/zabbix/zabbix_agentd.d/nginx_status.conf
UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/scripts/nginx/nginx_status.sh "$1"

6.重启zabbix-agent

[root@linux-node1 ~]# systemctl restart zabbix-agent

7.测试一定使用Zabbix_get来获取值(传入2参数)

[root@linux-node1 ~]# zabbix_get -s 192.168.90.11 -k nginx_status[writing]
1

8.展示所有Key(记得将模板关联主机)如图4-3 

key

9.查看图形,如图4-4(图形自定义) 
展示key

posted @ 2017-11-28 13:16  活的潇洒80  阅读(365)  评论(0编辑  收藏  举报