我有一个包含 5 台 Windows 服务器(2008 年)的环境。我已将它们添加到我的 OpenNMS 实例中。这些服务器是相同的,唯一的区别是在它们上运行的应用程序组件。
但是,这 5 个节点中只有 4 个在 OpenNMS 上收集了 cpuPercentBusy.jrb。SNMP 服务在所有节点上运行。此外,正在收集其他 snmp 数据。只是没有为其中一个节点收集 cpuPercentBusy.jrb。是否有任何理由不为此节点收集此信息。日志没有透露任何具体原因。
如果您在 $OPENNMS_HOME/etc/datacollection/microsoft.xml 中查找用于收集 cpuPercentBusy 的 OID,您将找到 oid 和实例“1”的“.1.3.6.1.2.1.25.3.3.1.2”。在 OID .1.3.6.1.2.1.25.3.3.1.2.1 上执行 snmpget 这通常类似于 -
snmpget -v 2c -c mycommunitystring mywindowshost .1.3.6.1.2.1.25.3.3.1.2.1
我敢打赌你会看到它失败了。当我尝试它时,我看到了以下内容 -
Error in packet
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: HOST-RESOURCES-MIB::hrProcessorLoad.1
然后我会尝试散步,您可能会看到还有其他情况。你可以像这样散步——
snmpwalk -v 2c -c mycommunitystring mywindowshost .1.3.6.1.2.1.25.3.3.1.2
在我的一个系统上,我收到的响应是 -
HOST-RESOURCES-MIB::hrProcessorLoad.2 = INTEGER: 63
HOST-RESOURCES-MIB::hrProcessorLoad.3 = INTEGER: 61
无论出于何种原因,在某些 Windows 系统上 .1 实例都不可用。OpenNMS 对此几乎无能为力。可以在此处找到其他信息。如果您步行 .1.3.6.1.2.1.25.3.2.1.3 ,您会看到有一个实例 ID 匹配的表。在我的情况下 .1 它是“Microsoft XPS Document Writer v4”。
您可以考虑安装SNMP Informant以获得更好的数据。
我在 $OPENNMS_Home/etc/datacollection/microsoft.xml 中的“windows-host”组中添加了额外的行
<datacollection-group xmlns="http://xmlns.opennms.org/xsd/config/datacollection" name="Microsoft">
<group name="windows-host" ifType="ignore">
<mibObj oid=".1.3.6.1.2.1.25.3.3.1.2" instance="0" alias="cpuPercentBusy" type="integer" />
<mibObj oid=".1.3.6.1.2.1.25.3.3.1.2" instance="1" alias="cpuPercentBusy" type="integer" />
<mibObj oid=".1.3.6.1.2.1.25.3.3.1.2" instance="2" alias="cpuPercentBusy" type="integer" />
<mibObj oid=".1.3.6.1.2.1.25.3.3.1.2" instance="3" alias="cpuPercentBusy" type="integer" />
<mibObj oid=".1.3.6.1.2.1.25.3.3.1.2" instance="4" alias="cpuPercentBusy" type="integer" />
<mibObj oid=".1.3.6.1.2.1.25.3.3.1.2" instance="5" alias="cpuPercentBusy" type="integer" />
<mibObj oid=".1.3.6.1.2.1.25.3.3.1.2" instance="6" alias="cpuPercentBusy" type="integer" />
...
一直到 64,正如我在我的环境中发现的那样,每个 VM 的实例可能会因该数量而异。