使用 Zabbix 监控网络交换机或路由器

简介

本指南将引导您完成使用 Zabbix 对网络交换机或路由器进行基础监控所需的步骤。 本文以 Cisco 路由器为例,但该流程同样适用于任何启用了 SNMP 的网络设备。

本指南适用对象

本指南面向希望快速为网络设备启用基础监控的新 Zabbix 用户和网络管理员。 如果您需要更深入的自定义或高级配置选项,请参阅 SNMP agent 页面或 Zabbix 手册中的 Configuration 部分。

前提条件

在继续本指南之前,请确保您已具备以下条件:

  • 已安装 Zabbix 服务器和 Zabbix 前端:请按照您的操作系统对应的说明进行安装(参见 从软件包安装Web 界面安装)。
  • 如果要监控本地网络指标,请安装 Zabbix agent。
  • 已启用 SNMP 的设备:一台已启用 SNMP 的网络交换机或路由器(例如 Cisco 路由器)。
  • 已安装 MIB 文件:安装 MIB 文件可使 Zabbix 将数字 OID 转换为人类可读的名称和描述。 如果没有正确的 MIB 支持,您可能只能看到数字值,这会使配置监控项和排查问题更加困难。

在 Ubuntu 上安装 MIB 文件:

1. 安装 MIB 下载器软件包:

sudo apt-get update
sudo apt-get install snmp-mibs-downloader

如果您需要添加特定厂商的 MIB(例如来自 Cisco、Juniper),请将它们放置在相应的 MIB 目录中:

  • 对于基于 Linux 的系统,常见位置包括 /usr/share/snmp/mibs/ 或 /usr/local/share/snmp/mibs/。
  • 对于 Zabbix 安装,MIB 文件可以存储在 /var/lib/zabbix/mibs/ 中。

请确保 MIBDIRS 环境变量或 snmp.conf 文件包含正确的路径。

要验证系统是否识别新的 MIB,请使用:

snmptranslate -IR -On <MIB-NAME>::<object>

如需详细说明,请参阅您的 SNMP 库文档:

2. 编辑 /etc/snmp/snmp.conf,并注释掉以 mibs : 开头的行,以允许系统加载所有可用的 MIB。

3. 通过运行 snmpwalk 进行验证(例如,snmpwalk -v 2c -c <your_community_string> <device_IP>),并检查 OID 是否以描述性名称显示。

根据您的环境不同,本指南中的某些步骤可能会略有差异。 本指南基于 Ubuntu 环境以及正在监控的 Cisco Catalyst 3750V2-24FS 网络设备。

假定您的网络设备已经完成物理安装并连接。

配置网络设备(Cisco 路由器示例)

对于通过 SNMP 进行监控,您必须配置网络设备以允许 SNMP 查询。 下面的示例适用于 SNMPv2,且未考虑现有设置。 注意:应用这些命令可能会覆盖当前的 SNMP 配置。

对于 Cisco 路由器,配置通常包括以下步骤。

SNMPv2 示例

1. 启用 SNMP 并设置 community 字符串。

登录到您的 Cisco 路由器控制台,并进入配置模式:

configure terminal

然后,通过指定只读 community 字符串来启用 SNMP。 例如:

snmp-server community <your_community_string> RO

请将 <your_community_string> 替换为您的安全 community 字符串。 注意:RO(只读)选项允许 SNMP 从设备检索数据,但会阻止任何配置更改。

出于安全考虑,建议将 SNMP 访问限制为仅必要的设备。 有关配置访问控制列表(ACL)的更多指导,请参阅 Cisco 官方文档

2. 保存配置。

保存更改,以确保 SNMP 设置在重启后仍然保留:

write memory

SNMPv3 示例

SNMPv3 通过身份验证和加密提供增强的安全性。 其配置比 SNMPv2 更安全,应结合设备特定文档进行验证。

1. 创建一个 SNMP 组。

配置一个启用了隐私(加密)的 SNMPv3 组:

configure terminal
snmp-server group <your_group> v3 priv

2. 创建一个 SNMP 用户。

添加一个具有身份验证和隐私功能的 SNMPv3 用户。 请将占位符替换为您所需的值:

snmp-server user <your_user> <your_group> v3 auth md5 <auth_password> priv aes 128 <priv_password>

3. 保存配置:

write memory

如需进一步了解或获取特定型号的说明,您可以参考外部 Cisco SNMP 配置教程。 不过,本指南提供的是启用 SNMP 监控的基本步骤。

配置 Zabbix 前端

在 Zabbix 前端中创建主机

1. 登录 Zabbix 前端。

2. 添加一个新主机。

导航到 数据采集 > 主机,然后点击 创建主机

  • 主机名称:为您的设备输入一个名称(例如,“Cisco Router”)。
  • 主机组:选择一个现有组,或创建一个新组,例如“Network Devices”。
  • 接口:
    • 在接口下点击 添加
    • 选择 SNMP 作为接口类型。
    • 输入您的 Cisco 路由器的 IP 地址或 DNS 名称。
    • 设置默认 SNMP 端口(通常为 161)。
    • 使用下拉菜单选择合适的 SNMP 版本(例如 SNMPv2)。
    • 对于 SNMPv1/v2,在 SNMP community 字段中输入 community 字符串。 对于 SNMPv3,将提示填写其他凭据(Context nameSecurity nameSecurity level 等)。

3. 关联模板

Templates 字段中,选择最适合您设备的 SNMP 模板。 Zabbix 为许多设备系列提供了一系列预置的 SNMP 模板。 例如,如果您正在监控 Cisco 设备,请选择与该设备操作系统或型号相对应的模板(例如 Cisco IOS SNMP 或 Cisco Catalyst 3750<device model> SNMP)。

4. 点击 Add 保存主机。

查看已收集的监控指标

恭喜!Zabbix 现在已配置完成,可以监控您的网络设备。

最新数据:

  • 在 Zabbix 前端中,导航到 Monitoring > Latest data。

  • 选择您的 “Cisco Router” 主机(或已发现的主机),查看硬件和网络运行时间、ICMP 丢包、ping 以及响应时间等监控指标。

  • 图形和屏幕:

要可视化性能数据,请点击 SNMP 监控项旁边的 Graphs,以查看详细监控指标。

接下来,您可以:

创建 SNMP 监控项

设置好主机后,您可以创建监控项来监控特定指标。
注意:如果您使用的是模板,这一步是可选的,因为模板中已经包含默认的监控项集合。

1. 确定 SNMP OID:

使用 snmpwalk 命令列出设备上可用的 OID。
例如:

snmpwalk -v 2c -c <your_community_string> <device_IP> .

找到您希望监控的指标对应的 OID(例如,端口 3 的入站流量对应 IF-MIB::ifHCInOctets.3)。
要获取数值形式的 OID,您可以使用:

snmpget -v 2c -c <your_community_string> -On <device_IP> IF-MIB::ifHCInOctets.3

2. 创建 SNMP 监控项:

  • 导航到 数据采集 > 主机,然后在您的 SNMP 主机上点击 监控项 选项卡,再点击 创建监控项
  • 名称:输入一个具有描述性的名称(例如,“端口 3 入站流量”)。
  • 类型:选择 SNMP agent
  • 键值:提供一个有意义的键值(例如,cisco.ifHCInOctets.3)。
  • 主机接口:确保已选择 SNMP 接口。
  • SNMP OID:使用支持的格式之一输入 OID,例如:
    • get[1.3.6.1.2.1.31.1.1.1.6.3] 用于获取单个值;
    • walk[1.3.6.1.2.1.31.1.1.1.6.3] 用于异步检索一个值子树。

  • 预处理(如需要):如果该监控项返回的是累积计数器(例如接口流量),请导航到 预处理 选项卡,并添加类似“每秒变化”的预处理步骤来计算速率。

要在一次 SNMP 事务中检索多个值,您可以使用 walk[OID1,OID2,...] 语法指定多个 OID。

在数字 OID 和 MIB 名称之间转换 OID

在使用 SNMP 时,您可能需要在数字 OID 及其对应的 MIB 名称之间进行转换。
这种转换有助于更轻松地识别和排查指标问题。

  • 将 MIB 名称转换为数字 OID:使用带有 -On 选项的 snmptranslate 命令。
    例如,要将 MIB 名称 IF-MIB::ifHCInOctets.3 转换为其数字 OID,请运行:
snmptranslate -On IF-MIB::ifHCInOctets.3

该命令可能输出:

.1.3.6.1.2.1.31.1.1.1.6.3
  • 将数字 OID 转换为 MIB 名称:使用带有 -IR(或 -m ALL)选项的 snmptranslate 命令来反向转换。
    例如,要将数字 OID .1.3.6.1.2.1.31.1.1.1.6.3 转换回其 MIB 名称,请运行:
snmptranslate -IR -On .1.3.6.1.2.1.31.1.1.1.6.3

该命令可能输出:

IF-MIB::ifHCInOctets.3

设置问题告警

本指南提供了发送电子邮件告警的基本配置步骤。

1. 导航到 用户设置 > 个人资料,切换到 媒体 选项卡,并添加您的电子邮件

2. 按照接收问题通知指南进行操作。

下次当 Zabbix 检测到问题时,您应该会通过电子邮件收到告警。

测试您的配置

为确保 Zabbix 能够正确检测网络性能问题,请通过提高 ICMP ping 响应时间阈值来模拟一个真实问题。

1. 在 Zabbix 中打开您的 "Cisco Router" 主机配置。

2. 导航到 Macros 选项卡,并选择 Inherited and host macros

3. 找到 {$ICMP_RESPONSE_TIME_WARN} 宏(或类似的响应时间阈值宏)。

4. 将其设置为一个非常低的值(例如 0.001),以便在 ping 响应超过该值时触发告警。

5. 单击 Update 以应用更改。

6. 等待片刻,让 Zabbix 检测到模拟的问题。

7. 导航到 Monitoring > Problems,确认是否出现告警(例如,“High ICMP ping response time”)。

如果已配置告警,您还应收到一条问题告警。

8. 将宏值恢复为原始设置,并单击 Update 保存更改。

9. 确认问题已解决,并且已从 Problems 部分消失。

SNMP 监控故障排查

如果您发现 Zabbix 前端中的 SNMP 图标显示为红色,或者没有采集到数据,请尝试以下步骤:

1. 检查 SNMP 连通性。

对于 SNMPv2,请从您的 Zabbix 服务器运行以下命令:

snmpwalk -v 2c -c <community_string> <device_IP> .

此命令用于验证设备是否会响应 SNMP 查询。

对于 SNMPv3,请包含相应的 SNMPv3 凭据:

snmpwalk -v3 -u <your_user> -l authPriv -a MD5 -A <auth_password> -x AES -X <priv_password> <device_IP> .

这将验证 SNMPv3 凭据是否正确,以及设备是否能够安全响应。

2. 确保已按照 先决条件 安装并启用 MIB 文件。 为确保这一点,在查询网络设备时,以下命令不应报错:

snmpwalk -v 2c -c <your_community_string> <device_IP> ifInOctets

这应返回已翻译的 OID,且不应出现错误。

3. 确认 Zabbix 中配置的 SNMP 版本和凭据与设备上设置的一致。 例如,检查 Zabbix 主机配置中的 SNMP 设置,并将其与设备配置进行对比。 在 Cisco 设备上,您可以通过运行以下命令检查 SNMP 设置:

show running-config | include snmp

这可确保 community string(用于 SNMPv2)或 SNMPv3 用户信息正确无误。

4. 验证网络设备上已正确启用 SNMP。 在 Cisco 路由器上,登录控制台并运行:

show running-config | include snmp

此命令会显示当前生效的 SNMP 配置,并有助于确认 SNMP 是否已正确配置。

5. 确保没有防火墙或网络问题阻止 Zabbix 服务器与设备之间的 SNMP 流量(通常为 161 端口)。 您可以使用以下命令测试连通性:

nc -zv <device_IP> 161

nc -zv 用于检查设备上的 161 端口是否已打开并处于监听状态。

此外,如果您在 Ubuntu 上使用 UFW,请检查防火墙状态:

sudo ufw status

或者,对于 iptables:

sudo iptables -L -n

6. 查看 Zabbix 服务器日志文件中是否有任何与 SNMP 相关的错误,以帮助定位问题:

tail -f /tmp/zabbix_server.log

tail -f 可让您实时监控日志更新。

另请参阅: