如何在 DATA ONTAP 上配置 SNMP 监控
适用于
- 集群模式 Data ONTAP 8
- ONTAP 9
回答
注意:有关在较新版本的 ONTAP 中管理 SNMP 的信息,请参见以下内容:用于管理 SNMP 的命令
- 简要介绍简单网络管理协议 (SNMP) 和集群模式 Data ONTAP 中的 SNMP 陷阱。
- 如何使用 SNMP 从 C-Mode 集群系统获取信息?
- 如何在所需客户端上配置 SNMP 陷阱并接收事件?
注意:请参阅以下TR-Guide - SNMP Support in Data ONTAP
本报告的目的是帮助客户和 NetApp 现场团队了解集群模式 Data ONTAP 8.2.x、8.3.x 和 ONTAP 9 中的 SNMP 支持级别。 它还比较了 7-mode 和集群模式的 OID 可用性。它仅提供单个表或组级别的信息。netapp.mib 文件提供有关表或组中支持的各种字段或变量的其他信息。可以使用类似 iReasoning 的 MIB 浏览器工具轻松解释 netapp.mib 文件的内容。
SNMP:
SNMP 是一个广泛使用的网络监视和控制协议。数据从 SNMP 代理传递到用于监视网络的工作站控制台,SNMP 代理是每个网络设备(集线器、路由器或网桥)中报告活动的硬件和/或软件进程。代理返回管理信息库(MIB)中包含的信息,该管理信息库是一个数据结构,用于定义可从设备获得的内容以及可控制的内容(关闭或打开)。SNMP 起源于 UNIX 社区,已在所有主要平台上广泛使用。
MIB 描述了设备子系统的管理数据的结构;它们使用包含对象标识符(OID)的分层命名空间。每个 OID 标识一个可以通过 SNMP 读取或设置的变量。
注意: NetApp 不支持 snmp-set 操作。此外,SNMP-support 仅适用于群集范围,不会 vserverized。但是,这将在 8.1 之后的版本中完成,并且与 7G vfilers 不同,因为 snmp-support 从未 vfilerized。
启用/禁用 SNMP:
可以使用 CLI/ZAPI 在集群上启用和禁用 SNMP 协议:
- 使用 CLI 在集群上启用 SNMP - 从 ngsh,运行
options-option-name snmp.enable-option-valueon - 使用 CLI 在集群上禁用 SNMP - 从 ngsh,运行
options-option-name snmp.enable-option-valueoff - 使用 ZAPI 在集群上启用 SNMP - 使用 ontapi 或 zexplore.exe,运行
API snmp-enable - 使用 ZAPI 在集群上禁用 SNMP - 使用 ontapi 或 zexplore.exe,运行
API snmp-disable
示例:$> ontapi snmp-[en|dis]able
注意: SNMP 协议只能在集群范围内启用或禁用。在 Data ONTAP 8.1 C-Mode 中,无法对集群中的单个节点进行 SNMP。
类似 7G 的 SNMP 用户界面:
集群模式 Data ONTAP 利用一组 UI(CLI 和 ZAPI)来配置集群上的 SNMP 详细信息。下面简要介绍了有助于在集群系统上配置 SNMP 的每个 CLI:
snmp contact:查看或修改联系人详细信息snmp location:查看或修改位置详细信息snmp init:启用或禁用从集群发送的陷阱 [1-> enabled, 0->disabled]snmp authtrap:启用或禁用 authenticationFailure 陷阱 [1->enabled,0->disabled]snmp community add|delete:要查看、添加或删除集群中的社区,将存在默认的 'public' 社区,即 ro。- 注意: 仅支持只读社区。此外,为了删除第一个 snmp 社区条目,用户需要删除用于通知目的的 traphost。
snmp traphost add|delete:要查看、添加或删除集群中的 traphost,集群中发生的所有陷阱(或事件)将在主机运行时发送给这些主机snmptrapdoptions snmp.enable:启用或禁用集群上的 snmp 协议 [on=>enabled, off=>disabled]
以下是有助于在集群模式 Data ONTAP 系统上配置 SNMP 的每个 ZAPI 的简介:
snmp-enable:在集群上启用 snmp 协议snmp-disable:在集群上禁用 snmp 协议snmp-trap-enable:启用向 traphosts 发送陷阱snmp-trap-disable:禁用向 traphosts 发送陷阱snmp-community-add:添加 snmp 社区。Data ONTAP 8.1 C-Mode 中仅支持 ro 社区snmp-community-delete:删除现有社区snmp-traphost-add:添加 traphostsnmp-traphost-delete:删除现有 traphostsnmp-status:提供集群上 snmp 配置的详细信息(例如位置、联系人、陷阱、traphosts、社区详细信息)snmp-get:当 OID 作为 API 输入时读取对象值(类似于 snmpget unix 实用程序)snmp-get-next:读取作为 OID 给出的对象旁边的值(类似于 snmpgetnext unix 实用程序)Add/modify/view contact:可以使用 snmp CLI 添加或修改集群的联系人和位置详细信息。没有相应的 API 用于修改联系人或位置详细信息。但是,可以使用 snmp[walk|get|getnext] (或) snmp-status 读取集群详细信息(无法使用 snmp 或 ZAPI 修改)
示例:
使用 CLI 添加/修改:
使用 ZAPI 调用读取:
$> ontapi -x snmp-status
使用 snmp 调用读取:
$> snmpwalk -c public -v [1|2c]
如何在 C-Mode 系统上配置 snmpv3:
- 使用 security login create CLI 在集群上创建 snmpv3 用户。
- 输入 EngineID(使用本地 EngineID,默认采用)。
- 输入身份验证协议并输入指定 snmpv3 用户的密码。
- 通过指定 -v 3 并提供用户凭据,对 snmpv3 用户运行
snmp[walk|get|getnext]。
PDF 中的附录部分提供了如何创建 snmpv3 用户并运行 SNMP utilities 到用户的示例。
SNMP 陷阱:
从代理到管理器的异步通知:这包括当前 sysUpTime 值、标识陷阱类型的 OID 和可选变量绑定。陷阱的目标寻址以特定于应用程序的方式确定,通常通过 MIB 中的陷阱配置变量来确定。陷阱消息的格式在 SNMPv2 中更改,PDU 重命名为 SNMPv2-Trap。
7-Mode 和 C-Mode Data ONTAP 中的 SNMP 及其陷阱:
标准 SNMP 陷阱:
根据 RFC 1215 ,有 5 个标准 SNMP 陷阱:
- linkDown - 此陷阱是在关闭活动物理端口时生成的,该端口处于启用状态(ifAdminStatus 应从 up 更改为 down/ 陷阱消息中不包含 ifindex 编号信息。)
- linkUp - 当您启用已关闭的物理端口时,将生成此陷阱(ifAdminStatus 应从 down 更改为 up/ 陷阱消息中不包含 ifindex 编号信息。)
- warmStart - 当您执行正常重新启动时会生成 warmstart 陷阱
- coldStart - coldStart 陷阱表示发送协议实体正在重新初始化自身,从而可能更改代理的配置或协议实体实现
- authenticationFailure - 当用户尝试使用不正确的权限登录到系统时会生成 authenticationFailure 陷阱
NetApp 内置 SNMP 陷阱:
NetApp 内置大量陷阱,方便 SNMP 用户使用。该文件 /mroot/etc/mib/netapp.mib 包含内置陷阱的列表。每个陷阱都有唯一的标识符或陷阱代码。内置陷阱的示例是 volumeOnline,其陷阱代码为 276。以下信息来自 netapp.mib 文件。
OID 后跟 NOTIFICATION-TYPE 标记,这表明它是一个陷阱,并与描述和陷阱代码相关联,在本例中为 276。
volumeOnline NOTIFICATION-TYPE
OBJECTS {productTrapData, productSerialNum}
STATUS current
DESCRIPTION Volume is online now. The string sent with trap specifies name of volume which is online now.
::= { netapp 0 276 }
用户定义的 SNMP 陷阱:
这些陷阱可以根据用户要求进行配置。即使 NetApp 有一些内置陷阱,用户仍可能出于其他原因想要生成事件。7-Mode 具有支持用户定义陷阱的基础架构,但 Data ONTAP 8.1 的 C-Mode 基础架构不支持用户定义陷阱。这些是计划的用户界面(在 Data ONTAP 8.1 之后),将有助于配置用户定义的陷阱:
- snmp-trap-list
- snmp-trap-set
- snmp-trap-delete
- snmp-trap-reset
- snmp-trap-load
与 EMS 的关联:
陷阱与 EMS 事件相关联。也可以使用事件 CLI 生成 SNMP 事件。
添加到 SNMP traphost 列表的所有 traphost 都将复制到 traphost 条目下名为事件目标表的另一个表中。
test-01::*> system snmp traphost show
TRAPHOST1
TRAPHOST2
test-01::*> event destination show -name traphost
Name: traphost
Mail Destination: -
SNMP Destination: TRAPHOST1
TRAPHOST2
Syslog Destination: -
Syslog Facility: -
SNMP Trap Community: public
Hide Parameter Values?: false
可以使用 event * CLI 执行以下操作:
可以使用事件目标创建 CLI 添加新的 SNMP 主机。当主机添加到默认 traphost 列表时,它会在 SNMP traphost 列表中复制,集群中触发的所有事件都会发送到此主机。
csiqa-3170-6a1365754940::*> snmp traphost
-
csiqa-3170-6a1365754940::*> event destination show -name traphost
Name: traphost
Mail Destination: -
SNMP Destination: -
Syslog Destination: -
Syslog Facility: -
SNMP Trap Community: qwerty
Hide Parameter Values?: false
csiqa-3170-6a1365754940::*> snmp community
csiqa-3170-6a1365754940
ro qwerty
csiqa-3170-6a1365754940::*> event destination modify -name traphost -hide-parameters false -snmp 10.229.88.174 -snmp-community qwerty
csiqa-3170-6a1365754940::*> event destination show -name traphost
Name: traphost
Mail Destination: -
SNMP Destination: csiqa-labopt-rh5-003.gdl.englab.netapp.com
Syslog Destination: -
Syslog Facility: -
SNMP Trap Community: qwerty
Hide Parameter Values?: false
csiqa-3170-6a1365754940::*> snmp traphost
csiqa-labopt-rh5-003.gdl.englab.netapp.com (csiqa-labopt-rh5-003.gdl.englab.netapp.com) <10.229.88.174>
csiqa-3170-6a1365754940::*>
但是,如果用户希望将主机配置为仅接收特定事件,则可以使用事件路由 CLI 将任何事件路由到该目的地。要列出事件,请执行以下操作:
csiqa-3070-591287556400::*> event route show
Freq Time
Message Severity Destinations Threshd Threshd
-------------------------------- -------------- -------------- ------- -------
EthrOutput.FamilyType.Err ERROR - 0 0
LUN.clone_snapshot_destroyed NOTICE - 0 0
LUN.destroy INFORMATIONAL - 0 0
LUN.space_reservation_not_honored
NOTICE - 0 0
LUN.volume_processing_failed_no_space
ERROR - 0 0
Nblade.DidNotInitialize ERROR - 0 0
Nblade.JunctionRootLookup WARNING - 0 0
Nblade.Nfs4IllegalDirentName ERROR - 0 0
Nblade.NfsRaidError ERROR - 0 0
将相应事件映射到所需的目标。
并非所有事件都启用了 SNMP 陷阱。要了解与 SNMP 陷阱相关联的所有陷阱,请使用以下 CLI:
csiqa-3070-591287556400::*> event route show -snmp-support true
Freq Time
Message Severity Destinations Threshd Threshd
-------------------------------- -------------- -------------- ------- -------
app.log.alert ALERT - 0 0
app.log.crit CRITICAL - 0 0
app.log.debug DEBUG - 0 0
app.log.emerg EMERGENCY - 0 0
app.log.err ERROR - 0 0
app.log.info INFORMATIONAL - 0 0
app.log.notice NOTICE - 0 0
app.log.warn WARNING - 0 0
asup.general.create ERROR - 0 0
asup.general.drop ERROR - 0 0
asup.general.drop.enqueue INFORMATIONAL - 0 0
SNMP 陷阱 - 如何配置陷阱并生成事件
使用 snmp traphost CLI 添加 traphost:
$> snmp traphost add
-OR-
$> snmp traphost add
注意: 确保在集群上配置 dns 以解析 traphost 名称。
确保在文件管理器上启用 SNMP 协议:
::> options -option-name snmp.enable on在集群上启用 SNMP 陷阱。这可以通过以下任一方式完成:
运行以下命令:
Cluster::> snmp init 1
-OR-
运行 ZAPI:
$> ontapisnmp-trap-enable- 触发和监控事件。
traps.dat 信息 - 参考:Burt # 460968
traps.dat 文件尤其适用于用户定义的陷阱。UDT 支持尚未在 Data ONTAP C-Mode 中提供(截至 Data ONTAP 8.1.1)
traps.dat 文件末尾有额外的 1,以帮助区分表内的 OID 和以 0 结尾的 OID(表外)。不应对表中的 OID 进行陷阱,因此额外的混淆实际上有助于减少无效的用户定义陷阱
C-Mode OID 信息 - 参考:Burt # 460968
在 netapp.mib 文件中看到的 OID 是密钥,而不是实际的绝对 OID 值。解决这个问题的最佳方法是通过丢弃最后一位数字来实际执行 snmpwalk:
示例:
- [
rakeshc@cyclnb01 ~/p4]$ snmpwalk -v 1 -c public 10.10.10.10 .1.3.6.1.4.1.789.1.5.11.1.2 SNMPv2-SMI::enterprises.789.1.5.11.1.2.1026 = STRING: "aggr0"SNMPv2-SMI::enterprises.789.1.5.11.1.2.1030 = STRING: "aggr0_br3040n2_rtp"SNMPv2-SMI::enterprises.789.1.5.11.1.2.1034 = STRING: "n1_aggr1"SNMPv2-SMI::enterprises.789.1.5.11.1.2.1038 = STRING: "n2_aggr1"SNMPv2-SMI::enterprises.789.1.5.11.1.2.1050 = STRING: "coral_aggr"
它给出上述 5 个不同的 OID(1026、1030、1034、1038、1050),然后执行以下操作:
[rakeshc@cyclnb01 ~/p4]$ snmpwalk -v 1 -c public 10.61.76.140 .1.3.6.1.4.1.789.1.5.11.1.2.1026SNMPv2-SMI::enterprises.789.1.5.11.1.2.1026 = STRING: "aggr0"
如何生成不同类型的陷阱/事件的详细过程如下面的附录部分所示:
启用 SNMP 并运行 snmp 实用程序:
在集群上运行 snmpwalk/snmpget/snpgetnext etc..,以及执行此操作的配置步骤
DOT_cluster::*> options snmp.enable
DOT_cluster
snmp.enable on
DOT_cluster::*> network interface show -vserver DOT_cluster
Logical Status Network Current Current Is
Vserver Interface Admin/Oper Address/Mask Node Port Home
----------- ---------- ---------- ------------------ ------------- ------- ----
DOT_cluster
cluster_mgmt up/up 10.238.44.38/18 node1 e0c true
DOT_cluster::*>
bash-3.2$ snmpwalk -c public -v 1 10.238.44.38 .1.3.6.1.4.1.789.1.5.11.1.2
SNMPv2-SMI::enterprises.789.1.5.11.1.2.1026 = STRING: "aggr0"
SNMPv2-SMI::enterprises.789.1.5.11.1.2.1030 = STRING: "aggr0_partnernode"
SNMPv2-SMI::enterprises.789.1.5.11.1.2.1034 = STRING: "aggr_node1"
bash-3.2$
在集群上禁用 snmpwalk/snmpget/snpgetnext etc..,以及执行此操作的配置步骤
DOT_cluster::*> option snmp.enable off
(options)
1 entry was modified.
DOT_cluster::*> net int show -vserver DOT_cluster
(network interface show)
Logical Status Network Current Current Is
Vserver Interface Admin/Oper Address/Mask Node Port Home
----------- ---------- ---------- ------------------ ------------- ------- ----
DOT_cluster
cluster_mgmt up/up 10.238.44.38/18 node1 e0c true
DOT_cluster::*>
bash-3.2$ snmpwalk -c public -v 1 10.238.44.38 .1.3.6.1.4.1.789.1.5.11.1.2
Timeout: No Response from 10.238.44.38
bash-3.2$ snmpget -c public -v 1 10.238.44.38 .1.3.6.1.4.1.789.1.5.11.1.2.1026
Timeout: No Response from 10.238.44.38.
bash-3.2$ snmpgetnext -c public -v 1 10.238.44.38 .1.3.6.1.4.1.789.1.5.11.1.2.1026
Timeout: No Response from 10.238.44.38.
bash-3.2$
与 snmpv1|v2c 相比,snmpv3 协议是一种安全协议;为 snmpv3 用户配置并运行 snmp 工具需要以下步骤
DOT_cluster::*> security login create -username snmpv3user -application snmp -authmethod usm
Enter the authoritative entity's EngineID [local EngineID]:
Which authentication protocol do you want to choose (none, md5, sha) [none]: sha
Enter the authentication protocol password (minimum 8 characters long):
Enter the authentication protocol password again:
Which privacy protocol do you want to choose (none, des) [none]: des
Enter privacy protocol password (minimum 8 characters long):
Enter privacy protocol password again:
DOT_cluster::*>
bash-3.2$ snmpwalk -v 3 -u snmpv3user -a SHA -A testing123! -l authPriv -x DES -X testing123! 10.238.44.38 .1.3.6.1.4.1.789.1.5.11.1.2
SNMPv2-SMI::enterprises.789.1.5.11.1.2.1026 = STRING: "aggr0"
SNMPv2-SMI::enterprises.789.1.5.11.1.2.1030 = STRING: "aggr0_partnernode"
SNMPv2-SMI::enterprises.789.1.5.11.1.2.1034 = STRING: "aggr_node1"
bash-3.2$
NetApp 内置陷阱在 netapp.mib 文件中定义;以下步骤显示如何在 traphost 或 snmp 目标上生成它们
DOT_cluster::*> snmp traphost
-
DOT_cluster::*> snmp traphost add 10.229.88.174
DOT_cluster::*> snmp traphost
10.229.88.174 (10.229.88.174) <10.229.88.174>
DOT_cluster::*> snmp init
1
DOT_cluster::*> options snmp.enable
DOT_cluster
snmp.enable on
DOT_cluster::*>
DOT_cluster::*> volume offline -volume testvol -vserver vs0
Volume "vs0:testvol" is now offline.
Volume modify successful on volume: testvol
DOT_cluster::*> volume online -volume testvol -vserver vs0
Volume "vs0:testvol" is now online.
Volume modify successful on volume: testvol
DOT_cluster::*>
2013-05-03 05:30:00 prakashl-vsim1.sim.eng.btc.netapp.in [10.238.44.36] (via UDP: [10.238.44.36]:161) TRAP, SNMP v1, community public
SNMPv2-SMI::enterprises.789 Enterprise Specific Trap (275) Uptime: 1:10:12.70
SNMPv2-SMI::enterprises.789.1.1.12.0 = STRING: "Volume testvol@vserver:17309c4f-b3d6-11e2-a9a8-123478563412 is offline. " SNMPv2-SMI::enterprises.789.1.1.9.0 = STRING: "1-80-000011"
2013-05-03 05:31:55 prakashl-vsim1.sim.eng.btc.netapp.in [10.238.44.36] (via UDP: [10.238.44.36]:161) TRAP, SNMP v1, community public
SNMPv2-SMI::enterprises.789 Enterprise Specific Trap (276) Uptime: 1:12:12.07
SNMPv2-SMI::enterprises.789.1.1.12.0 = STRING: "Volume testvol@vserver:17309c4f-b3d6-11e2-a9a8-123478563412 is online. " SNMPv2-SMI::enterprises.789.1.1.9.0 = STRING: "1-80-000011"
使用事件生成 CLI 生成陷阱:
也可以使用事件生成 CLI 来生成陷阱。
DOT_cluster::*> event destination show
Hide
Name Mail Dest. SNMP Dest. Syslog Dest. Params
---------------- ----------------- ------------------ ------------------ ------
allevents - - - false
asup - - - false
criticals - - - false
pager - - - false
traphost - 10.229.88.174
- false
5 entries were displayed.
DOT_cluster::*> snmp traphost
10.229.88.174 (10.229.88.174) <10.229.88.174>
DOT_cluster::*> event generate -messagename wafl.dir.size.warning -values TEST_EVENT
DOT_cluster::*>
2013-05-03 05:33:01 prakashl-vsim1.sim.eng.btc.netapp.in [10.238.44.36] (via UDP: [10.238.44.36]:161) TRAP, SNMP v1, community public
SNMPv2-SMI::enterprises.789 Enterprise Specific Trap (485) Uptime: 1:13:17.57
SNMPv2-SMI::enterprises.789.1.1.12.0 = STRING: "Directory TEST_EVENT is approaching the maxdirsize limit. " SNMPv2-SMI::enterprises.789.1.1.9.0 = STRING: "1-80-000011"
追加信息
在此处添加文字。