【Day 68】Zabbix-自动监控-Web检测-分布式监控
一、自动监控
当被监控机数量过多时,手动添加主机效率极低,通过自动注册(常用) 或 自动发现 可实现批量监控。
维度 | 自动注册(Auto-Registration) | 自动发现(Auto-Discovery) |
---|---|---|
交互方向 | 被管理节点主动向控制节点上报 (如 Zabbix Agent 主动连 Server) | 控制节点主动扫描目标网络 / 范围 (如 Zabbix Server 扫 192.168.1.0/24) |
身份确认 | 被管理节点携带 “预设标识”(如密钥、主机名规则),控制节点验证后接入 | 控制节点先扫描到 “存活节点”,再通过额外规则(如端口、服务)筛选目标 |
依赖配置 | 被管理节点需配置 “控制节点地址 + 标识”,控制节点配置 “验证规则” | 控制节点需配置 “扫描范围(IP 段 / 域名)+ 发现规则(端口 / 服务检测)” |
资源消耗 | 低(仅节点上线时主动上报,无持续扫描) | 高(控制节点需周期性扫描网络,规模越大消耗越高) |
(一)自动发现
自动发现 是 Zabbix Server 主动探测指定网络范围或资源,自动识别并添加符合条件的监控对象(如服务器、交换机、数据库实例、端口等)的功能。
维度 | 配置 → 自动发现(Discovery Rules) | 配置 → 动作 → 自动发现(Discovery Actions) |
---|---|---|
核心功能 | 主动探测并记录符合条件的监控对象(仅发现) | 处理发现结果,自动执行创建主机等操作(处理) |
依赖关系 | 独立存在,仅负责探测,不依赖 “动作” | 必须依赖 “发现规则”,否则无对象可处理 |
配置重点 | IP 范围、探测方式、扫描频率 | 触发条件、自动执行的操作(创建主机、链接模板等) |
常见误区 | 认为 “创建规则就会自动添加主机”(实际不会) | 认为 “动作可以独立发现对象”(实际需要规则先发现) |
(二)自动注册
1. 在 Zabbix Server 端创建自动注册动作
自动注册的本质是:Zabbix Agent 主动向 Server 上报信息,Server 通过 “动作规则” 自动将 Agent 归属到对应主机组、链接模板,无需手动操作。
操作步骤:
(1)登录 Zabbix Web 后台 → 进入 配置 → 动作 → 选择 “自动注册” 标签页 → 点击 “创建动作”;
(2)配置 “动作名称” 与 “触发条件”(精准匹配目标 Agent):
- 动作名称:建议明确,如 “Linux 主机自动注册”;
- 触发条件(示例,可按需调整):可为空
- 条件 1:
主机元数据
等于Linux-Agent
(需在 Agent 配置文件中预设元数据,便于分类); - 条件 2:
Agent版本
大于等于6.0
(过滤低版本 Agent,避免兼容性问题); - 逻辑关系:所有条件 “与”(确保只匹配目标主机)。
- 条件 1:
(3)配置 “操作”(自动完成主机初始化):
- 点击 “操作” 标签页 → 点击 “添加”,设置具体操作:
- 操作 1:
添加主机
(自动在 Server 中创建对应主机,主机名默认使用 Agent 配置的Hostname
); - 操作 2:
将主机添加到主机组
(选择预设的主机组,如 “Linux 业务服务器组”); - 操作 3:
链接模板
(自动关联监控模板,如 “Template OS Linux”);
- 操作 1:
(4)点击 “添加” 保存动作,Server 端自动注册规则生效。
2. 在业务服务器上部署 Zabbix Agent
[root@host_21 ~]# cat > /etc/yum.repos.d/zabbix.repo << EOF
> [zabbix]
> name=zabbix
> baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/
> enabled=1
> gpgcheck=0
> EOF
[root@host_21 ~]# yum install -y zabbix-agent
Agent 需确保配置正确以触发自动注册:
核心配置(Agent 配置文件:zabbix_agentd.conf
,路径通常为/etc/zabbix/
):
[root@host_21 ~] vim /etc/zabbix/zabbix_agentd.conf # 1. 指定Zabbix Server地址(Agent向此地址上报数据)
Server=Z192.168.140.22 # 如 (Server端IP)
# 2. 配置主机名(需唯一,建议与业务服务器 hostname 一致)
Hostname=za_node02 # 示例:被监控机的主机名
# 3. 配置元数据(与Server端自动注册触发条件匹配)
# HostMetadata=Linux-Agent # 需与Server动作中“主机元数据”条件完全一致
# 4. 启用主动模式(自动注册依赖主动上报,必须开启)
# StartAgents=0 # 关闭被动模式(仅主动上报)
ServerActive=192.168.140.22 # 主动向Server上报的地址,同Server字段[root@host_21 ~] systemctl enable --now zabbix-agent.service
#Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.[root@host_21 ~] netstat -tunlp |grep 10050
# tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 16106/zabbix_agentd
# tcp6 0 0 :::10050 :::* LISTEN 16106/zabbix_agentd
部署后验证:
- 重启 Agent 服务:systemctl restart zabbix-agent;
- 查看 Agent 状态:systemctl status zabbix-agent,确保 “active (running)”;
- 查看 Agent 日志(排查注册失败):tail -f /var/log/zabbix/zabbix_agentd.log,无 “connection refused” 等错误即正常。
-
“no active checks on server ... host not found”→ 说明 Agent 已发送请求,但 Server 中无对应主机且自动注册动作未生效(回到步骤二检查动作条件)。
-
“connection refused” 或 “timeout”→ 网络不通或 Server 10051 端口未开放(回到步骤一解决通信问题)。
-
“Host [za_node02] already exists”→ Server 中已有同名主机(可能之前手动创建过),但状态为 “禁用” 或 “未链接模板”,需在 Server 中删除该主机后重试
3. 查看自动添加的主机(验证结果)
进入 Zabbix Web 后台 → 配置 → 主机,可看到:
- 自动注册的主机已出现在列表中,“状态” 为 “已启用”;
- “主机组” 和 “链接的模板” 与 Server 端动作配置一致;
- 点击主机名,进入 “监测数据” 标签页,可看到 CPU、内存等监控数据已正常采集(通常需等待 1-5 分钟,取决于模板采集周期)。
- 若连通性正常,等待监控项采集周期(默认 1 分钟),前端可用性会自动更新为绿色。
二、Web 监测
//(监控 Web 业务访问质量)
针对 Web 服务(如官网、业务系统),通过 Web 监测可实时监控响应时间、访问成功率、页面元素加载速度等关键指标,及时发现 “打不开、加载慢” 等问题。
1. 创建 Web 场景(核心配置)
Web 场景是 Web 监测的基本单元,一个场景可包含多个 “步骤”(如 “访问首页→点击登录→验证登录成功”),模拟用户真实访问流程。
操作步骤:
(1)登录 Zabbix Web 后台 → 进入 配置 → 主机,选择需添加 Web 监测的主机(如 “Web 服务器”)→ 点击 “Web 场景” 标签页 → 点击 “创建 Web 场景”;
(2)配置场景基础信息:
- 名称:如 “Web 业务首页访问监测”;
- 应用集:选择或创建应用集,如 “Web 监测”(便于分类查看数据);
- 更新间隔:监测周期,如 “30 秒”(根据业务重要性调整,核心业务可设 10-30 秒);
- 尝试次数:如 “2”(一次失败后重试,避免网络波动误报)。
- 代理(可选):若需通过代理监测,选择对应 Zabbix Proxy,默认 “无”;
(3)添加 “场景步骤”(模拟用户访问):
- 点击 “步骤” 标签页 → 点击 “添加”,配置步骤 1(如 “访问 Web 首页”):
- 名称:“访问首页”;
- URL:输入 Web 首页地址,如 “http://192.168.140.30:8080”(需包含协议、IP / 域名、端口);
- 方法:默认 “GET”(获取页面数据,提交表单用 “POST”);
- 响应超时:如 “5 秒”(超过 5 秒判定为访问超时,触发报警);
- 所需状态码:选择 “200”(HTTP 200 表示访问成功,若需匹配多个码,可选 “200,301”);
- (可选)添加步骤 2(如 “验证首页关键词”):
- 名称:“验证首页包含‘登录’关键词”;
- URL:同步骤 1;
- 检查类型:选择 “内容检查”;
- 检查:“存在” → 输入关键词 “登录”(确保页面正常加载,避免出现空白页)。
(4)点击 “添加” 保存场景,Web 监测生效。
2. 查看 Web 监测数据与配置报警
(1)查看实时数据
进入 监测 → 主机 → 选择 Web 监测的主机 → Web检测
(2)配置 Web 监测报警(避免遗漏故障)
当 Web 访问超时、响应码异常时,需自动报警,配置逻辑与 “主机故障报警” 一致:
① 进入 配置 → 主机 → 触发器 → 创建触发器:
- 名称:“Web 首页访问超时”;
- 表达式:
{Web服务器:web.test.time[Web业务首页访问监测,访问首页,time].last()}>5
(响应时间超过 5 秒触发报警); - 严重性:设为 “High”(Web 故障影响用户,优先级较高)。
② 将触发器关联到之前的 “主机故障报警” 动作(或单独创建 Web 报警动作),确保报警能通过 SMTP 邮箱发送。
三、Zabbix分布式监控部署
分布式架构由三部分组成:Zabbix Server(核心节点)、Zabbix Proxy(代理节点)和 Zabbix Agent(被监控节点)。Proxy 节点负责与 Agent 通信并暂存监控数据,定期将数据同步至 Server 端。
Zabbix 分布式监控通过引入 Proxy 节点,解决了单 Server 架构在大规模监控场景下的瓶颈问题。作用:
(1)减轻 Zabbix Server 的负载压力,将数据采集任务分散到 Proxy 节点
-
场景示例:监控 1000 台跨机房服务器,部署 2 个 Proxy 分别接管 2 个机房的采集,Server 负载仅相当于单 Server 监控 300 台的水平。
(2)降低跨机房 / 跨地域网络带宽消耗,Proxy 可在本地收集数据后批量上报
-
场景示例:北京 Server 监控上海机房的 50 台服务器,部署上海 Proxy 后,跨地域带宽仅需承载 Proxy 批量上报的聚合数据,而非 50 台设备的实时原始数据。
(3)提高监控系统可用性,局部网络故障不会影响整个监控体系。
-
场景示例:深圳 Proxy 所在服务器意外断电,深圳机房的监控数据会暂存于 Proxy 本地(若配置了 MySQL 缓存),断电 1 小时恢复后,Proxy 自动补传 1 小时内的所有数据,Server 无需重新配置。
(4)弹性拓展:随监控规模动态扩容
-
新增机房 / 区域时,只需部署新的 Proxy 节点,配置其 “负责的 IP 段” 和 “Server 地址”,即可接入监控体系;
(一) 环境描述
本次部署采用以下环境配置:
角色 | 操作系统 | IP 地址 | 主要组件 |
---|---|---|---|
Zabbix Server | CentOS 7.9 | 192.168.140.22 | Zabbix Server 5.0、MySQL 8.0、PHP 7.4 |
Zabbix Proxy | CentOS 7.9 | 192.168.140.20 | Zabbix Proxy 5.0、MySQL 8.0 |
Zabbix Proxy | CentOS 7.9 | 192.168.140.21 | Zabbix Proxy 5.0、MySQL 8.0 |
被监控主机 | CentOS 7.9 | 192.168.140.51 | Zabbix Agent 5.0 |
网络要求:
-
所有节点关闭防火墙或开放必要端口(10050/tcp、10051/tcp)
-
SELinux 设置为 permissive 或 disabled
-
时间同步(建议配置 NTP 服务)
(二)Zabbix Server 添加代理
-
登录 Zabbix Web 界面(http://192.168.1.10/zabbix)
-
导航至:管理→ Proxy → 创建proxy
-
填写代理信息:
- Proxy name:Zabbix proxy 1(必须与 proxy 配置文件中的 Hostname 一致)
- Proxy mode:主动式
- Proxy address:192.168.140.20(Proxy 节点 IP)# 可不写
-
点击 "Add" 完成添加
-
-
验证 Proxy 是否连接成功:(需要保证该主机的「状态」被设置为 “已启用”且代理正确)
- 查看 Server 日志:
tail -f /var/log/zabbix/zabbix_server.log
- 查看 Server 日志:
(三) Zabbix Proxy 的部署
1、 安装 Zabbix Proxy 相关的软件
(1)配置 Zabbix 官方源:
cat > /etc/yum.repos.d/zabbix.repo << EOF
[zabbix]
name=zabbix
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/
enabled=1
gpgcheck=0
EOF
(2)安装 Proxy 及数据库
[root@bj-zabbix-proxy ~] yum install -y mariadb-server zabbix-proxy-mysql
(3)初始化 MySQL 安全配置:
mysql_secure_installation
2、创建 Proxy 需要的库、导入表
(1)登录 MySQL 创建数据库:
mysql -u root -p
(2)执行 SQL 命令创建数据库和用户:
create database zabbix_proxy character set utf8 collate utf8_bin;
create user 'zabbix'@'localhost' identified by 'Zabbix@123';
grant all privileges on zabbix_proxy.* to 'zabbix'@'localhost';
flush privileges;
quit;
(3)导入 Proxy 数据库表结构:
[root@tj-zabbix-proxy ~] cd /usr/share/doc/zabbix-proxy-mysql-5.0.47/
[root@tj-zabbix-proxy zabbix-proxy-mysql-5.0.47] ls
# AUTHORS ChangeLog COPYING NEWS README schema.sql.gz
[root@tj-zabbix-proxy zabbix-proxy-mysql-5.0.47] zcat schema.sql.gz | mysql -uroot tj_zabbix_proxy -p548165634
3、编辑 Zabbix Proxy 配置文件,指定数据库连接
(1)编辑配置文件:
vi /etc/zabbix/zabbix_proxy.conf
# Proxy名称(需与Server端配置一致)
Hostname=tj_zabbix_proxy# Zabbix Server地址
Server=192.168.140.22# 数据库类型
DBName=tj_zabbix_proxy# 数据库用户
DBUser=zabbix# 数据库密码
DBPassword=Tj@123
4、启动 Zabbix Proxy
(1)设置权限并启动服务:
chown -R zabbix:zabbix /var/log/zabbix/
systemctl start zabbix-proxy
systemctl enable zabbix-proxy
(2)检查服务状态:
[root@tj-zabbix-proxy ~] systemctl status zabbix-proxy
[root@tj-zabbix-proxy ~] netstat -tunlp |grep 100
# tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 18201/zabbix_proxy
# tcp6 0 0 :::10051 :::* LISTEN 18201/zabbix_proxy
(3)验证日志是否有错误:
tail -f /var/log/zabbix/zabbix_proxy.log
# 正常启动会显示 "proxy #xx started xxxx")
(四)Zabbix-agent 指向代理监控
在被监控主机(192.168.1.30)上配置 Agent:
[root@lvm__100 ~] cat > /etc/yum.repos.d/zabbix.repo << EOF
> [zabbix]
> name=zabbix
> baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/
> enabled=1
> gpgcheck=0
> EOF
[root@lvm__100 ~] yum install -y zabbix-agent
[root@lvm__100 ~] vim /etc/zabbix/zabbix_agentd.conf
# 指向Proxy节点而非直接指向Server
Server=192.168.140.20
# 被动模式下的服务器列表
ServerActive=192.168.140.20
# 被监控主机名称
Hostname=Web-server-1[root@lvm__100 ~] systemctl restart zabbix-agent
[root@lvm__100 ~] systemctl enable zabbix-agent[root@lvm__100 ~] netstat -tunlp
# tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 1676/zabbix_agentd
(五)验证结果
(1)在 Zabbix Web 界面创建主机(设置自动注册就不用创建了):
-
导航至:配置 → 主机 → 创建主机
-
主机名称:Web-server-1(需要一样)
-
群组:选择合适的主机组
-
Agent 代理程序的接口:IP address 填写 192.168.140.51
-
由agent代理程序检测:选择创建的 "bj_zabbix_proxy"
-
点击 "Add" 添加
(2)为主机设置对应的检测模板
(3)验证数据采集:
-
确认是否有正常采集的数据(如 CPU、内存等指标)
(4)验证分布式架构有效性:
-
可以暂时断开 Proxy 与 Server 的连接,观察 Agent 仍能正常向 Proxy 上报数据
-
恢复连接后,验证 Proxy 是否能将离线期间的数据同步至 Server
// 有时有 “配置同步延迟”,而非 Proxy 或主机配置错误。本质是 清除配置缓存、重置通信状态、强制触发配置同步—— 这两个服务在运行中会缓存配置或维持旧的通信连接,当配置(如 Proxy 名称、主机分配)修改后,旧缓存 / 连接会阻碍新配置生效,重启则能彻底 “刷新” 这些状态。通过 “重启 Server + 重启 Proxy” 强制刷新配置。