zoukankan      html  css  js  c++  java
  • zabbix监控nginx

    (1)agent端配置

    1)nginx编译安装需要加上该选项--with-http_stub_status_module

    2)修改nginx配置文件

    #vim /usr/local/nginx/conf/nginx.conf
    location /nginx_status {
    	stub_status on;
    	access_log off;
    	allow 127.0.0.1;
    	deny all;
    	}
    #nginx -s reload
    

    3)nginx状态解释

    Active connections  Nginx正处理的活动链接数个数;重要
    server              Nginx启动到现在共处理了多少个连接。
    accepts             Nginx启动到现在共成功创建几次握手。 
    handled requests    Nginx总共处理了几次请求。
    Reading             Nginx读取到客户端的 Header 信息数。
    Writing             Nginx返回给客户端的 Header 信息数。
    Waiting             Nginx已经处理完正在等候下一次请求指令的驻留链接,开启。
    Keep-alive的情况下,Waiting这个值等于active-(reading + writing)。
    请求丢失数=(握手数-连接数)可以看出,本次状态显示没有丢失请求。
    

    4)修改agent端配置文件监控nginx状态配置

    # vim /etc/zabbix/zabbix_agentd.d/nginx_monitor.conf
    UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh "$1"
    

    5)获取nginx状态的shell脚本

    #cd /etc/zabbix/zabbix_agentd.d/
    #vim nginx_monitor.sh
    NGINX_PORT=80  
    NGINX_COMMAND=$1
    nginx_active(){
        /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Active/ {print $NF}'
    }
    nginx_reading(){
        /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Reading/ {print $2}'
    }
    nginx_writing(){
        /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Writing/ {print $4}'
           }
    nginx_waiting(){
        /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk '/Waiting/ {print $6}'
           }
    nginx_accepts(){
        /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $1}'
           }
    nginx_handled(){
        /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $2}'
           }
    nginx_requests(){
        /usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/nginx_status/" |awk 'NR==3 {print $3}'
           }
      case $NGINX_COMMAND in
    active)
    nginx_active;
    ;;
    reading)
    nginx_reading;
    ;;
    writing)
    nginx_writing;
    ;;
    waiting)
    nginx_waiting;
    ;;
    accepts)
    nginx_accepts;
    ;;
    handled)
    nginx_handled;
    ;;
    requests)
    nginx_requests;
    ;;
          *)
    echo $"USAGE:$0 {active|reading|writing|waiting|accepts|handled|requests}"
        esac
    

    6)给脚本添加执行权限

    chmod +x nginx_monitor.sh
    

    7)重启agent服务

    # systemctl restart zabbix-agent
    

    (2)服务器端配置

    思路:定义application_status模板--->定义应用集nginx_status--->定义监控项---->定义图形--->定义触发器---->添加主机或主机关联这个模板

    1)server端验证是否能获取agent端的key值

    zabbix_get -s 192.168.1.32 -k nginx_status[active]
    

    2)键值

    nginx_status[active]
    nginx_status[reading]
    nginx_status[writing]
    nginx_status[waiting]
    nginx_status[accepts]
    nginx_status[handled]
    nginx_status[requests]
    

    3)添加模板

    4)定义应用集

    5)定义监控项:这里我只写了一个

    6)定义图形

    7)定义触发器:不是必须的,我这里设置超过50个并发连接就执行报警

    8)主机关联模板

    9)验证

  • 相关阅读:
    java中equals与hashCode的重写问题
    关于java的二维码的生成与解析
    bootstrap的时间控件使用(双日历)
    Mysql表,列,库的增删查改
    关于js重名方法的先后调用问题
    javascript的比较运算符
    javascript的运算符
    JavaScript的数据类型
    javascript的基本语法
    MAP集合
  • 原文地址:https://www.cnblogs.com/lovelinux199075/p/8990538.html
Copyright © 2011-2022 走看看