zabbixSecurity

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

2022-12-07  本文已影响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并启动服务

# 安装依赖
[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
# 添加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
# 启动服务
[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脚本,用于获取各项数据

# 创建脚本
[root@web1 ~]# vim /usr/local/bin/nginx_status.sh
#!/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

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

# 创建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

# 修改完配置文件重启服务
[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给被控主机创建监控项

上一篇下一篇

猜你喜欢

热点阅读