前言

最近需要监控一台华为 S5720S-52X-LI-AC 交换机的流量情况。环境是这样的:Zabbix 服务器部署在 Proxmox VE 上的 Ubuntu 24.04 虚拟机,IP 为 172.16.11.27;交换机管理 IP 为 10.10.1.235,两个设备不在同一个网段

本以为是个简单的任务,结果一路踩坑:网络不通、SNMP 认证失败、超时无响应……这篇文章记录了完整的解决过程,希望对你有帮助。


一、环境说明

设备

型号 / 系统

IP 地址

说明

Zabbix Server

Ubuntu 24.04 + Zabbix 7.0 LTS

172.16.11.27

PVE 虚拟机

交换机

华为 S5720S-52X-LI-AC

10.10.1.235

管理 IP

网关

-

10.10.1.254

交换机所在网段的网关

监控协议:SNMPv3(认证 + 加密,authPriv


二、Zabbix 服务器搭建

2.1 安装 Zabbix 7.0 LTS

# 下载并安装 Zabbix 官方仓库
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb
sudo apt update

# 安装 Zabbix Server、前端、Agent 及 SNMP 工具
sudo apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2 snmpd snmp

2.2 配置数据库

# 导入初始数据
sudo zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

2.3 配置 Zabbix Server

sudo nano /etc/zabbix/zabbix_server.conf
# 修改 DBPassword=your_password

2.4 配置 Nginx

sudo nano /etc/zabbix/nginx.conf
# 修改 server_name 为你的服务器 IP,listen 端口可改为 8080

2.5 启动服务

sudo systemctl restart zabbix-server zabbix-agent2 nginx php8.3-fpm
sudo systemctl enable zabbix-server zabbix-agent2 nginx php8.3-fpm

2.6 Web 安装

访问 http://你的服务器IP:8080,按向导完成安装。默认账号:Admin / zabbix

⚠️ 登录后第一件事:修改 Admin 密码!


三、华为交换机 SNMPv3 配置

3.1 通过 Web 界面配置

配置项

SNMP 版本

v3

用户名

traffic(自己随便设置)

安全级别

认证并加密 (authPriv)

认证协议

SHA

认证密码

jm@kxr0WTC(自己随便设置)

加密协议

AES128

加密密码

SNm@kxr0W(自己随便设置)

3.2 ⚠️ 关键:配置默认网关

跨网段监控时,交换机必须有回程路由。在交换机 CLI 或 Web 界面添加静态路由:

text

ip route-static 0.0.0.0 0.0.0.0 10.10.1.254

没有这条路由,请求能到,响应回不来 → 永远 Timeout


四、核心问题与解决方案

4.1 问题一:网络不通,snmpget Timeout

现象:ping 交换机丢包,snmpget 超时

原因:交换机没有默认网关,跨网段通信时响应无法返回

解决:添加静态路由 0.0.0.0 0.0.0.0 → 10.10.1.254

4.2 问题二:SNMP Authentication failure

现象:网络通了,但认证失败

原因:认证协议命名差异

交换机

Zabbix

SHA

SHA1

解决:Zabbix 中选择 SHA1

4.3 问题三:Use combined requests

现象:配置看起来都对,Zabbix 主机状态还是红色

解决:在 SNMP 接口配置中,勾选 Use combined requests


五、使用官方模板:Huawei VRP by SNMP

5.1 为什么使用官方模板

Zabbix 官方提供了 Huawei VRP by SNMP 模板,专门为华为 VRP 系统设备设计。该模板包含:

类别

内容

自动发现规则

MPU 发现(主控板)、接口发现

监控项

CPU 利用率、内存利用率、温度、风扇状态、电源状态、端口流量

触发器

CPU 过高、内存过高、温度过高、风扇故障、端口 down 等告警

图形

各端口流量图、CPU/内存趋势图

使用官方模板的优势

  • 无需手动创建监控项和 OID

  • 监控项经过官方测试,准确可靠

  • 自带触发器和图形,开箱即用

5.2 关联模板到主机

  1. 进入 数据采集主机,点击你的交换机 yxwa-sw-5

  2. 点击 模板 选项卡

  3. 点击 链接新模板

  4. 搜索 Huawei VRP by SNMP 并勾选

  5. 点击 选择

  6. 点击 更新

5.3 ⚠️ 模板冲突处理

如果之前手动创建过 CPU、内存、温度等监控项,关联模板后会出现重复。解决方法:

  1. 在主机 监控项 选项卡中,勾选手动创建的监控项

  2. 点击 删除

  3. 保留模板自动创建的监控项

5.4 模板自带的宏变量

关联模板后,可以根据需要调整告警阈值:

宏名称

默认值

说明

{$CPU.UTIL.CRIT}

90

CPU 严重告警阈值 (%)

{$MEMORY.UTIL.MAX}

90

内存告警阈值 (%)

{$TEMP_WARN}

50

温度警告阈值 (°C)

{$TEMP_CRIT}

60

温度严重告警阈值 (°C)

修改方法:进入主机 → 选项卡 → 添加或修改对应宏。


六、仪表盘搭建

6.1 创建仪表盘

进入 仪表盘创建仪表盘,命名为 Network Devices

6.2 添加核心仪表(Gauge)

添加三个仪表盘组件:

组件

监控项

阈值设置

CPU 使用率

搜索 CPU utilization

最小值0/最大值100/黄70/红90

内存使用率

搜索 Memory utilization

最小值0/最大值100/黄80/红90

设备温度

搜索 Temperature

最小值0/最大值100/黄60/红75

CPU使用率
内存使用率
设备温度

仪表盘的成果图


七、Switch Widget 专业端口面板

这是整个监控系统的亮点,能把交换机端口模拟成实物图,用颜色直观显示端口状态和流量负载。

7.1 选择 Widget 版本

经过对比,我选择了社区活跃维护的版本:

项目地址https://github.com/canghai908/zabbix-widget-switch

版本

特点

v0.0.2

最新发布(2026-03-20),支持自动发现端口、状态颜色匹配

7.2 安装 Switch Widget

# 进入 Zabbix 模块目录
cd /usr/share/zabbix/modules

# 下载项目
sudo git clone https://github.com/canghai908/zabbix-widget-switch.git switchpanel

# 设置权限
sudo chown -R www-data:www-data switchpanel
sudo chmod -R 755 switchpanel

# 重启服务
sudo systemctl restart zabbix-server nginx php8.3-fpm

7.3 在 Web 界面启用模块

  1. 登录 Zabbix Web 界面

  2. 进入 管理常规模块

  3. 点击 扫描目录

  4. 找到 Switch Panel 模块,点击 启用

7.4 配置 Switch Widget

在仪表盘中添加 Switch Panel 组件,按以下配置填写:

配置项

推荐值

说明

主机

yxwa-sw-5

选择要监控的交换机

4

4 行显示 52 个端口

Traffic in item pattern

net.if.in[ifHCInOctets.*]

匹配入流量监控项(64位计数器)

Traffic out item pattern

net.if.out[ifHCOutOctets.*]

匹配出流量监控项

Speed item pattern

net.if.speed[*]

匹配端口速率监控项

Status item pattern

net.if.status[*]

端口状态模式(关键!实现自动颜色)

Port card label

Port name

显示物理端口名称

7.5 ⚠️ 关于端口索引

该版本没有 Port index start 配置项,默认端口索引从 1 开始。如果你的环境端口索引不是从 1 开始(例如端口 1 的索引是 5),可能需要对键值进行适配。

7.6 实现效果

配置成功后,Widget 会自动:

  • ✅ 发现所有端口

  • ✅ 根据状态显示颜色(绿色=up / 红色=down / 灰色=未使用)

  • ✅ 根据流量负载显示热力图(绿色<5% / 黄色≥40% / 红色≥70%)

  • ✅ 鼠标悬停显示详细信息


八、最终监控效果

8.1 仪表盘布局