Zabbix 监控Nginx服务需要通过Nginx Status模块进行监控。
一、 打开Nginx配置文件 /etc/nginx/conf.d/default.conf在Server标签内添加以下内容:
[root@centos7 ~]# vim /etc/nginx/conf.d/default.conf
location /nginx_status {
stub_status on;
allow 127.0.0.1;
deny all;
}
###重启Nginx服务
[root@centos7 ~]# systemctl restart nginx
###获取Nginx_status状态
[root@centos7 scripts]# curl http://127.0.0.1:80/nginx_status
Active connections: 1
server accepts handled requests
10 10 10
Reading: 0 Writing: 1 Waiting: 0
状态信息解释:
Active connections :表示 Nginx 正在处理的活动连接数有多少个
server :表示 Nginx 启动到现在共处理了多少个连接
accepts :表示 Nginx 启动到现在共成功创建了多少次握手
handled requests : 表示总共处理了多少次请求
Reading :表示 Nginx 读取到客户端的 Header 信息数
Writing :表示 Nginx 返回给客户端的 Header 信息数
Waiting :表示 Nginx 已经处理完正在等候下一次请求指令的驻留连接数
在开启 keep-alive 的情况下,Waiting = Active connections - (Reading + Writing)
二、编写监控Nginx_statsu模块脚本
[root@centos7 scripts]# vim /etc/zabbix/scripts/nginx_status.sh
[root@centos7 scripts]# cat /etc/zabbix/scripts/nginx_status.sh
#!/bin/sh
#script to fetch nginx status for tribily monitoring systems
HOST=127.0.0.1
PORT="80"
# Functions to return nginx status
function active {
/usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading {
/usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing {
/usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting {
/usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
function accepts {
/usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled {
/usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests {
/usr/bin/curl "http://$HOST:$PORT/nginx_status" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
# Run the requested function
$1
###脚本添加执行权限
[root@centos7 scripts]# chmod +x nginx_status.sh
###测试脚本
[root@centos7 scripts]# /bin/sh /etc/zabbix/scripts/nginx_status.sh active
1
三、配置zabbix客户端配置文件/etc/zabbix/zabbix_agentd.conf自定义脚本健值
[root@centos7 zabbix]# vim /etc/zabbix/zabbix_agentd.conf
EnableRemoteCommands=1 ###允许zabbix_get命令远程执行健值测试,1允许,0禁止
Server=10.10.10.10 ###填写zabbix服务器IP或DNS(默认被动模式)
ServerActive=10.10.10.10 ###填写zabbix服务器IP或DNS(主动模式)
Hostname=centos7 ###填写zabbix客户端计算机名称
UnsafeUserParameters=1 ###允许执行自定义健值,1允许,0禁止
UserParameter=nginx.status[*],/etc/zabbix/scripts/nginx_status.sh $1 ###自定义健值
###重启zabbix-agent客户端
[root@centos7 zabbix]# systemctl restart zabbix-agent
四、zabbix 服务端使用zabbix_get测试获取数据
[root@zabbix ~]# zabbix_get -s 10.10.10.20 -k nginx.status[active]
1
五、zabbix 服务端配置监控Nginx (此处省略,基本都是图形操作)
网友评论