当前位置: 首页 > news >正文

#Linux监控与安全Day02:Zabbix 自动发现,Zabbix 报警机制(邮箱),Zabbix 主动监控,监控 Nginx 服务

一、Zabbix 自动发现

1. 自动发现概述

当需监控的设备数量增多,手动添加主机效率低下,可使用自动发现(Discovery)功能。
自动发现可实现:发现主机、添加主机、将主机加入指定主机组、链接模板等。

自动发现整体流程
  1. 创建自动发现规则
  2. 创建Action 动作(定义发现主机后执行的操作)
  3. 通过动作自动完成添加主机、关联模板等行为

2. web2 被监控端部署(源码编译 Zabbix Agent)

2.1 环境准备与编译安装

zabbix-6.4.7.tar.gz上传至虚拟机web2/root目录,执行如下命令:

# 安装编译依赖[root@web2 ~]# dnf -y install gcc make pcre-devel autoconf# 解压源码包[root@web2 ~]# tar -xf zabbix-6.4.7.tar.gz# 进入解压目录[root@web2 ~]# cd zabbix-6.4.7/# 配置编译参数,仅开启 Agent 功能[root@web2 zabbix-6.4.7]# ./configure --enable-agent# 编译并安装[root@web2 zabbix-6.4.7]# make install# 查看安装生成目录[root@web2 ~]# ls /usr/local/etc[root@web2 ~]# ls /usr/local/bin[root@web2 ~]# ls /usr/local/sbin
2.2 启动 Zabbix Agent 并配置开机自启
# 创建 Zabbix 运行用户,禁止登录系统[root@web2 zabbix-6.4.7]# useradd -s /sbin/nologin zabbix# 启动 Zabbix 客户端服务[root@web2 zabbix-6.4.7]# zabbix_agentd# 查看 10050 监听端口(Zabbix Agent 默认端口)[root@web2 zabbix-6.4.7]# ss -nutlp | grep :10050# 配置开机自启,将启动命令写入 rc.local[root@web2 ~]# echo zabbix_agentd >> /etc/rc.d/rc.local# 赋予 rc.local 执行权限[root@web2 ~]# chmod +x /etc/rc.d/rc.local

3. Zabbix 服务端创建自动发现规则

  1. 路径:数据采集 --> 自动发现 --> 创建发现规则

  1. 规则参数配置:
    • 名称:web_discovery_rule
    • 代理程序:没有 agent 代理程序
    • IP 范围:192.168.8.105-120(可多个网段,逗号分隔)
    • 更新间隔:1m(实验环境修改为1分钟,默认1小时)
    • 设备唯一性准则:IP 地址
    • 可见名称:IP 地址
  • 检查类型选择:SSH(只要发现的主机有SSH 22端口即可)
  1. 保存并启用该发现规则。

4. Zabbix 服务端创建发现动作(Action)

  1. 路径:告警 --> 动作 --> 发现动作 --> 创建动作

  1. 基础配置:
    • 动作名称:web_discovery
    • 状态:已启用

  1. 添加触发条件:
    • 类型:主机 IP 地址
    • 运算符:等于
    • 匹配值:192.168.8.105-120(建议与发现规则的配置一致)

  1. 添加执行操作:
    1. 将发现的主机添加至Linux servers主机群组
    2. 为主机关联模板Linux by Zabbix agent

添加至Linux servers主机群组

继续添加动作:

为主机关联模板Linux by Zabbix agent

  1. 保存动作配置。

5. 验证与被监控端配置修复

5.1 查看主机列表

路径:监测 --> 主机,可看到自动发现的web2主机,此时主机状态为不可用

5.2 web2 修改 Agent 配置,放行 Zabbix 服务端
# 编辑 Zabbix Agent 主配置文件[root@web2 ~]# vim /usr/local/etc/zabbix_agentd.conf# 113行:指定允许连接的 Zabbix 服务端 IPServer=127.0.0.1,192.168.8.100# 178行:设置本机主机名,与 Zabbix 页面保持一致Hostname=web2# 强制停止原有 Agent 进程[root@web2 ~]# killall -9 zabbix_agentd# 重新启动 Agent[root@web2 ~]# zabbix_agentd# 验证 10050 端口监听[root@web2 ~]# ss -nutlp | grep :10050
5.3 最终验证

刷新 Zabbix 主机列表,web2主机状态变为可用,自动发现功能生效。

二、Zabbix 报警机制

1. 报警机制基础说明

  1. 自定义监控项默认无自动报警,首页不会展示异常提示;系统自带模板默认配置告警。
  2. 实现自动告警必须配置触发器+告警动作
    • 触发器(trigger):设定阈值表达式(如用户数大于50、内存低于300M),条件触发则生成事件,执行某个动作。
    • 动作(action):触发器触发后执行的行为,例如发送邮件、重启服务等。

简单讲,自定义报警分为三部:
创建触发器(条件)
创建触发动作
关联邮箱

2. 创建触发器

  1. 数据采集 --> 模板 --> 选择模板Template_usercount--> 触发器 --> 创建触发器


  1. 触发器基础配置:

    • 名称:usercount_gt_50
    • 事件名称:usercount_gt_50
    • 严重性:告警

选择告警

  1. 表达式配置(阈值:用户总数大于50):
    • 监控项:选择模板内自定义的usercount监控项
    • 函数:last()(取最新数值)
    • 判断条件:last(/Template_usercount/usercount) > 50

  • 条件:自定义监控项的结果 大于50

点击插入

  1. 点击添加,启用触发器并保存。

3. 配置邮件告警媒介

3.1 启用 Email 媒介类型

路径:告警 --> 媒介,找到Email类型并启用,

配置参数:

  • SMTP 服务器:localhost(指定发送邮件的服务器,实际生产需指定专门的邮件服务器)
  • 发件人邮箱:tina@test.com


这里配置的EmailEmail (HTML)是用来设置网络邮箱地址的

3.2 为管理员用户绑定收件邮箱
  1. 用户 --> 选择 Admin 超级管理员 --> 报警媒介 --> 添加


  1. 媒介选择:Email
  2. 收件人:root@localhost.localdomain(管理员自己的个人邮箱)
  3. 生效时间:1-7,00:00-24:00,启用媒介并保存。


点击添加,点击更新

4. 创建触发器告警动作

  1. 路径:告警 --> 动作 --> 触发器动作 --> 创建动作

  1. 动作基础信息:
    • 名称:report_user
    • 状态:已启用

  1. 触发条件:选择触发器Template_usercount下的usercount_gt_50

点击添加

  1. 操作配置:
    • 操作类型:发送消息
    • 接收用户:Admin(Zabbix Administrator)
    • 发送媒介:Email
    • 步骤持续时间:60秒

点击操作,点击添加:

  1. 保存动作。

5. Zabbix 服务端配置邮件服务

安装并启动postfix邮件服务与邮件客户端mailx

# 安装邮件相关软件包postfix发送邮件 mailx查看邮件[root@zabbix-server ~]# dnf -y install postfix mailx# 启动服务并设置开机自启[root@zabbix-server ~]# systemctl enable postfix --now# 验证邮件服务 25 端口监听[root@zabbix-server ~]# ss -nutlp | grep :25

6. 告警功能测试

6.1 制造告警(用户数 > 50)

web1批量创建测试用户:

# 批量创建 15 个用户[root@web1 ~]# for i in {1..15}>do>useradduser$i>done# 查看系统总用户数,确认超过 50[root@web1 ~]# wc -l /etc/passwd
6.2 查看告警邮件

在 Zabbix 服务端查看邮件:

[root@zabbix-server ~]# mail

可收到主题为Problem: usercount_gt_50的告警邮件,输入邮件编号查看内容,按q退出。

6.3 解除告警(用户数 < 50)

批量删除测试用户,恢复正常状态:

# 批量删除 15 个测试用户[root@web1 ~]# for i in {1..15}>do>userdel-ruser$i>done# 验证用户总数低于 50[root@web1 ~]# wc -l /etc/passwd

服务端会收到故障恢复的通知邮件。

三、Zabbix 主动监控

1. 主动监控与被动监控区别

两种模式针对被监控端 Agent划分,Zabbix 默认使用被动监控

  1. 被动监控:Zabbix Server 主动连接 Agent 拉取数据,Agent 监听 10050 端口。
  2. 主动监控:Agent 主动连接 Zabbix Server 上报数据。
    • 区别在于:Server 不需要每次都链接Agent,Agent会自己收集数据并处理,Server仅负责存储数据。大幅减轻了服务端压力。
  3. 适用场景:监控主机数量庞大时,推荐使用主动监控或分布式监控。

2. 配置 web2 为主动监控模式

修改web2的 Zabbix Agent 配置文件,关闭被动、开启主动监控:

[root@web2 ~]# vim /usr/local/etc/zabbix_agentd.conf# 注释此行(被动监控的配置)113# Server=127.0.0.1,192.168.8.100#去掉注释,顶格写,将值改为0,标识关闭被动监控(主动监控没有端口)138StartAgents=0# 指定主动上报的 Zabbix 服务端地址+端口(服务端默认 10051)167ServerActive=192.168.8.100:10051#去掉注释顶格写,将值改为120,设置主动监控刷新时间238RefreshActiveChecks=120

注意!主动监控与被动监控不能同时配置,二者的配置互相冲突,如果想要恢复被动监控依旧需要更改配置

重启 Agent 并验证
# 强制停止原有进程[root@web2 ~]# killall -9 zabbix_agentd# 启动 Agent(主动模式无 10050 端口)[root@web2 ~]# zabbix_agentd# 仅查看进程,无需查看 10050 端口[root@web2 ~]# ps aux | grep zabbix_agentd

注意,这一步不要使用ss -ntulp去过滤端口了,主动监控是不经过10050端口的!所以只要ps命令来查看进程

3. Zabbix 服务端配置主动监控主机

  1. 路径:监测 --> 主机 --> 创建主机

  1. 主机参数配置:
    • 主机名称:web2(必须与 Agent 配置中Hostname完全一致)
    • 主机群组:Linux servers
    • 模板:选择Linux by Zabbix agent active(一定要指定主动监控专用模板)
    • 接口:不配置 Agent 接口(主动模式无需端口)
    • 状态:已启用

  1. 保存后,主机列表中web2标记为主动监控模式。

主动模式的Agent不再监听任何端口,本机没有端口等待外部连入

4. 验证主动监控数据

路径:监测 --> 最新数据,筛选主机web2,可正常查看各项监控指标、趋势图表,主动监控配置生效。

四、监控 Nginx 服务

1. 编译部署 Nginx(开启状态模块)

实验要求 Nginx 启用stub_status状态模块,web1主机操作:

1.1 安装依赖与编译 Nginx

nginx-1.22.1.tar.gz上传至web1/root目录:

# 安装编译依赖[root@web1 ~]# dnf -y install gcc pcre-devel openssl-devel make# 创建 Nginx 运行用户[root@web1 ~]# useradd nginx# 解压源码包[root@web1 ~]# tar -xf /root/nginx-1.22.1.tar.gz# 进入源码目录[root@web1 ~]# cd nginx-1.22.1# 编译配置:指定安装目录、运行用户、开启ssl与状态模块[root@web1 nginx-1.22.1]# ./configure \>--prefix=/usr/local/nginx\>--user=nginx\>--group=nginx\>--with-http_ssl_module --with-http_stub_status_module# 编译并安装[root@web1 nginx-1.22.1]# make && make install# 查看安装目录[root@web1 ~]# ls /usr/local/nginx
1.2 修改 Nginx 配置,开启状态页面
# 编辑 Nginx 主配置文件[root@web1 ~]# vim /usr/local/nginx/conf/nginx.conf# 在 server 区块内添加如下配置location /status{stub_status on;# 开启状态统计模块}# 启动 Nginx 服务[root@web1 ~]# /usr/local/nginx/sbin/nginx# 验证 80 端口监听[root@web1 ~]# ss -nutlp | grep :80
1.3 访问状态页面 & 压力测试
(1)Zabbix 服务端访问 Nginx 状态页
[root@zabbix-server ~]# curl 192.168.8.101/status# 输出示例Active connections:1server accepts handled requests222Reading:0Writing:1Waiting:0
(2)状态字段说明
  • Active connections:当前客户端与 Nginx 的总连接数 = Reading + Writing + Waiting
  • accepts:Nginx 启动后累计接收的客户端连接总数
  • handled:Nginx 启动后累计处理的连接总数(通常与 accepts 一致)
  • requests:Nginx 启动后累计处理的请求总数
  • Reading:正在读取客户端请求的连接数
  • Writing:正在向客户端返回响应的连接数
  • Waiting:空闲等待新请求的连接数
(3)压力测试(提升访问量)
# 安装压测工具 ab[root@zabbix-server ~]# dnf -y install httpd-tools# 模拟 200 并发、总计 1000 次请求访问 Nginx[root@zabbix-server ~]# ab -n1000 -c200 http://192.168.8.101/

2. 编写 Nginx 监控脚本

web1主机编写脚本,用于抓取 Nginx 状态数据:

# 创建脚本文件[root@web1 ~]# vim /usr/local/bin/nginx_status.sh#!/bin/bashcase$1inactive)curl-shttp://192.168.8.101/status|awk'/Active/{print $NF}';;waiting)curl-shttp://192.168.8.101/status|awk'/Waiting/{print $NF}';;accepts)curl-shttp://192.168.8.101/status|awk'NR==3{print $1}';;esac
脚本授权与本地测试
# 添加执行权限[root@web1 ~]# chmod +x /usr/local/bin/nginx_status.sh# 测试:当前活跃连接数[root@web1 ~]# nginx_status.sh active# 测试:累计连接数[root@web1 ~]# nginx_status.sh accepts# 测试:空闲连接数[root@web1 ~]# nginx_status.sh waiting

3. 配置 Zabbix Agent 自定义监控项

# 创建 Agent 子配置文件[root@web1 ~]# vim /usr/local/etc/zabbix_agentd.conf.d/nginx_status.conf# 自定义监控项,支持传参UserParameter=nginx_status[*],/usr/local/bin/nginx_status.sh$1# 重启 Zabbix Agent[root@web1 ~]# killall -9 zabbix_agentd[root@web1 ~]# zabbix_agentd# 本地 zabbix_get 测试监控项[root@web1 ~]# zabbix_get -s 127.0.0.1 -k nginx_status[active][root@web1 ~]# zabbix_get -s 127.0.0.1 -k nginx_status[accepts][root@web1 ~]# zabbix_get -s 127.0.0.1 -k nginx_status[waiting]

4. Zabbix 服务端创建 Nginx 监控模板与监控项

4.1 创建监控模板

路径:数据采集 --> 模板 --> 创建模板

  • 模板名称:Nginx_Monitor
  • 选择主机群组,保存模板。
4.2 在模板内创建监控项

进入Nginx_Monitor模板 -->监控项 --> 创建监控项,按需创建多个监控项:

  1. 监控项1:
    • 名称:nginx_accepts
    • 类型:Zabbix 客户端
    • 键值:nginx_status[accepts]
    • 信息类型:数字(无正负)
    • 更新间隔:1m
  2. 监控项2:键值nginx_status[active](监控活跃连接)
  3. 监控项3:键值nginx_status[waiting](监控空闲连接)

5. 模板关联主机 & 查看监控数据

5.1 关联模板

路径:数据采集 --> 主机 --> 选择 web1 --> 模板 --> 添加,选中Nginx_Monitor模板并保存。

5.2 查看监控数据

路径:监测 --> 最新数据,筛选主机web1,查看 Nginx 相关监控指标与趋势图表,数据正常采集即配置完成。

五、Zabbix 拓扑图

  1. 功能:通过拓扑图直观展示服务器架构、设备状态、链路关系。
  2. 入口:监测 --> 拓扑图,可创建新拓扑图、编辑已有拓扑。
  3. 基础操作:
    • 添加拓扑元素(主机、图标);
    • 选中两个设备,点击「链接」添加连线;
    • 支持网格对齐、宏展开、尺寸调整等功能。

六、整体知识点总结

  1. 自动发现:解决大批量主机手动添加问题,流程为「创建发现规则 → 配置发现动作 → 自动加主机+关联模板」。
  2. 报警机制:自定义监控告警依赖触发器(阈值)+ 动作(执行行为),常用邮件告警,需配置邮件服务、告警媒介、用户收件地址。
  3. 主动/被动监控
    • 被动:Server 主动拉取数据,Agent 监听 10050;
    • 主动:Agent 主动上报数据,减轻服务端压力,适合大规模集群。
  4. Nginx 监控:编译 Nginx 开启stub_status状态模块 → 编写采集脚本 → 配置 Agent 自定义监控项 → Zabbix 创建模板/监控项 → 关联主机查看数据。
  5. 拓扑图:可视化展示设备架构与运行状态,便于运维直观管理集群。

踩坑经历:使用kill强行杀死zabbix_agentd进程时可能会因为残留pid导致无法重启服务,此时有两种原因:
1,可能是pid文件残留
需要进入配置文件/usr/local/etc/zabbix_agentd.conf查找PidFile路径,删除/tmp/zabbix_agentd.pid文件即可
2,僵尸进程或残留子进程占用端口
使用:ps -elf | grep zabbix过滤查看是否有僵尸进程或残留子进程,若有,那么就用killall -9 批量强行杀死即可

http://www.zskr.cn/news/1512856.html

相关文章:

  • Multi-Node LLM Serving: Architecture, Frameworks Best Practices (LLM Generated)
  • JSONConverter终极指南:快速将JSON转换为多语言模型类
  • 英雄联盟LCU API工具:从手动操作到智能自动化的技术革命
  • 2026.9.12打卡
  • 5分钟掌握AI背景移除:让每张照片都拥有完美背景
  • 2026年6月福建泉州太阳能路灯优选榜单:高靓照明18年技术积淀如何解决多元场景痛点与一体化方案 - 速递信息
  • 如何在Mac上使用Android USB网络共享:HoRNDIS驱动完整指南
  • 国内各地线上下单预约洗衣洗鞋|2026 靠谱干洗品牌优依派 - 新闻快传
  • 3大智能模块:Snap Hutao如何让你的原神游戏体验提升300%
  • 开源 vs 商业大模型:编码场景的真实差距与高效选择
  • 西门子PLC直连用OPC UA客户端工具包:含编译好的运行程序与.NET源码
  • yansongda/pay 架构设计与多支付平台集成最佳实践
  • Bernini视频编辑模型详细测评,最低8G就可以编辑!
  • 2026澳洲集运,空运哪家速度快?为什么能这么快的原因? - 热点观察
  • 2026品牌设计新趋势:揭秘5家高性价比优选机构 - 新闻快传
  • 2026四川花箱护栏厂家高性价比选购指南 - 速递信息
  • 算力共享新模式:云飞云助力 10 人团队共用一台 SolidWorks 服务器
  • 工业DSC应用实战:从内存焦虑到混合架构,解析56F8156核心优势
  • 华硕路由器终极网络净化指南:AdGuard Home一键安装教程
  • MinerU 3.3 之后,企业知识库为什么该重做文档入口:一套面向 Agent 的多页解析验收方案
  • 终极指南:如何用d2s-editor快速打造你的完美暗黑2角色
  • 山东大学软件学院2026项目实训个人博客(九)
  • 如何永久备份微信聊天记录:5步实现数据自主掌控的完整指南
  • 3分钟快速解决Windows热键冲突:Hotkey Detective完整终极指南
  • 河北墙板厂家实力排行:5家合规企业核心维度对比 - 奔跑123
  • 深耕全域智能营销九载,好客搜以技术实力赋能商家流量增长
  • 无向图的Hierholzer算法流程(一)
  • 河北墙板厂家实力排行:合规与定制能力双维度测评 - 奔跑123
  • D2DX:如何让20年前的暗黑破坏神2在现代PC上流畅运行?
  • 中文对话模型PyTorch实现:带BeamSearch解码与预训练词向量的seq2seq完整工程