使用工作台定义 SNMP 陷阱触发器
触发器是一个 deviceWISE 组件,可根据事件的发生情况执行一组动作。接收 SNMP 陷阱消息可以定义为执行 deviceWISE 触发器的事件。
如需定义将在收到 SNMP 陷阱后执行的触发器,请按照下列步骤操作:
- 在工作台左侧窗格中,展开要在其中定义触发器的 deviceWISE 节点。
- 展开 Projects(项目)节点,然后选择将保存要创建的触发器的项目。在此示例中,我们假设用户已创建一个名为'SNMP 陷阱'的 deviceWISE 项目,并且 SNMP 陷阱项目已启动。有关如何创建项目的信息,请参阅 Projects(项目)。
- 在窗格底部选择 New(新建)以显示 Trigger Definition(触发器定义)面板。
-
要定义在收到 SNMP 陷阱时执行的触发器,请按如下所示设置此新触发器的字段:
字段 描述 Name(名称) 输入触发器的名称。 Trigger Event Type(触发器事件类型) 在 Trap Events(陷阱事件)组下,选择 SNMP Trap Receiver(SNMP 陷阱接收器)。 Device Name(设备名称) 选择一个现有的已启动 DeviceWISE SNMP 陷阱接收器设备的名称。 Trap Filter(陷阱过滤器) 输入将导致此触发器执行的特定陷阱类型。下文对此进行了更为详细的解释。 Input Variables(输入变量) 输入您在陷阱消息中找到并希望在触发器中使用的变量。下文对此进行了更为详细的解释。 - 在将动作添加到触发器后,可以选择 Validate(验证)按钮,以验证触发器中以及每个触发器动作内的所有必填字段是否已填写。
- 选择 Save(保存)以保存触发器定义。该触发器将显示在项目的 Trigger(触发器)窗口列表中。
Defining a Trap Filter(定义陷阱过滤器)
Trap Filter(陷阱过滤器)字段可用于将特定陷阱类型分配给特定触发器。有很多方法可以用来定义 deviceWISE SNMP 陷阱收集系统。如果用户对每个陷阱的细节不感兴趣,则可以将一个触发器设计为对收到的每个陷阱执行一组相同的动作。举例来说,用户可以设置一个陷阱收集系统,在该系统中,触发器将仅记录陷阱消息以及将数据库系统接收到陷阱的时间。
另一个例子略为复杂,那就是设置一个触发器,只要 deviceWISE 收到陷阱,该触发器就会得到执行,然后根据收到的陷阱执行不同的动作。如果触发器应根据陷阱类型执行最少量的唯一处理,则可以使用此方法。在 SNMP 网络发出极有限陷阱集的情况下,也可以使用此方法。在 Trap Filter(陷阱过滤器)字段中输入一个星号 (*),可以设计出一个不会区分陷阱类型的触发器。
在其他情况下,可能需要根据所接收陷阱消息类型执行不同动作的系统。例如,收到 ColdStart 陷阱时,可能需要执行的动作与收到 warmStart 陷阱完全不同。同样,可能需要不同的触发器来处理 SNMP v1 陷阱和 SNMP v2 陷阱。此外,您可能希望设计一种系统,该系统能够查找一个特定的 SNMP 陷阱,而忽略任何其他陷阱类型。在这些情况下,可以在 Trap Filter(陷阱过滤器)字段中输入特定的陷阱 OID 或陷阱代码,这样就可以将特定的触发器分配给特定的陷阱类型。
下图的示例中,用户设计了一个触发器,可以在接收到 ColdStart 消息后执行。如果在此节点上运行的 deviceWISE SNMP 接收器设备收到 coldStart 消息,则此触发器将执行。所有其他 SNMP 消息将被忽略。
Defining Trap Input Variables(定义陷阱输入变量)
deviceWISE SNMP 陷阱接收器设备将向触发器传递一组特定于所接收陷阱的输入参数。变量列表如下表所示。
字段 | 数据类型 | 描述 |
---|---|---|
Community(社区) | 32 位字符串 | 消息所属的 SNMP 社区名称。 |
Enterprise(企业) | 32 位字符串 | SNMP v2 构造,OID 中的企业值。 |
Generic Code(通用代码) | 4 位整数 | SNMP v1 构造,陷阱代码。 |
SNMP Version(SNMP 版本) | 4 位整数 | SNMP v1 或 SNMP v2 的值分别为 1 或 2。 |
Source IP Address(源 IP 地址) | 32 位字符串 | 发出陷阱的 SNMP 的 IP 地址。 |
Specific Code(特定代码) | 4 位整数 | 生成陷阱的 SNMP 设备的特定代码。 |
Time Received(接收时间) | 时间戳 | deviceWISE 收到陷阱的日期和时间。 |
Trap Message(陷阱消息) | 2048 位字符串 | 由 deviceWISE 构造的字符串,其中包含陷阱的所有元素。 |
Trap OID(陷阱 OID) | 512 位字符串 | SNMP V2 构造,陷阱 OID |
SNMP 陷阱将包含除上文所示信息之外的其他数据,而 deviceWISE 会自动检索这些信息。SNMP 陷阱中的数据是由 OID 标识的一个或多个名称值对。根据生成的陷阱,名称值对的数量将有所不同。使用 Input Variables Configure(输入变量配置)按钮在触发器中定义这些额外数据值,之后触发器编写器就可以访问这些值。选择此按钮,将显示以下弹出窗口。
Add(添加)按钮将另外弹出一个窗口,从而允许用户创建一个触发事件输入变量,该变量将保存 SNMP 陷阱数据。字段定义如下。
字段 | 描述 |
---|---|
Name(名称) | 输入 deviceWISE 将与陷阱数据项目关联的名称。 |
Type(类型) | 陷阱数据项目的数据类型。 |
Count(计数) | 值中数据元素的数量。当前仅支持值 1。 |
Description(描述) | 输入 deviceWISE 应从陷阱中检索的陷阱数据项目的 OID 名称。 |
在此示例中,触发器编写器知晓陷阱将包含名为 IF-MIB::ifIndex.1 的 OID 中的一个数值。用户希望在收到陷阱后,将此数值写入名为 ifIndex1 的 deviceWISE 变量中。这就是 ifIndex1 输入变量的定义。
选择 Add(添加)按钮,会将此变量添加到输入变量列表中。选择 OK(确定)按钮后,输入变量列表将成为触发器定义的一部分。
访问触发器动作中的输入变量
接收 SNMP 陷阱的事件会发出信号,执行 SNMP 陷阱接收器触发器。当触发器开始执行时,SNMP 陷阱数据将作为输入变量传递到触发器中。触发器由一个或多个动作组成,每个动作都有输入参数和输出参数。每个动作的输入面板中都可以提供默认陷阱输入参数以及触发器编写器定义的其他输入变量。下面是 deviceWISE 设置动作的输入面板。变量下拉列表包含一个名为 Event Variables(事件变量)的组。
请注意,Event Variables(事件变量)组中的项目是默认陷阱输入变量(社区、企业等)和用户定义输入变量 (ifAdminStatus1, ifDescr, ifIndex1) 的完整集合。用户可以将这些变量中的值用作数据库插入、设备写入或子触发器执行等动作的输入。
样例触发器
在以下示例中,用户希望每当 SNMP 设备发出 ColdStart 陷阱时,就在数据库中插入一行。该数据库有两列,均为 VarChar 列,一列保存陷阱消息,另一列保存收到陷阱的时间。
在 Trigger Definition(触发器定义)窗口的 Event(事件)部分中,选择 SNMP Trap Receiver Event Type(SNMP 陷阱接收器事件类型),并将 coldStart 输入到 Trap Filter(陷阱过滤器)字段中。
定义了两个动作。第一个操作将接收时间事件变量从时间戳格式转换为字符串格式。
请注意 Value(值)框中的 EventVariables.Time Received 项目。此变量的值指 deviceWISE 接收 SNMP 陷阱的时间。Output(输出)选项卡上的 Value(值)框未显示,但等于为此称为 timeAsString 的触发器创建的局部变量。第二个动作是数据库插入事务。
该动作将在数据库中插入一行,其内容为'陷阱消息'和第一个动作中创建的时间值。陷阱消息是 deviceWISE 从其接收到的陷阱中构建的。