OpenNMS vs. Nagios

radar-41443_640I have just finished setting up some network management/monitoring systems for the Postshift office and thought I’d share some thoughts I had.

Previously, I’ve used OpenNMS to monitor both network and server infrastructure, but it’s hard to ignore the fact that Nagios has become the de facto standard when looking at Open Source monitoring solutions. While investigating a new, lightweight monitoring solution for Postshift, I ended up opting for Nagios; primarily because all the software I’d need to run would reside on an old Mac Mini that I had spare and the memory footprint for Nagios can be much smaller than OpenNMS. However, after configuring Nagios, I realised that I missed some of the features that OpenNMS has out-of-the-box and I thought it was worth me publishing a mental list I have built up comparing the two. Hopefully it will help others who need help making a choice between the pair of them:

  • JVM vs. Natively Compiled – this was the deciding factor for me in this instance. OpenNMS requires a Java runtime, Nagios is natively compiled for the platform you’re running on. Given the memory constraints of the Mac Mini (1.5GB RAM), I thought Nagios would be more likely to behave itself.
  • Out-of-the-box auto-discovery vs. manual configuration – I am aware that there are automated ways to populate your Nagios host configuration, however, OpenNMS simply needs to be provided network address ranges (and/or individual IPs) and it will go away and discover systems including picking up on common services (HTTP, HTTPS, SMTP, SSH, etc.), which it will then begin to monitor for you.
  • XML vs. Plain-text configuration files – this is the flip-side to the previous point. Once you need to start manually configuring OpenNMS (perhaps to add a custom service), you’ll need to start delving into some nasty XML configuration files. Nagios, on the other hand, has some well formatted plain-text configuration files.
  • Out-of-the-box graphing vs. MRTG integration – with OpenNMS, once you have all your hosts’ SNMP daemons/services configured, it’s just a case of setting the appropriate SNMP community strings (or credentials if you’re using SNMPv3) in OpenNMS and it will start producing graphs for each of the hosts it can poll. The only problems I’ve had here are with networking hardware (e.g. managed switches); sometimes these will require MIBs be imported, which can be a pain.

I’m sure there are probably more comparison points, however these 4 have been brought to the forefront of my mind given my recent activities. It’s worth pointing out that modern configuration management systems could render all the above points moot: there are many Puppet modules available for configuring Nagios, while Chef cookbooks exist for both Nagios and OpenNMS.