zabbix3.2监控nginx(一)

以下内容在zabbix客户端配置

1、查看当前nginx的status模块

nginx -V

查看nginx是否将--with-http_stub_status_module编译进来

zabbix3.2监控nginx(一)

可以看到我这里已经将--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

zabbix3.2监控nginx(一)
字段及含义

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&gt;/dev/null | sed -n '1p' | awk '{print $NF}'

}

function accepts() {

/usr/bin/curl http://$ip/nginx_status 2&gt;/dev/null | sed -n '3p' | awk '{print $1}'

}

function handled() {

/usr/bin/curl http://$ip/nginx_status 2&gt;/dev/null | sed -n '3p' | awk '{print $2}'

}

function requests() {

/usr/bin/curl http://$ip/nginx_status 2&gt;/dev/null | sed -n '3p' | awk '{print $3}'

}

function reading() {

/usr/bin/curl http://$ip/nginx_status 2&gt;/dev/null | sed -n '4p' | awk '{print $2}'

}

function writing() {

/usr/bin/curl http://$ip/nginx_status 2&gt;/dev/null | sed -n '4p' | awk '{print $4}'

}

function waiting() {

/usr/bin/curl http://$ip/nginx_status 2&gt;/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]'

配置监控项:

zabbix3.2监控nginx(一)

zabbix3.2监控nginx(一)

zabbix3.2监控nginx(一)

zabbix3.2监控nginx(一)

zabbix3.2监控nginx(一)

最后添加图形即可

上一篇:Windows7中安装SQL2005提示不兼容 解决办法


下一篇:如何处理WebIDE里运行UI5应用遇到的404 not found错误