美文网首页zabbixSecurity
Zabbix-9·编写脚本监控nginx多项数值

Zabbix-9·编写脚本监控nginx多项数值

作者: 技术老男孩 | 来源:发表于2022-12-07 08:11 被阅读0次

    一、需求:使用Zabbix监控nginx以下几个数值:客户端访问的总量(accepts)、当前客户端与nginx之间的连接数(Active)、正在向客户端发送响应的连接总数(Writing)

    二、实现思路流程:

    1. 安装nginx并启动服务
    2. 创建shell脚本(实现传值获取nginx运行参数)
    3. 创建监控键值配置文件
    4. 在Zabbix web给被控主机创建监控项

    三、环境准备:

    准备二台主机:

    主机名 地址
    监控端 zabbixserver 192.168.88.5/24
    被控端 web1 192.168.88.100/24

    Nginx版本:nginx-1.12.2

    四、实施(监控web1 nginx的accepts、Active、Writing数据)

    第一步:安装nginx并启动服务

    • 编译安装nginx
    # 安装依赖
    [root@web1 lnmp_soft]# yum install -y gcc pcre-devel openssl-devel
    # 进入到nginx目录
    [root@web1 lnmp_soft]# cd nginx-1.12.2/
    # 查看配置帮助
    [root@web1 nginx-1.12.2]# ./configure --help | grep stub
    --with-http_stub_status_module     enable
    # 编译
    # 由于涉及到status的检查数据,所以要加上--with-http_stub_status_module
     [root@web1 nginx-1.12.2]# ./configure --with-http_stub_status_module
    # 安装
    [root@web1 nginx-1.12.2]# make && make install
    
    • 修改nginx.conf配置,开放status检查
    # 添加stub_status on开启检查
    [root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf
    47  location /status {
    48       stub_status on;
    49  }
    # 检查语法,出现syntax is ok表示配置文件正确
    [root@web1 ~]# /usr/local/nginx/sbin/nginx -t
    
    • 启动Nginx服务
    # 启动服务
    [root@web1 ~]# /usr/local/nginx/sbin/nginx 
    # 查看80端口
    [root@web1 ~]# ss -tlnp | grep :80
    LISTEN     0      128          *:80
    
    • 查看需要被监控的监控项是否可以正常展示
    # 访问监控页面
    [root@web1 ~]# curl http://192.168.88.100/status
    Active connections: 1 
    server accepts handled requests
              1       1       1 
    Reading: 0 Writing: 1 Waiting: 0 
    

    "Active connections":当前客户端与nginx之间的连接数。它等于下面Reading / Writing / Waiting之和
    "accepts":自nginx启动之后,客户端访问的总量
    "handled":自nginx启动之后,处理过的客户端连接总数。
    "requests":自nginx启动之后,处理过的客户端请求总数。
    "Reading":正在读取HTTP请求头部的连接总数。
    "Writing":正在向客户端发送响应的连接总数。
    "Waiting":空闲连接。

    第二步:创建shell脚本,用于获取各项数据

    • 在/usr/local/bin/目录下创建脚本,便于后面直接运行脚本
    # 创建脚本
    [root@web1 ~]# vim /usr/local/bin/nginx_status.sh
    
    • 使用case语句进行区分监控项
    #!/bin/bash
    case $1 in
    active)
        curl -s http://192.168.88.100/status | awk '/Active/{print $NF}';;
    waiting)
        curl -s http://192.168.88.100/status | awk '/Waiting/{print $NF}';;
    accepts)
        curl -s http://192.168.88.100/status | awk 'NR==3{print $1}';;
    esac
    
    • 测试脚本
    # 给脚本添加执行权限
    [root@web1 ~]# chmod +x /usr/local/bin/nginx_status.sh
    # 执行脚本获取active的数值
    [root@web1 ~]# nginx_status.sh active
    1
    # 执行脚本获取accepts的数值
    [root@web1 ~]# nginx_status.sh accepts
    1047
    # 执行脚本获取waiting的数值
    [root@web1 ~]# nginx_status.sh waiting
    0
    

    第三步:创建监控键值配置文件

    • 创建声明监控项key的文件
    # 创建nginx.status
    [root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/nginx.status
    UserParameter=nginx.status[*],/usr/local/bin/nginx_status.sh $1
    
    key的语法格式:

    UserParameter=key[*],<command> $1
    key[*]中的*是参数,将会传给后面的位置变量$1

    • 本地验证通过key获取数据
    # 修改完配置文件重启服务
    [root@web1 ~]# systemctl restart zabbix_agentd.service 
    # 测试验证accepts
    [root@web1 ~]# zabbix_get -s 127.0.0.1 -k nginx.status[accepts]
    1049
    # 测试验证active
    [root@web1 ~]# zabbix_get -s 127.0.0.1 -k nginx.status[active]
    1
    

    第四步:在Zabbix web给被控主机创建监控项

    • 给web1单独添加监控项


      添加监控项1.png
    • 填入对应key值


      添加监控项2.png
    • 查看web1的最新数据


      添加监控项3.png
    • 显示刚才的监控项及监控数据即为成功


      添加监控项4.png

    相关文章

      网友评论

        本文标题:Zabbix-9·编写脚本监控nginx多项数值

        本文链接:https://www.haomeiwen.com/subject/jpisfdtx.html