首先要明确一点,我正在寻找可用作云的一部分的网络监控套件/库,以便它在云中运行,并使用 KVM/VMWare 监控云 - EC2、Rackspace 和 CloudStack,并通过 API 进行管理。它必须是此云的一部分,例如通过 API 完全集成,可扩展且无许可问题,并且必须可扩展,因此该库符合这些标准。
我正在寻找支持服务器/交换机监控的库,以便能够实际检查设备是否正常工作。然而,这需要某种自动检测和设备支持。
基本上我需要自动检测新设备,开始监控它,比如 CPU 和 PING。那么我如何远程自动检测机器呢?这是我需要库来做的事情。
Rackspace 有类似的东西 - “云监控 API”。但是有没有开源的东西可以以同样的方式用于许多云?
Nagios 和其他系统没有这样的 API,而大型昂贵的系统太大而无法在公共云中处理,因此必须有其他带有 API 的网络监控引擎,它可以自动添加新服务器并支持用户隔离,例如,除了我的服务器之外,我看不到其他服务器。
问题是目前没有任何合理的软件,因为它似乎实际上允许编写如下脚本:
检测并添加新主机
host = getHostInfo("localhost");
monObj = addHost(host);
monObj.startCPU(20); // monitor CPU every 20 seconds
获取监测结果
cpuArray = monObj.fetchArray("2012-07-01", "2012-07-05");
cpuLoadThisMonth = monObj.getLoadAvg("2012-07-01", "2012-07-05");
cpuLoadNow = monObj.getLoadAvg();
问题是,我不需要功能齐全的监控套件,但我需要在自己的后端呈现数据,以我需要的方式计算 SLA,因此如果没有库或类似的东西,我只需像在图表上那样执行此操作,因为这种解决方案非常适合与每个私有云集成,以便您可以查看自己的 SLA 报告。这种方式很完美,因为引擎非常小,所以通过这种方式,在微型实例上我可以毫无问题地运行所有进程,但是我更愿意下载一些维护和支持的东西,这样当我获得 Windows 8 或新 Cisco 时,这不会成为处理这个问题的主要问题。
旧的监控软件,例如 Nagios、Solar Winds、Opmanager、Zenoss,都无法以这种方式完成工作,因为它们在云端无法运行,因为它们要么不支持 API,要么不可扩展,要么不可扩展,例如,OpManager 不支持 API,而 Solar Winds 作为引擎太贵了,因为我需要为新对象付费。
因此,我正在寻找一个简单的监控解决方案或库,可以在云中运行,并监控云,我可以使用它来将监控与现有的私有云管理系统(包括负载均衡器)集成。
答案1
来自评论...
C API 将是最小的
如果你需要的只是一个用于 SNMP 监控的 C-API,那么事实上的选择是NET-SNMP
。 请参见这个问题例如用法。
我安装了 20 个监控系统,但没有一个具有任何可以从 Windows 机器获取 CPU 使用率的库。
如果这 20 个监控系统中有任何一个支持 SNMP 获取和读取,那么使用 C-API 确实很难。在 Windows 机器上监控 CPU 所需的只是hrProcessorTable
来自主机资源 MIB. 确保你有在 Windows 服务器上启用 SNMP并允许它通过 Windows 防火墙。
为了您自己的理智,请使用现有的 20 个支持 SNMP 的监控系统之一hrProcessorLoad
对您的 Windows2008 服务器进行轮询。 本博客有一个很好的例子
答案2
我差点就将此作为评论发布出来,但发现已经有很多了。
目前有很多开源监控解决方案。Nagios、zenoss、Cacti、Spiceworks。
SNMP、Netflow(用于思科产品)、WMI 等都可用于监控这些设备。
您是否专门寻找云/在线解决方案,还是内部部署也可以?
该问题右边的大多数问题(在链接中)都可以为您指明正确的方向。