前言

Zabbix 是企业级开源监控解决方案,支持采集服务器、网络设备的性能数据并触发告警。本文使用官方提供的预配置虚拟机(Appliance)作为主控机,在 CentOS 9 上手动部署 Agent 作为被控机,完成 Web 配置、图形化监控、触发器告警,并扩展监控 Windows 主机与 SNMP 防火墙。操作环境为 VMware Workstation,主控机 IP 自动获取,被控机使用静态 IP 192.168.10.224。

1. 主控机环境准备(导入官方 Appliance)

Zabbix 官网提供预构建的虚拟机镜像,导入后即可使用,无需手动安装 Server 与数据库。这一步是为了快速获得一个稳定、官方认证的主控机环境。

1.1 下载并导入设备

访问 Zabbix Appliance 下载页,选择 VMware (.vmx)Open virtualization format (.ovf) 格式下载。解压后,在 VMware 中通过 文件 → 打开 导入。

Zabbix 监控系统部署:从官方 Appliance 到 Linux/Windows 主机监控

前言

Zabbix 是企业级开源监控解决方案,支持采集服务器、网络设备的性能数据并触发告警。本文使用官方提供的预配置虚拟机(Appliance)作为主控机,在 CentOS 9 上手动部署 Agent 作为被控机,完成 Web 配置、图形化监控、触发器告警,并扩展监控 Windows 主机与 SNMP 防火墙。操作环境为 VMware Workstation,主控机 IP 自动获取,被控机使用静态 IP 192.168.10.224。

1. 主控机环境准备(导入官方 Appliance)

Zabbix 官网提供预构建的虚拟机镜像,导入后即可使用,无需手动安装 Server 与数据库。这一步是为了快速获得一个稳定、官方认证的主控机环境。

1.1 下载并导入设备

访问 Zabbix Appliance 下载页,选择 VMware (.vmx)Open virtualization format (.ovf) 格式下载。解压后,在 VMware 中通过 文件 → 打开 导入。

在这里插入图片描述

1.2 启动并获取 IP

启动虚拟机,默认登录账户:root , 密码:zabbix 登录后查看 IP:

ip addr show

在这里插入图片描述

执行命令后可以看到ip,记录该 IP,使用moba连接,后续 Web 访问和 Agent 配置均需使用。

1.3 访问 Web 界面

宿主机浏览器访问 http://<主控机IP>(官方 Appliance 将 Web 根目录直接指向 Zabbix,无需 /zabbix 后缀)。默认管理员账号 Admin,密码 zabbix

在这里插入图片描述

输入默认账号密码就可以成功登录。这样主控机就配置好了。

安全提示:生产环境必须立即修改默认密码。渗透测试中默认凭据常被利用获取 Server 控制权,进而通过 Agent 横向移动。

2. 部署 Linux 被控端(Agent)

被控机使用openEuler,需与主控机网络互通。Agent 负责采集本机 CPU、内存、网络等数据并上报。本步骤将完成安装与配置。

2.1 配置防火墙与 SELinux(实验环境)

Zabbix Agent 默认监听 TCP 10050 端口,必须开放防火墙;同时 SELinux 可能阻止 Agent 正常工作,实验环境可临时关闭。

在主控机上执行以下命令:

systemctl start firewalld  
firewall-cmd --zone=public --add-port=10050/tcp --permanent  
systemctl restart firewalld  
setenforce 0

2.2 添加 Zabbix 官方仓库

主控机 Appliance 基于 Zabbix 7.4 LTS,被控端需安装相同版本的 Agent,因此添加官方 7.4 仓库。

rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm
dnf clean all
  • rpm -Uvh:下载并安装 Zabbix 仓库配置包(生成 /etc/yum.repos.d/zabbix.repo),后续可用 dnf 直接安装 Agent。

  • dnf clean all:清除本地缓存,强制 dnf 重新读取仓库元数据,确保识别新添加的 Zabbix 源。

至于这个软件仓库的地址可以在zabbix官网选择好自己的配置,官网会给出仓库。openEuler并不是全球主流linux所以官方选择的可能会出现错误,这就可以去查官方文档或者直接使用ai工具找到正确的版本。

在这里插入图片描述

这就成功安装了仓库。

2.3 安装 Zabbix Agent

yum install -y zabbix-agent

该命令会自动下载并安装 Agent,同时解决依赖(如 libpcre2、libssl 等)。

2.4 修改 Agent 配置文件

编辑 /etc/zabbix/zabbix_agentd.conf,指定主控机 IP 和本机唯一标识。

Server=&lt;主控机IP&gt; # 被动模式允许的 Server  
ServerActive=&lt;主控机IP&gt; # 主动模式上报的 Server  
Hostname=svr224 # 本机在 Zabbix 中的名称,后续 Web 添加时需一致,可以在nmtui界面查看

在这里插入图片描述

127.0.0.1代表本机,直接在后面加上主控机地址就行了。

2.5 启动服务并验证连通性

启动 Agent 并设置为开机自启。

systemctl enable --now zabbix-agent2
systemctl status zabbix-agent2

在主控机上使用 zabbix_get 测试能否采集数据:

zabbix_get -s 192.168.10.223 -k agent.ping  

返回 1 表示通信成功。

在这里插入图片描述

从截图中可以看到输出了1,表示可以成功采集数据了,到现在主控机和被控机的配置就完成了。

3. Web 前端添加主机与监控项

想要成功监测到数据,就首先要添加上主机,登录 Zabbix Web,将上一步配置的被控机添加为主机,并创建自定义监控项。

3.1 添加主机

导航:Monitoring → Hosts → Create host

  • Host namesvr224(必须与 Agent 的 Hostname 完全一致,大小写敏感)

  • Groups:选择 Linux servers

  • Agent interface:填写被控机 IP 192.168.10.224,端口默认 10050

点击 Add

在这里插入图片描述

添加后状态显示enabled表示添加成功。

在这里插入图片描述

3.2 创建自定义监控项

监控项是 Zabbix 采集数据的最小单位。以下创建网卡流量和 CPU 使用率监控项。

网卡入站流量

Monitoring → Hostssvr223Items → Create item

  • Name网卡入站流量

  • Keynet.if.in[ens160](网卡名通过被控机 ip a 确认,常见为 ens160)可以使用ifconfig查看网卡。

  • Type of informationNumeric (unsigned)
    在这里插入图片描述

网卡出站流量

类似,Key 为 net.if.out[ens160]

CPU 使用率
  • NameCPU 使用率

  • Keysystem.cpu.util[all](all 表示整体 CPU 使用百分比)

  • Type of informationNumeric (float)

在这里插入图片描述

4. 创建监控图形

图形将多个监控项可视化展示,便于观察趋势。

Montoring → Hosts → 选择 svr224 → Graphs → Create graph

  • Name网卡流量

  • Items:分别添加入站和出站流量两个监控项

同样方式创建 CPU 使用率 图形。

在这里插入图片描述

Montoring → Hosts → 选择 svr224 → ViewGraphs 查看绘制的图,但是由于中文不支持的问题会出现乱码这时候我们可以回到主控机执行以下命令

yum install -y wqy-microhei-fonts   #安装文泉驿微米黑字体
cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/zabbix/ui/assets/fonts/graphfont.ttf   #替换 Zabbix 默认字体

在这里插入图片描述

这样就成功绘制出了图形

5. 创建触发器(告警条件)

我们不可能时时刻刻盯着图形,zabbix中可以设置一个触发器,触发器定义异常阈值,例如 CPU 使用率超过 70% 时产生告警。

5.1 创建 CPU 过载触发器

Configuration → Hosts → svr224 → Triggers → Create trigger

  • NameCPU 使用率过高

  • SeverityWarning

  • Expressionlast(/svr224/system.cpu.util[all])>80

表达式含义:取最新 CPU 使用率值,若大于 0.01 则触发。实际中按照等保要求应该设置70左右,这里为了能明显看到报警所以设置很低。
在这里插入图片描述

5.2 测试触发器效果

在被控机上执行find /,使 CPU 负载升高:

返回 Zabbix Web,Monitoring → Problems 应出现黄色告警。

(此处插入截图:Problems 列表显示 CPU 使用率过高告警)

在这里插入图片描述

这里成功触发了告警,告警会在恢复后自动清除(取决于触发器恢复表达式,默认自动恢复)。

6. 配置邮件告警

管理员不能时时刻刻盯着zabbix,但是zabbix提供了了邮件告警功能,这样管理员就可以去做其他事情,收到了报警邮件再回来看,当触发器触发时,Zabbix 可通过邮件通知管理员。本例使用 163 邮箱作为发件箱(需开启 SMTP 并获取授权码),QQ 邮箱作为收件箱。

6.1 配置报警媒介类型

首先,登录网易邮箱,点击设置,打开图中的两个服务,这里会出现一个授权码,后面会用到,保存好。
在这里插入图片描述

下面就需要配置报警媒介。

Alerts → Media types → Create media type

  • TypeEmail

  • SMTP serversmtp.163.com

  • SMTP server port465

  • Connection securitySSL/TLS

  • AuthenticationUsername and password

  • Username:你的 163 邮箱地址

  • Password:163 邮箱的授权码(非登录密码)

其他字段(如 SMTP helo)可使用默认值。
在这里插入图片描述

6.2 用户关联邮箱

User settings → notifications→Media → Add

  • Type:选择上一步创建的媒介

  • Send to:你的 QQ 邮箱地址

在这里插入图片描述

6.3 创建动作

Configuration → Actions → Create action

  • NameCPU 过高邮件告警

  • ConditionsTrigger name contains CPU 使用率过高

  • OperationsSend message to Admin

动作定义了“满足条件时执行什么操作”。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

经过以上步骤就成功创建出了动作

6.4 测试邮件告警

再次在被控机制造 CPU 高负载,等待约 1-2 分钟,QQ 邮箱应收到告警邮件。
在这里插入图片描述

这就成功收到了邮件。

常见问题与处理

问题现象 可能原因 解决方案
zabbix_get 返回空或 cannot connect 被控机防火墙未开放 10050 端口 firewall-cmd --add-port=10050/tcp --permanent 并重载
Agent 启动失败,日志 invalid entry 配置文件中有非注释的无效行(如说明文字) 删除或注释多余行,确保每行格式为 参数=值
Web 界面主机 ZBX 图标为红色 Hostname 不一致或 Agent 未运行 确保 Agent 配置的 Hostname 与 Web 添加的主机名完全一致(大小写敏感);检查 Agent 服务状态
安装 Zabbix Agent 时提示缺少 libcrypto.so.3 系统 OpenSSL 版本低于 3.0(如 openEuler 22.03 使用 OpenSSL 1.1.1) 改用 Zabbix 6.0 LTS 仓库,或安装 zabbix-agent2(静态编译)
dnf install zabbix-agent 提示 No match for argument 未正确添加 Zabbix 仓库,或仓库版本与系统不匹配 执行 rpm -Uvh 安装对应的仓库包,然后 dnf clean all
图表中文显示为方块(乱码) Zabbix 默认字体不支持中文 安装中文字体(如 wqy-microhei-fonts),并替换 graphfont.ttf
测试邮件能收到,但实际告警收不到邮件 动作中选择了错误的媒介类型(如选了触发器名称而非 Email 媒介) 在动作操作中,发送至媒体类型必须选择正确的邮件媒介(如 Email 或自定义的 163邮箱告警
动作日志显示 No message defined for media type 媒介类型或动作中未定义消息模板 在媒介类型的 消息模板 标签页添加“问题”模板,或在动作中勾选“自定义消息”并填写内容
触发器触发了,但动作日志没有新记录 动作条件中误加了“事件已确认”条件 删除该条件,只保留 Trigger = 触发器名称 和必要的 Trigger value = PROBLEM
邮件发送失败,动作日志显示 Cannot connect to SMTP server 主控机无法访问 SMTP 服务器,或端口被防火墙拦截 检查主控机网络,尝试更换端口(如 465 并启用 SSL/TLS)
邮件发送失败,动作日志显示 Authentication failed 邮箱授权码错误或已过期 重新登录邮箱生成新的授权码,更新到媒介类型密码字段
CPU 测试命令无法停止 后台进程未终止 执行 pkill -f "while :"killall stress

总结

本文完成了以下任务:

任务 关键操作
主控机部署 导入官方 Appliance,获取 IP
Linux Agent 安装 添加 Zabbix 仓库 → dnf install zabbix-agent → 修改配置 → 启动
Web 添加主机 主机名与 Agent 的 Hostname 严格一致
自定义监控项 net.if.in/out[ens160]system.cpu.util[all]
图形化展示 创建图表关联监控项
触发器告警 表达式 last(/svr224/system.cpu.util[all])>80
邮件告警 163 SMTP(SSL/465) + QQ 收件
Windows 监控 安装 Windows Agent,使用 Windows by Zabbix agent 模板
SNMP 监控 配置 SNMPv3,获取 OID,创建 SNMP 主机与监控项

参考资料

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐