本节我们将在一台交换机上执行SNMP discovery操作。
与file系统和网络接口发现不同,监控项并不强制要求包含"snmp.discovery"键值 - 只要监控项属于SNMPagent类型即可满足条件。
配置发现规则的步骤如下:
中的要求填写发现规则表单
所有必填字段均以红色星号标记。
待发现的OID在SNMP OID字段中按以下格式定义:discovery[{#MACRO1}, oid1, {#MACRO2}, oid2, …,]
其中{#MACRO1}、{#MACRO2}...是有效的LLD宏名称,而oid1、oid2...是能为这些宏生成有效值的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}宏设为WAN、LAN1和LAN2,{#IFPHYSADDRESS}宏设为8:0:27:90:7a:75、8:0:27:90:7a:76和8:0:27:2b:af:9e,{#SNMPINDEX}宏设为被发现OID的索引值1、2和3:
[
{
"{#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"
}
]
以下截图展示了如何在监控项原型中使用这些宏:
您可以根据需要create任意数量的监控项原型:
以下截图展示了如何在触发器原型中使用这些宏:
以下截图展示了如何在图形原型中使用这些宏:
我们的发现规则摘要:
当服务器运行时,它将create基于SNMP发现规则返回的值创建真实的监控项、触发器和图形。在主机配置中,它们会带有指向来源发现规则的橙色链接前缀。