zoukankan      html  css  js  c++  java
  • Zabbix实战-简易教程--WEB类--Nginx

    一、开启Nginx status状态

    1、在默认主机里面加上location添加ngx_status

    如下操作:

    server {
            listen       127.0.0.1:8080;
            server_name  127.0.0.1;
            access_log off;
            location /nginxstatus {
                 stub_status on;
                 access_log off;
                 allow 127.0.0.1;
                 deny all;
            }
    

    2、重启nginx服务,service nginx restart,查看取值是否正常。

    curl -s "http://127.0.0.1:8080/nginxstatus"

    Active connections: 37 
    server accepts handled requests
     7197043 7197043 67343248 
    Reading: 0 Writing: 1 Waiting: 36
    

     3、nginx status详解

    active connections – 活跃的连接数量
    server accepts handled requests — 总共处理了7197043个连接 , 成功创建7197043次握手, 总共处理了67343248个请求
    Reading — 读取客户端的连接数.
    Writing — 响应数据到客户端的数量
    Waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.
    

      

    二、编写获取Nginx status的脚本

    在agent上编写监控脚本,其实就是获取刚才以上nginxstatus的值:

    #!/bin/bash
    
    function active {
                    curl -s "http://127.0.0.1:8080/nginxstatus" | grep 'Active' | awk '{print $3}'
    }
    function reading {
                    curl -s "http://127.0.0.1:8080/nginxstatus" | grep 'Reading' | awk '{print $2}'
    }
    function writing {
                    curl -s "http://127.0.0.1:8080/nginxstatus" | grep 'Writing' | awk '{print $4}'
    }
    function waiting {
                    curl -s "http://127.0.0.1:8080/nginxstatus" | grep 'Waiting' | awk '{print $6}'
    }
    function accepts {
                    curl -s "http://127.0.0.1:8080/nginxstatus" | awk NR==3 | awk '{print $1}'
    }
    function handled {
                    curl -s "http://127.0.0.1:8080/nginxstatus" | awk NR==3 | awk '{print $2}'
    }
    function requests {
                    curl -s "http://127.0.0.1:8080/nginxstatus" | awk NR==3 | awk '{print $3}'
    }
    
    
    
    case "$1" in
    active)
    active
    ;;
    reading)
    reading 
    ;;
    writing)
    writing 
    ;;
    waiting)
    waiting 
    ;;
    accepts)
    accepts 
    ;;
    handled)
    handled 
    ;;
    requests)
    requests
    ;;
    *)
     echo "Usage: $0 {active|reading|writing|waiting|accepts|handled|requests}"
    esac
    

    Agent端写入自定义key:

    UserParameter=nginx[*], /bin/bash /etc/zabbix/externalscripts/monitor-nginx.sh $1
    

      

    三、制作Nginx模板

    根据上面的监控项制作好模板,模板已经上传至Github:https://github.com/loveqx/zabbix-doc/tree/master/zabbix-scripts/zabbix-template-nginx

    模板包括的监控项如下:

    四、模板上套

    主机(Agent)套上模板即可。

    效果如下:

    至此,Nginx监控完成。

    五、总结

    以上就是监控Nginx的整个过程,虽然只是一个开端,但是,后续监控其他服务或应用都是类似的流程。聪明的你,可以依葫芦画瓢。

    1、通过方法或手段获取需要监控的监控项

         通过脚本或LLD获取监控项或监控项类(通过lld发现的),解释一下这里为什么说是监控项类,因为他是一个监控项的抽象。比如,磁盘类、网卡类,而且他们具有同样是属性。

    2、Agent端添加自定义key

    3、制作模板

    4、Agent套用模板

    最后附上监控Nginx需要的模板和脚本:

    Nginx监控github地址:

    脚本:https://github.com/loveqx/zabbix-doc/blob/master/zabbix-scripts/zabbix-template-nginx/monitor-nginx.sh

    模板:https://github.com/loveqx/zabbix-doc/blob/master/zabbix-scripts/zabbix-template-nginx/Template%20App%20For%20XSJ%20Web%20Nginx.xml

  • 相关阅读:
    c语言cgi笔记
    End of script output before headers错误解决方法
    我的树莓派3配置脚本
    Qt学习(4)
    Qt学习(3)
    Qt学习(2)
    Qt学习(1)
    C++ Primer中文版(第五版)——第六章 函数
    C++ 11 ----Lambda表达式
    Java SPI 源码解析
  • 原文地址:https://www.cnblogs.com/skyflask/p/7622101.html
Copyright © 2011-2022 走看看