zoukankan      html  css  js  c++  java
  • Zabbix学习之路(七)之Nginx的状态监控

    • 1、安装nginx

    [root@linux-node2 ~]# yum install -y nginx
    [root@linux-node2 ~]# mkdir /etc/zabbix/zabbix_agentd.d/scripts    #创建脚本文件夹
    [root@linux-node2 ~]# vim /etc/nginx/nginx.conf
    在server内增加nginx状态监控,nginx的状态主要来自nginx的自带的模块
           location /nginx_status {
                    stub_status on;
                    access_log off;
                    allow 192.168.56.0/24;
                    allow 127.0.0.1;
                    deny all;
            }
    [root@linux-node2 ~]# nginx -t
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    [root@linux-node2 ~]# systemctl restart nginx
    [root@linux-node1 ~]# curl http://192.168.56.12/nginx_status
    Active connections: 1 
    server accepts handled requests
     9 9 7 
    Reading: 0 Writing: 1 Waiting: 0 
    
    Nginx状态解释:
    Active connections  Nginx正处理的活动链接数1个
    server              Nginx启动到现在共处理了9个连接。
    accepts             Nginx启动到现在共成功创建9次握手。 
    handled requests    Nginx总共处理了7次请求。
    Reading             Nginx读取到客户端的 Header 信息数。
    Writing             Nginx返回给客户端的 Header 信息数。
    Waiting             Nginx已经处理完正在等候下一次请求指令的驻留链接,开启。
    Keep-alive的情况下,Waiting这个值等于active-(reading + writing)。
    请求丢失数=(握手数-连接数)可以看出,本次状态显示没有丢失请求。
    • 2、添加agent的监控nginx状态配置

    [root@linux-node2 ~]# vim /etc/zabbix/zabbix_agentd.d/nginx_monitor.conf
    UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/scripts/nginx_monitor.sh "$1"
    • 3、编写获取nginx状态的shell脚本

    [root@linux-node2 ~]# 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
        
    给脚本添加执行权限
    [root@linux-node2 scripts]# chmod +x nginx_status.sh
    [root@linux-node2 ~]# systemctl restart zabbix-agent
    测试一定使用Zabbix_get来获取值:
    [root@linux-node1 ~]# zabbix_get -s 192.168.56.12 -k nginx_status[accepts]
    10
    • 4、创建监控模板以及添加监控项,并添加监控主机:

    步骤和监控TCP状态一样:

    image.png

    image.png

    总结:

    添加自定义的监控有以下步骤:

    (1)在/etc/zabbix/zabbix_agentd.d/目录下增加自定义监控项(item)

    (2)在zabbix-server上测试使用自定义监控项是否能获取值

    (3)创建监控模板

    (4)创建监控主机并链接监控模板

    (5)查看监控最新数据,是否生效

  • 相关阅读:
    ASP.NET数据报表之柱状图 ------工作日志
    键盘快捷键
    将datagrid中数据导出到excel中 -------<<工作日志2014-6-6>>
    VS2008 快捷键大全--------<<转>>
    .NET,你真的 知道了吗
    C#语言的新特性及相关信息
    Linq介绍
    Oracle 体系结构及安全管理
    Oracle高级查询,事物,过程及函数
    Oracle Pl/SQL编程基础
  • 原文地址:https://www.cnblogs.com/linuxk/p/9453098.html
Copyright © 2011-2022 走看看