Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

First to be clear, I am looking for network monitoring suite / library to be used as a part of the cloud, so it runs in cloud, and monitors the cloud - EC2, Rackspace and CloudStack with KVM/VMWare and it's managed via API. It has to be part of this cloud, like fully integrated via API, scalable with no licence issues as well it has to be extensible, so the library would match these criteria.

I am looking for library to support server / switch monitoring, to actually be able to check with the device if it's working OK. However this requires some sort of auto-detection and device support.

Basically I need to automatically detect a new device, start monitoring it like CPU and PING. So how do I auto-detect the machine remotely, this is something I need library for.

Rackspace has something like this - "Cloud Monitoring API". But is there anything opensource which can be used same way for many clouds?

The Nagios and others doesnt have such API, and the big and expensive systems are too big to handle in public cloud, so there must be some other network monitoring engine with API, which can add a new servers automatically and support user isolation for example so I dont see other servers except mine.

The problem is that there is no any reasonable software currently as it seems to actually allow to script something like the following:

To detect and add new host

host = getHostInfo("localhost");
monObj = addHost(host);
monObj.startCPU(20); // monitor CPU every 20 seconds

To get the monitoring results

cpuArray = monObj.fetchArray("2012-07-01", "2012-07-05");
cpuLoadThisMonth = monObj.getLoadAvg("2012-07-01", "2012-07-05");
cpuLoadNow = monObj.getLoadAvg();

cloud monitoring node

The thing is that, I dont need a fully blown monitoring suite, but I need to present data in my own backend, calculate the SLA the way I need, so if there is no library or anything like this, I just do this like on the graph, as such solution is very good to be integrated with every private cloud so you can see your own SLA reports. This way is perfect, because engine is very small so this way on micro instance I can run all processes no problem, however I would prefer to download something which is maintained and supported so when I got Windows 8 or new Cisco this is not going to be a major problem with handling this.

Old monitoring software like Nagios, Solar Winds, Opmanager, Zenoss, are not doing the job this way because they fail in the cloud, because their either do not support API, or are not scalable, or not extensible, for example, OpManager doesnt support API, and Solar Winds as a engine is way too expensive, because I need to pay for new objects.

So I am looking for a simple monitoring solution or library to be run in the cloud, and to monitor the cloud which I can use to integrate the monitoring with the existing private cloud management system, including the load balancer.

share|improve this question

closed as not constructive by mfinni, Wesley, EEAA, mgorven, Zoredache Jul 12 '12 at 18:13

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

when you say a 'library', it sounds like you have a specific language in mind, correct? If so, please specify it. – Mike Pennington Jul 5 '12 at 16:55
Specific types of devices or operating systems you have to work with? – Brent Pabst Jul 5 '12 at 16:56
If you are looking for a library because you're coding your own monitoring tool, this should be over at SO. If you're a sysadmin looking to monitor things, you should just use one of the many good free monitoring tools, or spend money on one of the many good proprietary ones. – mfinni Jul 5 '12 at 16:58
You could give us a teensy hint and at least tell us what vendors/OSes of switch/router/server you're planning on using. – womble Jul 5 '12 at 17:15
C API would be the minimal, but java would be also ok. I have Centos, 2008R2, Cisco, plus some more brands, but basically, the embeddable monitoring engine I can run in the cloud and control with the API, I could not find anything working, and I've been searching all day and all night long, I got 20 monitoring systems installed and none of them is having any libraries which can e.g. get the CPU usage from the Windows machines. I mean, I have several other monitoring counters and this generic stuff shouldn't be any big deal, right? I just need to add more functionality, like SNMP monitoring. – Andrew Smith Jul 5 '12 at 19:10
up vote 1 down vote accepted

From the comments...

C API would be the minimal

If all you need is a C-API for SNMP monitoring, the de-facto choice is NET-SNMP. Please see this question for example usage.

I got 20 monitoring systems installed and none of them is having any libraries which can e.g. get the CPU usage from the Windows machines.

If any of those 20 monitoring systems support SNMP gets and walks, then you're really doing this the hard way by going with a C-API. All you need to monitor CPU on a windows machine is the hrProcessorTable oid from Host Resources MIB. Be sure you have enabled SNMP on your Windows servers and it's allowed through Windows Firewall.

For the sake of your own sanity, use one of those 20 existing monitoring systems that supports SNMP and poll hrProcessorLoad on your Windows2008 servers. This blog has a good example

share|improve this answer
I am going to make SNMP, and with HTTP this is going to be fully working I guess, and I can leave WMI and JMX and other gadgets, just ping and this is it – Andrew Smith Jul 5 '12 at 20:31

I almost posted this as a comment, but figured there were plenty already.

There are plenty of open source monitoring solutions out there. Nagios, zenoss, Cacti, Spiceworks.

SNMP, Netflow (for the Cisco stuff), WMI, etc. can all be used to monitor these devices.

Are you specifically looking for cloud/online solutions, or will on-premise work?

Most of the questions to the right of this one (in the links) could point you in the right direction.

share|improve this answer
I need monitoring engine to be run in the cloud, and to be controlled via API in C, Java etc, like Rackspace Monitoring API would be ideal tool to do it – Andrew Smith Jul 5 '12 at 19:49
Basically I need monitoring data available and controlled from API, maybe it's too much I am asking, maybe I should use snmptools command line and parse it with awk and sed and this is it. – Andrew Smith Jul 5 '12 at 19:56

Not the answer you're looking for? Browse other questions tagged or ask your own question.