从 SNMP 获取特定信息需要采取哪些步骤?

从 SNMP 获取特定信息需要采取哪些步骤?

我想查询 FortiGate 的 CPU 使用情况。
根据 Fortinet 文档,要使用的变量是 fgPerCpuHighDetails:

$ grep fgPerCpuHighDetails /home/qa/.snmp/mibs/FORTINET-*
/home/qa/.snmp/mibs/FORTINET-FORTIGATE-MIB.mib:fgPerCpuHighDetails OBJECT-TYPE
/home/qa/.snmp/mibs/FORTINET-FORTIGATE-MIB.mib:    OBJECTS     { fnSysSerial, sysName, fgPerCpuHighDetails }
/home/qa/.snmp/mibs/FORTINET-FORTIGATE-MIB.mib:                fgProcModMemCapacity, fgProcModMemUsage, fgPerCpuHighDetails,

但是,当我尝试探测 fgPerCpuHighDetails 时,我得到:

$ snmpget -v2c -cpublic -mALL 192.168.1.99 fgPerCpuHighDetails
FORTINET-FORTIGATE-MIB::fgPerCpuHighDetails = No Such Object available on this agent at this OID

您能否推荐一个可以解释从 SNMP 获取信息的步骤的 URL?


$ sudo systemctl status snmpd -l
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
   Loaded: loaded (/usr/lib/systemd/system/snmpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2019-07-17 16:46:31 PDT; 21h ago
 Main PID: 879 (snmpd)
    Tasks: 1
   CGroup: /system.slice/snmpd.service
           └─879 /usr/sbin/snmpd -LS0-6d -f

Jul 17 16:46:30 vestal8 systemd[1]: Starting Simple Network Management Protocol (SNMP) Daemon....
Jul 17 16:46:31 vestal8 snmpd[879]: NET-SNMP version 5.7.2
Jul 17 16:46:31 vestal8 systemd[1]: Started Simple Network Management Protocol (SNMP) Daemon..

$ snmpwalk -v2c -c public 192.168.1.99 fgPerCpuHighDetails
fgPerCpuHighDetails: Unknown Object Identifier (Sub-id not found: (top) -> fgPerCpuHighDetails)

答案1

要使用文本形式轮询 OID,您应该使用符号MIB::OID。如果您使用数字形式的 OID,则可以直接使用它。这是因为 SNMP 代理使用数字形式,而人类使用文本(类似于 DNS)。因此,代理可以轻松解析数字,但需要将文本形式转换为数字。MIB 可以做到这一点,因此您需要指定定义 OID 的正确 MIB,以便 snmp 命令可以在轮询代理之前对其进行转换。

MIB 名称由 MIB 文件中的语句定义DEFINITIONS。不要将其与 MIB 文件的名称混淆(有时相同,但并非总是如此)。因此,正如fgPerCpuHighDetails您的示例中在 中定义的那样FORTINET-FORTIGATE-MIB.mib,请执行以下操作:

grep DEFINITIONS /home/qa/.snmp/mibs/FORTINET-FORTIGATE-MIB.mib

找出 MIB 的名称。我没有这个特定的 MIB,但名称可能是FORTINET-FORTIGATE-MIB

利用该信息,您可以轮询设备:

snmpwalk -v2c -c public 192.168.1.99 FORTINET-FORTIGATE-MIB::fgPerCpuHighDetails

用于snmptranslate解析 MIB 并探索它们:

  • snmptranslate -Td MIB::OID用于描述 OID

  • snmptranslate -Tp MIB::OID映射 OID 和所有子 OID 的层次结构。

  • snmptranslate -On MIB:OID将 OID 转换为数字形式

  • 查看手册页以了解更多选项。

相关内容