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)验证

    分类: zabbix
  • 相关阅读:
    20165227 结对编程项目-四则运算 第二周
    第八周学习总结
    20165227 结对编程项目-四则运算 第一周
    20165304第4次实验《Android程序设计》实验报告
    20165304《Java程序设计》第九周学习总结
    20165304实验三
    结对编程练习_四则运算(第二周)
    20165304 实验二 Java面向对象程序设计
    20165304 四则运算
    20165304《Java程序设计》第七周学习总结
  • 原文地址:https://www.cnblogs.com/shaonli/p/12089621.html
Copyright © 2011-2022 走看看