接收 SNMP 事件
SNMP 事件提供程序支持 SNMPv1 陷阱和 SNMPv2 通知。
支持以下三种类型的 SNMPv1 陷阱和 SNMPv2 通知:
泛型
泛型陷阱和通知对应于已命名事件,如向上链接和冷启动。 泛型陷阱和通知(如 SnmpLinkUpNotification 和 SnmpWarmStartExtendedNotification )由类表示,它们在类名中包含陷阱的名称。 这些类是 SnmpNotification 和 SnmpExtendedNotification 的子类。
特定于企业
特定于企业的陷阱和通知对应于由 WMI 类表示的事件,该类不是 SnmpNotification 和 SnmpExtendedNotification 的子类。 若要支持特定于企业的陷阱和通知,使用者必须使用 SNMP MIB 编译器编译 MIB 定义来定义类。
非特定于企业
非特定于企业的陷阱和通知不对应于任何泛型事件类型或特定于企业的事件类型。 非特定于企业的陷阱和通知尚未将其 MIB 定义编译到 SMIR 中。 它们由派生自 SnmpNotification 和 SnmpExtendedNotification 的 SnmpNotification、SnmpV2Notification、SnmpV1ExtendedNotification 和 SnmpV2ExtendedNotification 类表示。
注意
若要详细了解如何安装提供程序,请参阅设置 WMI SNMP 环境。
本主题讨论以下部分:
接收泛型 SNMP 事件
SEEP 和 SREP 支持所有类型的泛型 SNMPv1 陷阱和 SNMPv2 通知。 泛型 SNMP 事件由 SnmpNotification 和 SnmpExtendedNotification 类的子类表示。
每个事件类型由一个 SEEP 类和一个 SREP 类表示。 SEEP 类派生自 SnmpNotification;SREP 类派生自 SnmpExtendedNotification。 因为事件提供程序在呈现 SNMP 事件数据时使用不同的机制,所以它们需要不同的类。
SEEP 将 SNMP 事件数据直接转换为 WMI 类属性,而 SREP 不会转换。 SREP 为使用 WMI 属性所需的解释添加间接级别。 SREP SnmpExtendedNotification 子类的属性是 SNMP 类的实例;SEEP SnmpNotification 子类的属性是整数和字符串。
下表列出了泛型 SNMP 事件的类型和关联的事件类。
SNMP 事件 | SEEP 类 | SREP 类 |
---|---|---|
身份验证失败 | SnmpAuthenticationFailureNotification | SnmpAuthenticationFailureExtendedNotification |
外部网关协议 (EGP) 邻居丢失 | SnmpEGPNeighborLossNotification | SnmpEGPNeighborLossExtendedNotification |
冷启动 | SnmpColdStartNotification | SnmpColdStartExtendedNotification |
热启动 | SnmpWarmStartNotification | SnmpWarmStartExtendedNotification |
向上链接 | SnmpLinkUpNotification | SnmpLinkUpExtendedNotification |
向下链接 | SnmpLinkDownNotification | SnmpLinkDownExtendedNotification |
例如,SnmpLinkUpNotification 和 SnmpLinkUpExtendedNotification 类描述向上链接事件。 以上两个类都包含 ifIndex、ifAdminStatus 和 ifOperStatus 属性,但其类型截然不同。 SnmpLinkUpNotification 类中属性的类型为 SINT32 和 STRING。 SnmpLinkUpExtendedNotification 类中的属性是嵌入对象类型 IETF_SNMP_RFC1213_MIB_ifTable。
接收特定于企业的事件
SEEP 和 SREP 支持已编译到 SMIR 中的任何特定于企业的陷阱和通知。
以下过程介绍如何接收特定于企业的事件。
若要接收特定于企业的事件
从负责生成事件的设备编译 MIB 定义。
可以使用 SNMP MIB 编译器编译 MIB 定义。 有关详细信息,请参阅设置 WMI SNMP 环境。
确定要映射到事件的类类型。
为特定于企业的事件编译 MIB 定义时,可以确定编译器生成的类类型。 具体而言,可以指示编译器创建以下选项之一:
- 来自定义的 SnmpNotification 子类。
- 来自定义的 SnmpExtendedNotification 子类。
- 来自定义的 SnmpNotification 和 SnmpExtendedNotification 子类。
有关详细信息,请参阅编译 MOF 文件。
如果 SNMP 事件提供程序收到没有类的特定陷阱或通知,提供程序将生成非特定于企业的事件。 有关详细信息,请参阅接收非特定于企业的事件。
接收非特定于企业的事件
非特定于企业的事件是不从 SNMPv1 陷阱或 SNMPv2 通知映射到 SnmpNotification 或 SnmpExtendedNotification 的任何子类或表示企业事件的任何类的事件。
对于非特定事件,SEEP 使用 SNMPV1Notification 或 SNMPV2Notification 类,而 SREP 使用 SNMPv1ExtendedNotification 和 SNMPV2ExtendedNotification 类。
所有四个非特定于企业的类都派生自 SnmpNotification 或 SnmpExtendedNotification 类,并且具有相同格式。 这两个类都有单个属性 VarBindList。 VarBindList 是 SnmpVarBind 类的实例数组。 SnmpVarBind 是 SNMP 事件提供程序支持的基类,用于表示 SNMP 变量绑定的实例。 下表列出了 SnmpVarBind 的属性。
属性 | 说明 |
---|---|
编码 | 指示 Value 属性中抽象语法表示法一 (ASN.1) 类型的字符串。 |
ObjectIdentifier | 标识 Value 属性中变量的字符串。 |
值 | 八进制数中的原始数据。 |
在 SnmpV1Notification 和 SnmpV2Notification 类中,除了前两个变量绑定 TimeStamp 和 SnmpTrapOID,SNMP 事件中的变量绑定顺序已保留。 已删除这些绑定,并将其存储在 SnmpNotification 或 SnmpExtendedNotification 父类的 TimeStamp 和 Identification 属性中。