美文网首页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