zoukankan      html  css  js  c++  java
  • Zabbix监控Nginx状态信息

     首先要检查Nginx是否安装了 http_stub_status_module 模块,通过下面的命令可以看到编译参数。yum安装的默认会带有这个模块。

    [root@kafka60 ~]# /data/nginx/sbin/nginx -V
    nginx version: nginx/1.10.2
    built by gcc 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) 
    built with OpenSSL 1.0.1e-fips 11 Feb 2013
    TLS SNI support enabled
    configure arguments: --prefix=/data/nginx-1.10.2 --user=www --group=www --with-http_stub_status_module --with-http_ssl_module

     zabbix客户端

    1、启用nginx status配置

    Nginx 的server配置增加如下的片段

     ......
       server {
            listen       80;
            server_name  www.blog.com;
            location /nginx_status { 
                stub_status on; 
                access_log off; 
                allow 10.0.0.60; 
                deny all; 
            } 
    .....

    [root@kafka60 share]# /data/nginx/sbin/nginx -t
    nginx: the configuration file /data/nginx-1.10.2/conf/nginx.conf syntax is ok
    nginx: configuration file /data/nginx-1.10.2/conf/nginx.conf test is successful
    [root@kafka60 share]# /data/nginx/sbin/nginx -s reload

     ## 在虚拟主机 server {} 中加入上面配置,也可以单独定义一个专门用于监控的虚拟主机。
    ## deny all , 拒绝除 allow 中的主机之外所有主机访问此 URL ,实现过程中如果遇到 403 ,有可能是你把自己测试的机器拒绝了!

    2、查看nginx状态信息

    [root@kafka60 share]# curl 10.0.0.60/nginx_status
    Active connections: 1 
    server accepts handled requests
     1 1 1 
    Reading: 0 Writing: 1 Waiting: 0 

      ## Active connections: 对后端发起的活动连接数
    ## Server accepts handled requests: Nginx 总共处理了 1 个连接,成功创建了 1 次握手(没有失败次数),总共处理了 1 个请求
    ## Reading: Nginx 读取到客户端的 Header 信息数
    ## Writing: Nginx 返回给客户端的 Header 信息数
    ## Waiting: 开启 keep-alive 的情况下,这个值等于 active - ( reading + writing ), 意思是 Nginx 已经处理完成,正在等待下一次请求指令的驻留连接
    ## 在访问效率很高,请求很快被处理完毕的情况下,Waiting 数比较多是正常的。如果 reading + writing 数较多,则说明并发访问量很大,正在处理过程中

    3、开启自定义KEY功能

    vim  /etc/zabbix/zabbix_agentd.conf
    ......
     UnsafeUserParameters=1
    UserParameter=nginx.accepts,/usr/local/zabbix/scripts/nginx_status.sh accepts 
    UserParameter=nginx.handled,/usr/local/zabbix/scripts/nginx_status.sh handled 
    UserParameter=nginx.requests,/usr/local/zabbix/scripts/nginx_status.sh requests 
    UserParameter=nginx.connections.active,/usr/local/zabbix/scripts/nginx_status.sh active 
    UserParameter=nginx.connections.reading,/usr/local/zabbix/scripts/nginx_status.sh reading 
    UserParameter=nginx.connections.writing,/usr/local/zabbix/scripts/nginx_status.sh writing 
    UserParameter=nginx.connections.waiting,/usr/local/zabbix/scripts/nginx_status.sh waiting
    .......
    
    [root@iZms9dbzZ ~]# /etc/init.d/zabbix-agent restart       ##重启zabbix客户端
    Shutting down Zabbix agent: [ OK ]
    Starting Zabbix agent: [ OK ]

    4、创建检测脚本

    [root@kafka60 share]# cat /data/shell/nginx_status.sh 
    #!/bin/bash
    #Author:dadong
    #Blog:http://www.cnblogs.com/dadonggg/
    #Time:2018-03-01 14:27:40
    #Name:nginx_status.sh
    #Version:V1.0
    #Description:This is a test script.
    HOST=`/sbin/ifconfig eth0 | sed -n '/inet /{s/.*addr://;s/ .*//;p}'` 
    PORT="80" 
    # 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

     ##给脚本赋予执行权限

      [root@kafka60 share]# chmod +x /data/shell/nginx_status.sh
      [root@kafka60 share]# /data/shell/nginx_status.sh writing
         1

    zabbix服务器端

    1、测试服务器能否获取到key值

    2、配置zabbix web页面监控项

  • 相关阅读:
    【OpenCV学习笔记1】OpenCV 编程简介[轉]
    latex与word比较
    【C/C++语法外功】传值&传引用&传指针
    ellen 纽奥良大学演讲
    华侨大学50年校庆校长讲话
    【专题】工业相机接口
    【C/C++参考手册】C++资源之不完全导引[轉]
    比尔盖茨_哈佛演说
    拉里.埃里森_耶鲁大学演讲
    【OpenCV学习笔记2】OpenCV 完全安装 新增VS2010+OpenCV2.1,新增VS2010+OpenCV2.3.1
  • 原文地址:https://www.cnblogs.com/dadonggg/p/8573918.html
Copyright © 2011-2022 走看看