nginx配置
在nginx相应的server里面加把stub_status模块打开、重启生效 (前提是nginx已经把stub_status模块加上,默认安装都会装上的)
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
然后测试下可以正常返回
Active connections: 当前正在处理的活动连接数85个
Server accepts handled requests
总共处理了87998153个连接,成功创建87998153握手(说明中间没有失败的),总共处理了174969735个请求
Reading: nginx读取到客户端的Header信息数.
Writing: nginx返回给客户端的Header信息数.
Waiting: 开启keep-alive的情况下,这个值等于active–(reading+writing),意思就是nginx已经处理完成,正在等候下一次请求指令的驻留连接。
所以,在访问效率高,请求很快被处理完毕的情况下,Waiting数比较多是正常的.如果reading+writing数较多,则说明并发访问量非常大,正在处理过程中。
在agent端创建监控脚本,去截取stub_status读取出来的结果
vim /software/tools/zabbix_nginx.sh
#!/bin/bash
##################################################
# Description:zabbix monitors nginx status
# Creator: ljl
# Note:Zabbix 3.4.8
# DateTime: 2019-09-26
##################################################
HOST="localhost"
PORT="80"
context=status
#check nginx process
function check() {
ps -ef | grep nginx: | grep -v grep | wc -l
}
#check nginx
function accepts() {
/usr/bin/curl -s "http://$HOST:$PORT/${context}/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}
function handled() {
/usr/bin/curl -s "http://$HOST:$PORT/${context}/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
function requests() {
/usr/bin/curl -s "http://$HOST:$PORT/${context}/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}
function active() {
/usr/bin/curl -s "http://$HOST:$PORT/${context}/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
function reading() {
/usr/bin/curl -s "http://$HOST:$PORT/${context}/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
function writing() {
/usr/bin/curl -s "http://$HOST:$PORT/${context}/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
function waiting() {
/usr/bin/curl -s "http://$HOST:$PORT/${context}/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}
case "$1" in
check)
check
;;
active)
active
;;
accepts)
accepts
;;
handled)
handled
;;
requests)
requests
;;
reading)
reading
;;
writing)
writing
;;
waiting)
waiting
;;
*)
echo "Usage $0 {check|active|accepts|handled|requests|reading|writing|waiting}"
exit
esac
给刚才创建的脚本授权
chmod +x /software/tools/zabbix_nginx.sh
在agent端的代理配置把下面配置加上
vim /usr/local/zabbix/etc/zabbix_agentd.conf
vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/zabbix_nginx.conf
[root@nhtshlweb01 zabbix_agentd.conf.d]# pwd
/usr/local/zabbix/etc/zabbix_agentd.conf.d
[root@nhtshlweb01 zabbix_agentd.conf.d]# cat zabbix_nginx.conf
UserParameter=nginx.status[*],/software/tools/zabbix_nginx.sh $1
重启并测试:
在agent端:
/etc/init.d/zabbix_agentd restart
然后确认重启成功否,看下agent进程时间是不是新的(ps -ef | grep zabbix),不是就杀掉agent再启动试下
在server端:用zabbix_get去读agent端配置的脚本看是否生效
然后到zabbix控制台配置
在模块里分别添加脚本里面那些监控项
监控项的配置名称要一目了然,健值要对应zabbix脚本里面的,加到同一个应用集。分别创建7个监控项 (如上图)
然后创建图形
把刚才创建的监控项都添加进去
然后到对应的nginx主机里,把刚才建好的模块链接进去
然后到图形里面即可看到监控数据