监控nginx的状态
其实这里用到了nginx的ngx_http_stub_status_module
模块。通过这个模块,显示网站的接入信息,比如:TCP连接数、请求数 等。
- 准备nginx环境
安装好nginx服务后,在nginx配置文件中编写一个状态模块的location
,启用ngx_http_stub_status_module
这个模块。例如下面的写法
[root@web03 conf.d]# cat status.conf
server {
listen 80;
server_name _;
#获取nginx状态
location /nginx_status {
stub_status on;
}
}
检查语法,重启nginx服务
nginx -t
systemctl restart nginx
使用curl命令获取nginx状态信息
[root@web03 ~]# curl http://10.0.0.9/nginx_status
Active connections: 1
server accepts handled requests
151 151 151
Reading: 0 Writing: 1 Waiting: 0
- 编写获取nginx状态的脚本
把脚本放在/server/scripts/
目录下
cat /server/scripts/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
- 配置zabbix的agent端的key
[root@web03 ~]# cat /etc/zabbix/zabbix_agentd.d/nginx_status.conf
UserParameter=nginx_status[*],/bin/bash /server/scripts/nginx_status.sh "$1"
[root@web03 ~]# systemctl restart zabbix-agent.service
测试是否能获取key值
#agent端测试
[root@web03 ~]# zabbix_agentd -t nginx_status[requests]
nginx_status[requests] [t|106476]
#zabbix服务端测试
[root@zabbix-server ~]# zabbix_get -s 172.16.1.9 -p 10050 -k nginx_status[requests]
106582
- web界面导入模板
- 查看导入好后的的数据信息
先把模板关联到web03这台主机上
文档更新时间: 2020-12-28 19:01 作者:Wan Hebin