When you have a website or a network, it’s helpful to be aware of any issues as soon as they occur. There are open source and freeware server/network monitoring tools that will supervise your infrastructure for any issues that may arise. These tools are meant to aid you in avoiding being taken offline and evaluating if your resource needs has outgrown your infrastructure.
In this article, we review our top 10 server/network monitoring tools. You will see a variety of server applications here so that you might find the tool (or tools) for your needs.
Monit not only monitors your server, but also attempts to remedy problems by taking predefined actions for certain situations. For example, if your database server crashes, Monit can automatically restart the service if this is the action that you want to take (hint: it usually is).
If you have more than one server that you need to monitor, then you can useM/Monit– an extended version of Monit that provides a simple way to monitor multiple machines.
There’s also an iPhone app available for M/Monit to help you conveniently check on your network without lugging around a laptop around.
When you have a cluster of machines, it’s difficult to see how the whole cluster is doing all at once. Ganglia, instead, presents an overview of the whole cluster. This is a great tool to have set up when you’re working with a server cluster; with that said, it may be overkill for single-machine set-ups.
Munin monitors and graphs system performance metrics. It can automatically produce daily/weekly/monthly/yearly performance graphs and reports of many important metrics. It comes with the ability to monitor core system resources, such as memory, disk space, CPU usage, server applications such as MySQL, Apache, and Squid.
One of Munin’s greatest strengths is how simple it is to extend. With just a few lines of code, you can write a plugin to monitor almost anything. Being so easy to extend means that Munin is also a good choice for graphing things unrelated to server performance, such as the number of user signups or website popularity.
Cacti is similar to Munin in many ways. What is makes Cacti different though–and where it stands out in relation to Munin–is that it allows you to resize your graphs and view data for an arbitrary range. Whereas Munin has fixed daily, weekly, monthly and yearly graphs (unless you write a custom extension), Cacti lets you view your data however you want to: last 2 hours, last 4 days, last 6 months, out of the box. You can even visually select and zoom into regions on your graphs.
Nagios is “the industry standard in IT infrastructure monitoring,”–well, at least that’s what it says on their website. Nagios can be complicated to install and configure, but its wealth of features are unmatched by any tool out in the market and is geared for the experienced IT network administrator. Nagios supports monitoring of multiple hosts and can send out alerts via email, pager (if you still use this ancient technology) or SMS/text messaging. Like Monit, it can also be configured to automatically respond to problems.
Zabbix is a feature-packed monitoring tool. It has great visualization support including user-defined views, zooming, and mapping. It can send out alerts via email, SMS or instant message. It also provides audible alerts, which can be useful when you’re physically near the monitoring machine.
Observium is geared towards Linux, BSD and Cisco networks. It supports auto discovery of your network infrastructure, finding the networks that you’re likely interested in monitoring; this feature can be compared to how your Wi-Fi software automatically finds signals in range that you can jack into. Observium provides detailed graphs, and can be set up alongside Nagios to provide alerts. It also integrates well with Collectd (featured below) for a more robust interface.
Zenoss is an open source version of the commercial server monitoring tool Zenoss Enterprise, written entirely in Python. It supports the Nagios plugin format, so many existing Nagios plugins can be used in Zenoss. One of the main highlights of Zenoss is its powerful yet simple to use user interface.
Collectd is similar to Munin and Cacti in that it focuses on graphing system metrics. Where it excels in is that it is designed specifically for performance and portability; this ultimately means it’s great on rugged systems, low-end systems, and embedded systems. Being designed for performance and low-system resource use means that Collectd can gather data every 10 seconds without interfering with your server processes, providing extremely high-resolution statistics. You can write extensions for it in C, Perl or Java.
Argus focuses on the monitoring of network services, and supports IPv4 and IPv6. It has a nice alert escalation procedure: after sending out an alert and the problem still isn’t resolved within a fixed amount of time (because the systems admin is at home enjoying his sleep), another alert will be sent out to someone else.
About the Author
Ben Dowling is a passionate software developer who specializes in web and mobile application development. He currently works for Mendeley in London, UK, and regularly blogs about development at Coderholic. You can also find him on twitter.