zabbix监控nginx的大概流程为:

 

1:被监控端的nginx开启stub_status模块

2:通过脚本的方式获取nginx的状态值

3:修改被监控端的配置文件,Userparameter=item.key[*],command

4:创建模版  添加应用集、监控项、触发器、图像等

5:添加主机,添加nginx模版,创建动作

6:测试

 

一、nginx的stub_stauts模块

 

stub_status模块主要用于查看nginx的一些状态信息

http://nginx.org/en/docs/http/ngx_http_stub_status_module.html 官网关于stub_status模块 

 

1)若在机器上,还未安装nginx,那么在编译安装的时候,要加上stub_status模块参数     

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/lnmp/pcre-7.9

 

2)若机器上已经安装了nginx,查看是否安装的时候,是否安装了--with-http_stub_status_module

 

[root@lile Downloads]#/usr/local/nginx/sbin/nginx -V
    nginx version: nginx/1.8.0
    built by gcc 4.4.720120313(RedHat4.4.7-16)(GCC)
    built with OpenSSL1.0.1e-fips 11Feb2013
    TLS SNI support enabled
    configure arguments:--prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_gzip_static_module --with-http_ssl_module --with-pcre=/usr/local/lnmp/pcre-7.9

 

若没有,那么进到安装目录执行(这里需要加的参数都要加上,而不是只加stub_status的)

 

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/lnmp/pcre-7.9

 

不要make install

 

make

 

然后把新编译的nginx替换到旧的(这里可以先把原来的nginx执行脚本备份一下)

 

cp /home/lile/nginx-1.8.0/objs/nginx /usr/local/nginx/sbin/nginx

 

这个时候再使用/usr/local/nginx/sbin/nginx -V 查看的时候,configure arguments这里就有stub_status的模块参数了

 

3)修改nginx的配置文件,在server里加上:

 

location /ngx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    allow 10.0.0.146;
    }

 

4)启动nginx

 

5)浏览器访问:http://10.0.0.13/ngx_status ,返回这样一个数据

 

zabbix 监控nginx zabbix监控nginx,nginx需要哪些模块_zabbix 监控nginx

 

我的理解的意思:(通过做实验,理解出来的)

Active connections:当前活跃的客户端连接数,比如打开了3个浏览器窗口

accepts:接受客户端访问的总次数

handled:处理的连接总次数

requests:客户端请求的总次数

reading:nginx正在读取请求头的连接数

writing:nginx正将请求返回给客户端的连接数

waiting:当前等待客户端请求的空闲连接数

 

官网的解释:

zabbix 监控nginx zabbix监控nginx,nginx需要哪些模块_nginx_02

 

二、写脚本,分别获取上面的值

 

nginx.sh  把这个脚本放在被监控端的服务器,然后在配置文件里指定位置

 

#!/bin/bash
    Host=10.0.0.13
    Port=80

    ping(){
        /bin/pidof nginx |wc -l
    }
    active(){
        curl $Host:$Port/ngx_status 2>/dev/null |grep 'Active'|awk -F":"'{print $NF}'
    }
    Reading(){
        curl $Host:$Port/ngx_status 2>/dev/null |grep 'Reading'|awk '{print $2}'
    }
    Writing(){
        curl $Host:$Port/ngx_status 2>/dev/null |grep 'Writing'|awk '{print $4}'
    }
    Waiting(){
        curl $Host:$Port/ngx_status 2>/dev/null |grep 'Waiting'|awk '{print $6}'
    }
    accepts(){
        curl $Host:$Port/ngx_status 2>/dev/null |awk NR==3|awk -F" "'{print $1}'
    }
    handled(){
        curl $Host:$Port/ngx_status 2>/dev/null |awk NR==3|awk -F" "'{print $2}'
    }
    requests(){
        curl $Host:$Port/ngx_status 2>/dev/null |awk NR==3|awk -F" "'{print $3}'
    }
    $1

 

vim 除了:wq!保存退出  ZZ 也可以保存退出

 

三、修改被监控端的zabbix-agent的配置文件

 

添加UserParameter值 vim  zabbix-agent/etc/zabbix_agentd.conf

 

LogFile=/tmp/zabbix_agentd.log
    Server=10.0.0.146
    ServerActive=10.0.0.146
    Hostname=Zabbix agent1
    UserParameter=nginx.status[*],/home/lile/zabbix-agent/nginx.sh $1

 

UserParameter:用户自定义key

格式:UserParameter=key[],command

            key:[*]    key里可以传递多个参数,item-key

            command:key里传递的参数分别对应$1,$2......

 

四、测试

在zabbix服务端,使用zabbix-get命令进行检测:

 

使用方法:

 

[root@lile alertscripts]#/usr/local/zabbix-3.2.6/bin/zabbix_get
    usage:
    zabbix_get -s host-name-or-IP [-p port-number][-I IP-address]-k item-key
    zabbix_get -h
    zabbix_get -V

 

在服务端先使用zabbix-get检测看是否能得到值:只有这样能到到返回值,才能在zabbix界面显示出来

 

[root@lile alertscripts]#/usr/local/zabbix-3.2.6/bin/zabbix_get -s 10.0.0.13-k 'nginx.status[accepts]'
    43

 

五:创建nginx模版


1:创建模版

 

zabbix 监控nginx zabbix监控nginx,nginx需要哪些模块_配置文件_03

 

zabbix 监控nginx zabbix监控nginx,nginx需要哪些模块_配置文件_04

 

 

2:在刚刚的nginx模版上创建应用集

 

zabbix 监控nginx zabbix监控nginx,nginx需要哪些模块_nginx_05

 

 

3:创建监控项,把所有的需要监控的创建监控项,键值就是我们在配置文件里写的item-key,我的是nginx.status[*],把所有的全部创建起来  active Reading Writing Waiting accepts handled requests

 

zabbix 监控nginx zabbix监控nginx,nginx需要哪些模块_模版_06

 

 

zabbix 监控nginx zabbix监控nginx,nginx需要哪些模块_zabbix 监控nginx_07

 

 

4:创建触发器,我这里只是对nginx进程不存在的进行触发,这里的表达式根据脚本里写的ping函数,他的返回值来进行修改

 

zabbix 监控nginx zabbix监控nginx,nginx需要哪些模块_配置文件_08

 

 

5:创建图形

 

对刚刚nginx进程存不存在创建图像

 

zabbix 监控nginx zabbix监控nginx,nginx需要哪些模块_配置文件_09

 

 

其他状态信息创建一个图形

 

zabbix 监控nginx zabbix监控nginx,nginx需要哪些模块_配置文件_10

 

 

六、使用这个nginx模版

 

和原来的一样,进行测试

1:添加主机

2:在这个主机上添加nginx模版

3:添加动作

4:分别在被监控的主机上停止和启动nginx,进行测试,看是否会报警

 

这是恢复的报警

 

zabbix 监控nginx zabbix监控nginx,nginx需要哪些模块_zabbix 监控nginx_11