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

简介

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

本指南适用对象

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

前提条件

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

  • 已安装 Zabbix 服务器和 Zabbix 前端:请根据您的操作系统安装说明进行安装(参见 Installation from packagesWeb interface installation)。
  • 如果需要监控本地网络指标,已安装 Zabbix agent。
  • 已启用 SNMP 的设备:启用了 SNMP 的网络交换机或路由器(例如 Cisco 路由器)。
  • 已安装 MIB files:安装 MIB 文件可使 Zabbix 将数字 OID 转换为便于阅读的名称和描述。
    如果没有正确的 MIB 支持,您可能只能看到数字值,这会使监控项配置和问题排查更加困难。

在 Ubuntu 上安装 MIB 文件:

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

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

如果您需要添加厂商特定的 MIB(例如来自 Cisco、Juniper 的 MIB),请将其放置到相应的 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 并设置团体字串。

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

configure terminal

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

snmp-server community <your_community_string> RO

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

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

2. 保存配置。

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

write memory

SNMPv3 示例

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

1. 创建一个 SNMP 组。

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

configure terminal
snmp-server group <your_group> v3 priv

2. 创建一个 SNMP 用户。

添加一个启用了身份验证和 privacy 的 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 字段中输入团体字串。 对于 SNMPv3,系统会提示输入其他凭据(Context nameSecurity nameSecurity level 等)。

3. 关联模板

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

4. 点击 添加 以保存主机。

查看已收集的指标

恭喜!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(例如,IF-MIB::ifHCInOctets.3 表示 3 号端口的入站流量)。
如需获取数字形式的 OID,可以使用:

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

2. 创建 SNMP 监控项:

  • 导航到 Data collection > Hosts,为您的 SNMP 主机点击 Items 标签页,然后点击 Create item
  • Name:输入一个描述性名称(例如“3 号端口入站流量”)。
  • Type:选择 SNMP agent
  • Key:提供一个有意义的键值(例如 cisco.ifHCInOctets.3)。
  • Host interface:确保已选择 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] 用于异步检索一个子树中的值。

  • Preprocessing(如有需要):如果监控项返回的是累积计数器(例如接口流量),请导航到 Preprocessing 标签页,并添加一个诸如“每秒变化量”的预处理步骤来计算速率。

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

在数字 OID 与 MIB 名称之间进行转换

使用 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 可让您实时监控日志更新。

另请参阅: