是否有正确/更好的方法来确定用于 SNMP 监控的正确 OID?
我能够直接从设备下载 MIB,但在从数百个 OID 列表中找到正确的 OID 时我迷失了方向。我遇到的所有论坛都有不同的模型 OID,或者只是说“使用 OID,你会很好”,没有细节......
采取的步骤
- 从设备下载 MIB
- 已验证我可以 ping 设备
- 已验证我可以在设备上运行 snmpwalk(注意我不熟悉 snmpwalk 的所有功能和用法)
是否有正确/更好的方法来确定用于 SNMP 监控的正确 OID?
我能够直接从设备下载 MIB,但在从数百个 OID 列表中找到正确的 OID 时我迷失了方向。我遇到的所有论坛都有不同的模型 OID,或者只是说“使用 OID,你会很好”,没有细节......
根据我的经验,很遗憾没有,我必须获取 MIB 并尝试在其中找到我需要查询的正确内容。(我使用了一个简单的 mib 浏览器)
对于您找到的 OID,温度太高,请确保它不是在触发时将其设置为 on/1 的布尔值,这可以解释为什么设备在正常温度下运行时您什么也没有读取。
遗憾的是,OID 的使用和文档在网上被低估并且不受欢迎。我曾经在一个监控工具中为未知设备创建监控模板,我被视为一个黑魔法用户。
我能说的唯一提示是注意返回值,有些是字符串,即使它们写成数字,还有一些只是整数。
snmptranslate
虽然 MIB 浏览器确实可以提供帮助,但您可以使用 NET-SNMP命令进行大量解析。有很多选项,因此请参阅其手册页,但这里有几个示例。假设我已为 Synology 设备下载 MIB 并想要对其进行监控。与仅读取原始 MIB 文件相比,我可以使用 snmptranslate 以更用户友好的方式查看 MIB。
首先,我将查看我下载的 SYNOLOGY-SYSTEM-MIB.txt。
让我们找出 MIB 的实际名称。有时它与 MIB 文件的名称相同,但并非总是如此。语句
DEFINITIONS
用于定义 MIB 的名称。所以现在我知道 MIB 被称为
SYNOLOGY-SYSTEM-MIB
.接下来,我将在里面查找其中定义的顶部 OID:
最后一行是有趣的,特别是
synoSystem
. 这是我现在可以用来获取 MIB 结构的顶级 OID。以文本形式轮询 OID 时,
MIB::OID
应使用符号。这让 snmp 命令知道使用哪个 MIB 将 OID 转换为代理可以理解的数字形式(非常类似于 DNS 转换的原理):输出是:
现在,假设我对 OID 感兴趣,
upgradeAvailable
这样我就可以知道什么时候可以升级这个盒子上的 DSM。我可以通过运行找到有关它的更多详细信息:输出是:
所以现在当我实际轮询设备时,我知道我正在运行最新的 DSM:
希望这可以帮助某人。