以下内容在zabbix客户端配置
1、查看当前nginx的status模块
nginx -V
查看nginx是否将--with-http_stub_status_module编译进来
可以看到我这里已经将--with-http_stub_status_module编译进来了
2、启用nginx的status模块
在server中配置,如果你使用的vhost,可以在server_name中增加一个127.0.0.1
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}</pre>
添加完成后nginx记得reload下
3、查看nginx_status
curl http://127.0.0.1/nginx_status
字段及含义
Active connections 当前活动的客户端连接数,包含处于等待状态的连接
accepts 总共接收了131083964个客户端连接
handled 总共处理完成131083964个连接,这个值通常与accepts相同,如果不同说明nginx性能出现瓶颈
requests 总共处理了190479730个客户端请求
reading 正在读取客户端请求头信息的数量,读取后马上进入writing的状态
writing 正在发送响应报文到客户端的数量,时间较长
waiting 处于闲置状态正等待客户端发送请求的连接数active-(reading+writing)
当用户请求连接Nginx服务器时,accepts会增加1个,当服务器处理该连接请求时,handled同样会增加1个,正常情况下accepts和handled是相等的。
官方说明地址:http://nginx.org/en/docs/http/ngx_http_stub_status_module.html
4、在/etc/zabbix/创建status数值提取脚本
vi /etc/zabbix/nginx_status.sh
#!/bin/bash
ip=127.0.0.1
function ping() {
/sbin/pidof nginx | wc -l
}
function active() {
/usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '1p' | awk '{print $NF}'
}
function accepts() {
/usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '3p' | awk '{print $1}'
}
function handled() {
/usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '3p' | awk '{print $2}'
}
function requests() {
/usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '3p' | awk '{print $3}'
}
function reading() {
/usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '4p' | awk '{print $2}'
}
function writing() {
/usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '4p' | awk '{print $4}'
}
function waiting() {
/usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '4p' | awk '{print $6}'
}
$1
5、赋予执行权限
chmod +x /etc/zabbix/nginx_status.sh
6、配置zabbix-agentd
vi /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
内容如下(注意nginx_status.sh和nginx的路径是否和你当然配置的一致)
#/etc/zabbix/nginx_status.sh
UserParameter=nginx.status[*],/etc/zabbix/nginx_status.sh $1
UserParameter=nginx.version,/usr/local/nginx/sbin/nginx -v
7、确认zabbix-agentd.conf的Include路径(yum装的agent默认开启此项)
cat /etc/zabbix/zabbix_agentd.conf | grep Include=
看到下面内容,表示开启
Include=/zabbix/zabbix_agentd.d/*.conf
8、重启zabbix_agentd服务
/etc/init.d/zabbix-agent restart
客户端配置完成(注意防火墙相应端口记得开放)
服务端配置
先在zabbix server上验证能否取到nginx客户端的status值,一般情况下监控以下几项就足够了
zabbix_get -s 客户端IP -k 'nginx.status[ping]'
zabbix_get -s 客户端IP -k 'nginx.status[active]'
zabbix_get -s 客户端IP -k 'nginx.status[reading]'
zabbix_get -s 客户端IP -k 'nginx.status[writing]'
zabbix_get -s 客户端IP -k 'nginx.status[waiting]'
配置监控项:
最后添加图形即可