5 自动发现 SNMP OIDs (旧版)

概述

在本章节中,我们将对交换机执行一个SNMP 发现

监控项键值

与文件系统和网络接口发现不同,监控项不一定必须使用 "snmp.discovery" 键值——只要监控项类型为 SNMP agent 即可。

要配置发现规则,请执行以下操作:

  • 前往:数据采集模板
  • 在相应模板所在行中点击 发现

  • 点击屏幕右上角的 创建发现规则
  • 按如下方截图所示填写发现规则表单中的必填信息

所有必填输入字段都以红色星号标记。

要发现的 OID 在 SNMP OID 字段中按以下格式定义:discovery[{#MACRO1}, oid1, {#MACRO2}, oid2, …,]

其中 {#MACRO1}{#MACRO2} … 是有效的 lld 宏名称,oid1oid2... 是能够为这些宏生成有意义值的 OID。内置宏 {#SNMPINDEX} 包含已发现 OID 的索引,并会应用到发现出的实体上。发现出的实体按 {#SNMPINDEX} 宏值分组。

下面是一个示例,其中在交换机上执行了几次 snmpwalk:

$ snmpwalk -v 2c -c public 192.168.1.1 IF-MIB::ifDescr
IF-MIB::ifDescr.1 = STRING: WAN
IF-MIB::ifDescr.2 = STRING: LAN1
IF-MIB::ifDescr.3 = STRING: LAN2

$ snmpwalk -v 2c -c public 192.168.1.1 IF-MIB::ifPhysAddress
IF-MIB::ifPhysAddress.1 = STRING: 8:0:27:90:7a:75
IF-MIB::ifPhysAddress.2 = STRING: 8:0:27:90:7a:76
IF-MIB::ifPhysAddress.3 = STRING: 8:0:27:2b:af:9e

并且 SNMP OID 设置为: discovery[{#IFDESCR}, ifDescr, {#IFPHYSADDRESS}, ifPhysAddress]

现在,此规则将发现实体,其中 {#IFDESCR} 宏分别设置为 WANLAN1LAN2,{#IFPHYSADDRESS} 宏分别设置为 8:0:27:90:7a:758:0:27:90:7a:768:0:27:2b:af:9e,{#SNMPINDEX} 宏则设置为发现到的 OID 索引 123

[
    {
        "{#SNMPINDEX}": "1",
        "{#IFDESCR}": "WAN",
        "{#IFPHYSADDRESS}": "8:0:27:90:7a:75"
    },
    {
        "{#SNMPINDEX}": "2",
        "{#IFDESCR}": "LAN1",
        "{#IFPHYSADDRESS}": "8:0:27:90:7a:76"
    },
    {
        "{#SNMPINDEX}": "3",
        "{#IFDESCR}": "LAN2",
        "{#IFPHYSADDRESS}": "8:0:27:2b:af:9e"
    }
]

如果某个实体没有指定的 OID,则该实体中对应的宏将被省略。例如,如果我们有以下数据:

ifDescr.1 "Interface #1"
ifDescr.2 "Interface #2"
ifDescr.4 "Interface #4"

ifAlias.1 "eth0"
ifAlias.2 "eth1"
ifAlias.3 "eth2"
ifAlias.5 "eth4"

那么在这种情况下,SNMP 发现 discovery[{#IFDESCR}, ifDescr, {#IFALIAS}, ifAlias] 将返回以下结构:

[
    {
        "{#SNMPINDEX}": 1,
        "{#IFDESCR}": "Interface #1",
        "{#IFALIAS}": "eth0"
    },
    {
        "{#SNMPINDEX}": 2,
        "{#IFDESCR}": "Interface #2",
        "{#IFALIAS}": "eth1"
    },
    {
        "{#SNMPINDEX}": 3,
        "{#IFALIAS}": "eth2"
    },
    {
        "{#SNMPINDEX}": 4,
        "{#IFDESCR}": "Interface #4"
    },
    {
        "{#SNMPINDEX}": 5,
        "{#IFALIAS}": "eth4"
    }
]

监控项原型

以下截图说明了我们如何在监控项原型中使用这些宏:

您可以根据需要创建任意数量的监控项原型:

触发器原型

以下截图说明了我们如何在触发器原型中使用这些宏:

图形原型

以下截图说明了我们如何在图形原型中使用这些宏:

我们的发现规则摘要:

已发现的实体

当服务器运行时,它将根据 SNMP 发现规则返回的值创建实际的监控项、触发器和图形。在主机配置中,它们前面会带有一个橙色链接,指向其来源的发现规则。