有谁知道什么是OID来获取SNMP中的CPU核心数量?我想得到一个Integer值。
谢谢。
您可以对此OID执行SNMP步骤:1.3.6.1.2.1.25.3.3.1.2
它将返回每个CPU的负载,您可以简单地计算结果,并且您将知道核心数。
OID 1.3.6.1.2.1.25.3.3.1.2
遵循标准/ RFC的HOST-RESOURCES-MIB,因此它应该在其他平台上运行。 http://www.oidview.com/mibs/0/HOST-RESOURCES-MIB.html
我使用SharpSnmpLib的示例代码:
using Lextm.SharpSnmpLib;
using Lextm.SharpSnmpLib.Messaging;
using Lextm.SharpSnmpLib.Security;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication
{
class Program
{
static void Main(string[] args)
{
var result = new List<Variable>();
Messenger.BulkWalk(VersionCode.V2,
new IPEndPoint(IPAddress.Parse("10.10.10.23"), 161),
new OctetString("public"),
new ObjectIdentifier("1.3.6.1.2.1.25.3.3.1.2"),
result,
6000,
10,
WalkMode.WithinSubtree,
null,
null);
}
}
}
result
的数量将是4
,因为我正在使用具有4核的Intel i5。
这是基于@ celso-catarino-neto之前回答的NETSNMP版本
➜ snmptable -M +. -m +ALL -v 2c -c public -Pu -Ci mylinuxserver HOST-RESOURCES-MIB::hrProcessorTable
SNMP table: HOST-RESOURCES-MIB::hrProcessorTable
index hrProcessorFrwID hrProcessorLoad
768 SNMPv2-SMI::zeroDotZero 42
769 SNMPv2-SMI::zeroDotZero 32
770 SNMPv2-SMI::zeroDotZero 40
771 SNMPv2-SMI::zeroDotZero 37
hrProcessorTable的OID是......
➜ snmptranslate -M+. -m +ALL -On HOST-RESOURCES-MIB::hrProcessorTable
.1.3.6.1.2.1.25.3.3
使用snmpwalk工具。
$ snmpwalk -c public <machine ip-addr> 1.3.6.1.2.1.25.3.3.1.2 | wc -l
它将返回一个整数作为所需数量的CPU核心