1 动态索引

概述

虽然您可能在SNMP OID中找到所需的索引号(例如网络接口的索引号),但有时您不能完全依赖索引号始终保持不变。

索引号可能是动态的——它们可能随时间变化,这会导致您的监控项停止工作。

为避免这种情况,可以定义一个考虑索引号可能变化的OID。

例如,如果您需要检索与Cisco设备上的GigabitEthernet0/1接口对应的索引值以附加到ifInOctets,请使用以下OID:

ifInOctets["index","ifDescr","GigabitEthernet0/1"]

语法

OID使用特殊语法:

<数据OID>["index","<索引基础OID>","<string 搜索目标>"]

参数 描述
OID of data 用于在监控项上检索数据的主OID
index 处理方法。当前支持一种方法:
index - 搜索索引并将其附加到数据OID
base OID of index 将查找此OID以get与string对应的索引值
string to search for 执行查找时用于精确匹配值的string。区分大小写

示例

获取apache进程的memory使用情况

如果使用此OID语法:

HOST-RESOURCES-MIB::hrSWRunPerfMem["index","HOST-RESOURCES-MIB::hrSWRunPath", "/usr/sbin/apache2"]

索引号将在此处查找:

...
       HOST-RESOURCES-MIB::hrSWRunPath.5376 = STRING: "/sbin/getty"
       HOST-RESOURCES-MIB::hrSWRunPath.5377 = STRING: "/sbin/getty"
       HOST-RESOURCES-MIB::hrSWRunPath.5388 = STRING: "/usr/sbin/apache2"
       HOST-RESOURCES-MIB::hrSWRunPath.5389 = STRING: "/sbin/sshd"
       ...

现在我们获得了索引号5388。该索引将被附加到数据OID后 以获取我们需要的值:

主机-RESOURCES-MIB::hrSWRunPerfMem.5388 = integer: 31468 KBytes

索引查询缓存

当请求动态索引监控项时,Zabbix会检索并缓存索引基础OID下的整个SNMP表,即使可能更早找到匹配项。这样做的目的是防止后续另一个监控项引用相同的基础OID时,Zabbix可以直接查询缓存中的索引,而无需再次轮询受监控的主机。请注意每个轮询器进程使用独立的缓存。

在所有后续的值获取操作中,仅验证已找到的索引。如果索引未变化,则请求该值。如果索引发生变化,则重建缓存——每个遇到索引变化的轮询器会再次遍历索引SNMP表。