繁体   English   中英

如何从c#应用程序获得远程linux机器的cpu和ram使用

[英]How can I get cpu and ram usage of remote linux machine from c# application

我有一个ac#app,它通过WMI从远程Windows机器收集数据(cpu,ram,hdd用法等)。 但是现在我还需要监控几个linux盒子。 有没有办法从Windows机器上运行的c#app获得Linux机器的CPU和RAM利用率?

我设法从linux框中获取指标统计数据。 正如VirtualBlackFox提到的那样 - 标准化的方法是将snmp用于此目的。

第一步是在linux上安装snmp。 (我在VM上安装了Ubuntu 12)

以下是我用于安装snmp onetwo的链接。 基本上,您需要安装snmp守护程序并进行配置以公开指标和网络可见性。

我想在这一步你可以自由地使用一些snmp库从snmp设备获取数据,但我也尝试使用WMI-SNMP桥。

第二步:设置WMI SNMP环境

这是您需要执行的步骤列表

对我来说足够了

  1. 在Windows功能中启用snmp功能
  2. %windir%\\system32\\wbem\\创建snmp文件夹
  3. 使用此命令Smi2smir /g ..\\..\\hostmib.mib > hostmib.mof从MIB文件生成MOF文件
  4. 将SNMP MOF文件添加到WMI存储库mofcomp hostmib.mof

在此之后,我能够看到wmi类和属性

在此输入图像描述

代码示例

使用sharpsnmplib

using Lextm.SharpSnmpLib;
using Lextm.SharpSnmpLib.Messaging;

 var result = Messenger.Get(
                    VersionCode.V1,
                    new IPEndPoint(IPAddress.Parse("172.10.206.108"), 161),
                    new OctetString("public"),
                    new List<Variable> { new Variable(new ObjectIdentifier("1.3.6.1.4.1.2021.4.6.0")) },
                    60000);

这个将返回盒子上使用的总ram。 (顺便说一下,snmp的标准端口是161)

使用snmp-wmi桥

 string snmpClass = "SNMP_RFC1213_MIB_system";
    string path = string.Format("\\\\.\\root\\snmp\\localhost:{0}=@", snmpClass);

    var contextParams = new ManagementNamedValueCollection
    {
                   {"AgentAddress", "172.10.206.108"}, // ip address of snmp device
                   {"AgentReadCommunity", "public"}
    };

    var options = new ObjectGetOptions(contextParams);
    var objSys = new ManagementObject(new ManagementPath(path), options);

    Console.WriteLine(objSys.Properties["sysDescr"].Value);
    Console.ReadLine();

因此,至少有两种获取snmp数据的方法:

  1. 正如我在第一个示例中所示,使用OID(对象标识符唯一标识MIB层次结构中的manged对象)。 这里有用的链接。 您还可以在.mof文件中找到OID。
  2. 使用wmi-snmp桥。 所以我在第二个例子中使用了路径,如果它不适合你,我想你可以在WMI资源管理器中找到正确的例子。

所以这非常适合它。 不知道哪种方法更好或更快。 将尝试两者并看到,这更适合我的目的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM