经过zabbix 3.2监控nginx活动状态

第一:安装nginxlinux

    1.经过yum源安装(也能够经过编译安装,这里介绍yum源安装)nginx

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install nginx

  默认安装目录为/etc/nginx,能够经过rpm -qc nginx 或 rpm -ql nginx 查看。web

第二:查看、启用、验证nginx状态数据库

  1.查看nginx状态模块是否安装vim

    命令:/sbin/nginx -V
windows

    查看结果中是否包括:--with-http_stub_status_module 这个内容,包括就说明状态模块已安装;centos

  2.启用状态模块安全

    命令:vim /etc/nginx/nginx.conf
bash

    找到server{}内容,在该内容最后添加以下内容
app

    location = /nginx-status {

        stub_status on;

        access_log off;

        allow 127.0.0.1;

        allow zabbix-server-ip;

        deny all;

    }

    说明:(1)/nginx-status为虚拟路径,在进行http访问查看nginx状态时,须要输入的路径;

              (2)allow和deny用于安全访问目的,能够根据本身的安全需求进行自定义;

  3.验证nginx状态是否能够访问(验证前重启下nginx)

    命令:curl http://ip:port/nginx-status  #这是linux下的访问命令#

              http://ip:port/nginx-status #这是windows下的访问URL#

    能够正常显示结果,则表示以上配置正确;不然,检查配置;

第三:编写脚步,增长配置文件,重启zabbix

  1.编辑脚步

    脚步保存路径(这里是个人,您的能够自定义):/etc/zabbix/zabbix_agentd.d/scripts/

    脚步内容以下:

    #!/bin/bash

    #script to fetch nginx statuses for tribily monitoring systems  

    # Author: 54808898@qq.com  

    # License: none  

    # Set Variables  

    #BKUP_DATE='/bin/date +%Y%m%d`\'

    #LOG="/var/log/zabbix/webstatus.log"

    HOST=127.0.0.1

    PORT="81"

    # Functions to return nginx stats  

    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

    保存后,给该脚步添加可执行权限:chmod a+x 脚步名称

  2.增长配置文件

    配置文件增长位置(这里我增长的位置,您的能够自定义,可是必定要让zabbix_agentd.conf包含该文件):/etc/zabbix/zabbix_agentd.d/

    内容以下:

    UserParameter=nginx.accepts,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh accepts

    UserParameter=nginx.handled,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh handled

    UserParameter=nginx.requests,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh requests

    UserParameter=nginx.active,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh active

    UserParameter=nginx.reading,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh reading

    UserParameter=nginx.writing,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh writing

    UserParameter=nginx.waiting,/etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh waiting

    上述中包含方法,编辑/etc/zabbix/zabbix_agentd.conf,默认状况下,会有该语句:Include=/etc/zabbix/zabbix_agentd.d/*.conf,您能够根据本身的配置文件所在的目录修改此语句或增长新的语句。

  3.重启zabbix agent

    因为我采用的是yum源安装,重启方法很简单:systemctl restart zabbix-agent

第四:验证zabbix get能够获取nginx状态数据

  1.安装zabbix get

    安装命令:rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-get-3.2.1-1.el7.x86_64.rpm

  2.测试方法:

    命令:zabbix_get -s nginx服务ip -p 10050 -k "nginx.connections.active"

    说明:若是不通,请检查防火墙是否开放了10050端口

第五:配置zabbix模版

    1. Configuration -> Templates -> Create template

    Template name : Template App Nginx Service

    Groups In groups : Templates

    Add

    2. 建立应用分组

    ## 如今又回到了模板页,跟我一块儿点 Template App Nginx Service 模板后面的 Applications -> Create application

    Name : Nginx status

    Add

    3. 建立监控项

    ## 如今的位置是 Template App Nginx Service 模板中的 Applications 页面,跟我一块儿点击刚建立的 Nginx status 后面的 Items -> Create item

    Name : nginx active     ## 监控项名称

    Type : Zabbix agent    ## 监控类型,默认被动模式

    Key : nginx.active       ## 因为是自定义 Key ,因此要本身写上去。若是使用自带的 Key ,点击 Select 选择就能够了

    Type of information : Numeric( unsiqned )     ## 数据在进行类型转化以后存入数据库

                                        Numeric( unsiqned ) : 64 位无符号整数
                                        Numeric( float ) : 浮点数类型
                                        Character :  字符串类型数据,限制为 255B
                                        Log : 日志文件,必须使用的 Key 为 log[]
                                        Text : 文本,不限制大小

    Data type : Decimal     ## 数据类型用于存储 Items 中 Key 所获取的数值值,存储在不一样的表中,如:history 、history_str 等表

                        Boolean : 在数据存储时将本来的值替换为 0 或 1,TRUE 存储为 1 ,FALSE 存储为 0 ,全部的值都区分大小写( 任何非零都为 TRUE ,0 为 FALSE )
                        Octal : 八进制数的数值格式
                        Decimal : 十进制数的数值格式
                        Hexadecimal : 十六进制数的数值格式

                        ## Zabbix 自动执行数据类型的格式转换

    Units : 留空                                ## 单位符号,Zabbix 会自动处理接收到的数据,而且把数据转换为须要显示的格式

    Use custom multiplier : 不勾选     ## 若是开启,所接收到的数据会被乘以整数或浮点数。该选项用于单位换算,KB 、MBps 换为 B 、Bps 等

    Update interval( in sec ) : 30      ## 间隔多长时间经过 Items 收集数据,单位 秒

          Flexible intervals :                 ## 用于设置不一样时间段收集数据的间隔不一样,若是设置,则此时间段按这个间隔,其他的按上面参数的间隔

            New flexible interval Interval( in sec ) : 50 Period 1-7,00:00-24:00 Add :     ## 经过这里来添加一个新的时间段

    History storage period( in days ) : 90     ## 历史数据保留时间

    Trend storage period( in days ) : 365     ## 趋势数据保留时间

    Store value : As is     ## 数据存储时的类型

                        As is : 无预处理

                        Delta( speed per second ) : 显示每秒速率的值( 例如网卡流量 )

                        Delta( simple change ) : 显示本次数值与上次数值的差值

    Show value : As is                  ## 无预处理( 数据显示时的类型,值映射:将接收到的值映射为一个状态,不改变原值,只改变显示结果,例如将 1 映射为 Nginx service states )

    New application : 留空             ## 建立一个新的应用分组

    Applications : Nginx status     ## 选择一个已有的应用分组

    Populates host inventory field : None     ## 将此 Item 分配给某个资产管理组

    Description : 留空                                ## 对 Item 的描述信息

    Enabled : 勾选                                    ## 开启此 Item

    Add

    #根据以上方法分别定义 active | accepts | handled | requests | reading | writing | waiting 监控项

第六:将模版应用与被监控主机

    应用完成后,就能够查看nginx状态数据了

相关文章
相关标签/搜索