在Zabbix中通过SNMPv3监控网络设备

本文主要介绍使用SNMPv3协议监控网络设备的特性。 我们将讨论 SNMPv3,我将分享我在 Zabbix 中创建成熟模板的经验,并且我将展示在大型网络中组织分布式警报时可以实现的目标。 SNMP 协议是监控网络设备时的主要协议,而 Zabbix 非常适合监控大量对象并汇总大量传入指标。

关于 SNMPv3 的几句话

让我们从SNMPv3协议的目的及其使用特点开始。 SNMP 的任务是通过向网络设备发送简单的命令(例如,启用和禁用网络接口,或重新启动设备)来监视网络设备和进行基本管理。

SNMPv3协议与其之前版本的主要区别在于经典的安全功能[1-3],即:

  • 身份验证,确定请求是从可信来源收到的;
  • 加密(Encryption),防止传输数据被第三方截获时泄露;
  • 完整性,即保证数据包在传输过程中不被篡改。

SNMPv3意味着使用一种安全模型,其中为给定用户及其所属组设置身份验证策略(在SNMP的早期版本中,从服务器到监控对象的请求仅比较“社区”,一个文本带有以明文形式传输的“密码”的字符串(纯文本))。

SNMPv3引入了安全级别的概念——可接受的安全级别,决定了设备的配置和监控对象的SNMP代理的行为。 安全模型和安全级别的组合决定了处理 SNMP 数据包时使用哪种安全机制 [4]。

该表描述了模型和 SNMPv3 安全级别的组合(我决定保留原始的前三列):

在Zabbix中通过SNMPv3监控网络设备

因此,我们将在使用加密的身份验证模式下使用 SNMPv3。

配置 SNMPv3

监控网络设备需要在监控服务器和被监控对象上配置相同的SNMPv3协议。

让我们从设置 Cisco 网络设备开始,其最低所需配置如下(对于我们使用 CLI 的配置,我简化了名称和密码以避免混淆):

snmp-server group snmpv3group v3 priv read snmpv3name 
snmp-server user snmpv3user snmpv3group v3 auth md5 md5v3v3v3 priv des des56v3v3v3
snmp-server view snmpv3name iso included

第一行 snmp-server group – 定义 SNMPv3 用户组(snmpv3group)、读取模式(read)以及 snmpv3group 组查看监控对象 MIB 树某些分支的访问权限(snmpv3name 则在配置指定组可以访问 MIB 树的哪些分支(snmpv3group 将能够获得访问权限)。

第二行 snmp-server user – 定义用户 snmpv3user、其在 snmpv3group 组中的成员身份,以及 md5 身份验证(md5 的密码是 md5v3v3v3)和 des 加密(des 的密码是 des56v3v3v3)的使用。 当然,最好使用 aes 而不是 des,我这里只是举个例子。 此外,在定义用户时,您可以添加一个访问列表 (ACL),用于管理有权监视该设备的监视服务器的 IP 地址 - 这也是最佳实践,但我不会使我们的示例复杂化。

第三行 snmp-server 视图定义了一个代码名称,指定 snmpv3name MIB 树的分支,以便 snmpv3group 用户组可以查询它们。 ISO没有严格定义单个分支,而是允许snmpv3group用户组访问监控对象的MIB树中的所有对象。

华为设备的类似设置(也在 CLI 中)如下所示:

snmp-agent mib-view included snmpv3name iso
snmp-agent group v3 snmpv3group privacy read-view snmpv3name
snmp-agent usm-user v3 snmpv3user group snmpv3group
snmp-agent usm-user v3 snmpv3user authentication-mode md5 
            md5v3v3v3
snmp-agent usm-user v3 snmpv3user privacy-mode des56
            des56v3v3v3

设置完网络设备后,需要检查监控服务器是否通过SNMPv3协议进行访问,我将使用snmpwalk:

snmpwalk -v 3 -u snmpv3user -l authPriv -A md5v3v3v3 -a md5 -x des -X des56v3v3v3 10.10.10.252

在Zabbix中通过SNMPv3监控网络设备

使用 MIB 文件请求特定 OID 对象的更直观的工具是 snmpget:

在Zabbix中通过SNMPv3监控网络设备

现在让我们继续在 Zabbix 模板中设置 SNMPv3 的典型数据元素。 为了简单性和 MIB 独立性,我使用数字 OID:

在Zabbix中通过SNMPv3监控网络设备

我在关键字段中使用自定义宏,因为它们对于模板中的所有数据元素都是相同的。 如果网络中的所有网络设备具有相同的 SNMPv3 参数,您可以在模板内设置它们;如果不同监控对象的 SNMPv3 参数不同,则可以在网络节点内设置它们:

在Zabbix中通过SNMPv3监控网络设备

请注意,监控系统只有用户名和密码用于身份验证和加密。 监控对象上指定了允许访问的用户组和MIB对象的范围。
现在让我们继续填写模板。

Zabbix 民意调查模板

创建任何调查模板时的一个简单规则是使其尽可能详细:

在Zabbix中通过SNMPv3监控网络设备

我非常注重库存,以便更轻松地与大型网络合作。 稍后会详细介绍这一点,但现在 – 触发器:

在Zabbix中通过SNMPv3监控网络设备

为了便于触发器的可视化,系统宏 {HOST.CONN} 包含在其名称中,以便在仪表板的警报部分中不仅显示设备名称,还显示 IP 地址,尽管这更多的是为了方便而不是必要。 为了确定设备是否不可用,除了通常的回显请求之外,我还使用 SNMP 协议检查主机不可用性,当对象可通过 ICMP 访问但不响应 SNMP 请求时 - 例如,这种情况是可能的,由于防火墙配置不正确或监控对象的 SNMP 设置不正确,导致不同设备上的 IP 地址重复。 如果仅通过 ICMP 使用主机可用性检查,则在调查网络上的事件时,监控数据可能不可用,因此必须监控其接收。

让我们继续检测网络接口——对于网络设备来说,这是最重要的监控功能。 由于网络设备上可能有数百个接口,因此有必要过滤掉不必要的接口,以免使可视化混乱或使数据库混乱。

我使用标准 SNMP 发现功能,具有更多可发现的参数,以实现更灵活的过滤:

discovery[{#IFDESCR},1.3.6.1.2.1.2.2.1.2,{#IFALIAS},1.3.6.1.2.1.31.1.1.1.18,{#IFADMINSTATUS},1.3.6.1.2.1.2.2.1.7]

在Zabbix中通过SNMPv3监控网络设备

通过此发现,您可以按网络接口的类型、自定义描述和管理端口状态来过滤网络接口。 在我的例子中,用于过滤的过滤器和正则表达式如下所示:

在Zabbix中通过SNMPv3监控网络设备

在Zabbix中通过SNMPv3监控网络设备

如果检测到,以下接口将被排除:

  • 手动禁用(adminstatus<>1),感谢 IFADMINSTATUS;
  • 没有文字描述,感谢 IFALIAS;
  • 由于 IFALIAS 的帮助,文本描述中带有*符号;
  • 得益于 IFDESCR(在我的例子中,在正则表达式中 IFALIAS 和 IFDESCR 由一个正则表达式别名进行检查),这些都是服务或技术性的。

使用SNMPv3协议收集数据的模板已基本准备就绪。 我们不会更详细地讨论网络接口数据元素的原型;让我们继续讨论结果。

监测结果

首先,盘点一个小型网络:

在Zabbix中通过SNMPv3监控网络设备

如果您为每个系列的网络设备准备模板,则可以实现易于分析的当前软件汇总数据布局、序列号以及清洁工到达服务器的通知(由于正常运行时间短)。 我的模板列表的摘录如下:

在Zabbix中通过SNMPv3监控网络设备

现在 - 主监控面板,触发器按严重级别分布:

在Zabbix中通过SNMPv3监控网络设备

由于网络中每个设备模型的模板采用集成方法,可以确保在一个监控系统的框架内组织一个用于预测故障和事故的工具(如果有适当的传感器和指标)。 Zabbix非常适合监控网络、服务器和服务基础设施,维护网络设备的任务清楚地展示了它的能力。

使用的来源清单:1. Hucaby D. CCNP 路由和交换 SWITCH 300-115 官方证书指南。 思科出版社,2014 年。 325-329。
2.RFC 3410。 工具.ietf.org/html/rfc3410
3.RFC 3415。 工具.ietf.org/html/rfc3415
4. SNMP 配置指南,Cisco IOS XE 版本 3SE。 章节:SNMP 版本 3。 www.cisco.com/c/en/us/td/docs/ios-xml/ios/snmp/configuration/xe-3se/3850/snmp-xe-3se-3850-book/nm-snmp-snmpv3.html

来源: habr.com

添加评论