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

本文讨论了使用SNMPv3协议监视网络设备的功能。我们将讨论SNMPv3,我将分享在Zabbix中创建完整模板的经验,并展示在大型网络上组织分布式警报时可以实现的目标。SNMP是监视网络设备的主要协议,而Zabbix在监视大量对象和汇总大量传入指标方面非常出色。

关于SNMPv3的几句话


让我们从SNMPv3的使用及其使用功能开始。SNMP任务通过向网络设备发送简单命令(例如,打开和关闭网络接口或重新启动设备)来监视网络设备和基本管理。

SNMPv3与以前的版本之间的主要区别是经典的安全功能[1-3],即:

  • 身份验证,确定从可信来源接收到请求;
  • 加密,以防止被第三方拦截时泄露所传输的数据;
  • 完整性,即保证数据包在传输期间不会被篡改。

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

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

下表描述了模型和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组的第一行-定义SNMPv3用户组(snmpv3group),读取模式(read)以及snmpv3group组的访问权限,以查看监视对象的MIB树的某些分支(以下配置中的snmpv3name确定该组MIB树的哪些分支) snmpv3group将可以访问)。

第二行是snmp-server用户-定义用户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



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



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



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



请注意,监视系统仅具有用于身份验证和加密的用户名和密码。 。在监视对象上设置用户组和允许访问的MIB对象的区域。
现在让我们继续填写模板。

Zabbix调查模板


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



我非常注意清单,以便使用大型网络更加方便。稍后,但现在-触发:



为了简化触发器的可视化,它们的名称包含系统宏{HOST.CONN},因此在警报部分的仪表板上不仅显示设备名称,而且还显示IP地址,尽管这是不必要的便利。为了确定设备的不可用性,除了通常的回显请求之外,当对象可以通过ICMP访问但不响应SNMP请求时,我还使用SNMP主机不可用性检查-这种情况是可能的,例如,在不同设备上复制IP地址时,由于防火墙配置不正确,或监视对象上的SNMP设置不正确。如果仅通过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]



通过此检测,您可以按网络接口的类型,用户描述“描述”和端口的管理状态来过滤它们。在我的情况下,用于过滤的过滤器和正则表达式如下所示:





检测到后,将排除以下接口:

  • 借助IFADMINSTATUS,手动禁用(adminstatus <> 1);
  • 感谢IFALIAS,没有文字说明;
  • 感谢IFALIAS,文字说明中带有*;
  • 感谢IFDESCR(在我的情况下,在正则表达式中IFALIAS和IFDESCR由一个别名正则表达式检查)。

SNMPv3数据收集模板已准备就绪。我们将不讨论网络接口数据元素的原型,而是继续研究结果。

监测结果


首先-小型网络清单:



如果为每个系列的网络设备准备了模板-则可以实现一个方便的布局来分析最新软件的摘要数据,序列号以及清洁女工到达服务器的通知(由于正常运行时间较小)。我的模板清单摘录如下:



现在-主仪表板,按严重性级别分布触发器:



由于采用了针对网络中每种设备模型的模板的集成方法,因此可以实现在一个监视系统的框架内将组织一个工具来预测故障和事故(如果有合适的传感器和度量标准)。Zabbix非常适合监视网络,服务器,服务基础架构,并且为网络设备提供服务的任务清楚地展示了其功能。

使用的来源清单:
1. Hucaby D. CCNP Routing and Switching SWITCH 300-115 Official Cert Guide. Cisco Press, 2014. pp. 325-329.
2. RFC 3410. tools.ietf.org/html/rfc3410
3. RFC 3415. tools.ietf.org/html/rfc3415
4. SNMP Configuration Guide, Cisco IOS XE Release 3SE. Chapter: SNMP Version 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

All Articles