Continuing our quest for robust, enterprise-grade open source network monitoring, we tested Icinga Core 2 (version 2.8.1) and the stand-alone Icinga Web 2 interface. Created in 2009 as a fork of the Nagios network monitoring tool, Icinga has come a long way.
We found Icinga to be a powerful monitoring tool with many great features. The Core install is straightforward and basic monitoring is easy with either pre-configured templates or plugins. However, we discovered that the Web install is a bit more complicated and could stand to be streamlined.
Icinga runs on most of the popular Linux distros and the vendor provides detailed installation instructions for Ubuntu, Debian, Red Hat (including CentOS and Fedora) and SUSE/SLES. Icinga does not publish specific hardware requirements, but our installation ran well on a quad-core processor with 4 GB RAM and this is probably be a good starting point for a basic installation.
As with most monitoring applications, storage is an important variable that largely depends on the number of hosts and services monitored and how often information is written to the log. With too little storage, the logs can easily fill up and freeze the system.
We were able to quickly install Icinga on Ubuntu 16.04 LTS with just a few simple commands at the prompt. The first step was to download the necessary files to the local repository, and then install the actual Icinga application. Icinga can be used to monitor the availability of hosts and services from switches and routers as well as a variety of network services like HTTP, SMTP and SSH.
One of Icinga’s strengths is the availability of plugins that can be used for most monitoring tasks, and as part of the installation you need to install the basic monitoring plugins to check external services. There are literally thousands of plugins available, both directly from the Icinga Exchange and from third parties. For third-party plugins from unknown sources, it is a good security practice to examine the source code and compile it yourself, or stick to known and trusted plugin authors.
Granular monitoring capabilities
Icinga provides impressive granularity as to how hosts and services are monitored. For instance, you can create what Icinga calls a ‘host object’, which is essentially a rule or task, to monitor a server. For each server you can define what services to check, from a simple ping command to make sure the server is on and responding, or checking to see if the HTTP or FTP services are running. Icinga provides flexibility in how often to check, with various warning levels defining how and who to alert when something needs attention.
Icinga uses a series of configuration files to store information about how the infrastructure is monitored. In addition to the 10-plus default files, you can create your own custom files and include these as part of the overall Icinga configuration. While this approach might be a bit overwhelming for first-time users, we found that the concepts are fairly easy to grasp once you spend some time with the various files. Icinga provides templates that cover most scenarios, making it easier to customize its use in your environment.
Icinga utilizes different monitoring methods; the most common is the use of a pre-built or custom service-monitoring plugin. With the abundance of available plugins, you may never need to build your own, but Icinga provides instructions on how to accomplish this, if desired.
Plugins are available for monitoring hosts and services like Linux, Windows, databases, SMTP, Web services, hardware, mail servers and third-party applications like VMware and SAP. In cases where remote access may not be available, Icinga offers agent-based monitoring. One common method is an SNMP daemon that runs on the remote system. For those needing solid Windows support, Icinga can utilize the NSClient++ to run local scripts which provide detailed system information.
If you need to make changes on a regular basis, Icinga may become a bit time-consuming to configure and manage from the command prompt. Conveniently, there are several Web interfaces that can be used and we chose Icinga Web 2. This is a stand-alone application that communicates with Icinga Core. While the Core Icinga installation was very straightforward and literally took less than 10 minutes, we found the Web application to be a bit kludgy and took more than 30 minutes.
In order to use Icinga Web, we first needed to install a database. Our options were PostgreSQL or MySQL, and we opted for the latter. Then we had to run through a series of additional commands and screen prompts to download, install and configure a variety of options, including the Apache Web server and PHP.
The last step was to create a token needed to launch the Icinga Web interface. With our newly minted token in hand, we finally were able to start our browser and were presented with a Web wizard. Although the wizard was easy to use, we found it to be too complex (more than 10 steps) and required us to go back to the prompt several times, once to set the time zone for the PHP configuration file and at least once to change database settings.
With installation and initial configuration complete, we were finally able to launch the Icinga Web interface. The initial screen you see is the ‘dashboard,’ which displays an overview of the infrastructure with any service and host related warnings and errors listed.
In addition to the dashboard summary overview, Icinga provides multiple ways to sort and display infrastructure data. Data can be displayed by hosts, services and groups, with the ability to drill down to view details about a specific issue.
When viewing details about an error, you have the option to perform different tasks such as acknowledge the error, perform an immediate re-check, add notes, send custom notifications or schedule downtime or future re-checks.
While Icinga Web is both easy and fast to use, we wanted a way to create, edit or delete monitoring rules from the interface, finding that most of these tasks need to be completed using the configuration files. Icinga says there are tools in development for this, but no real solution is currently available.
Basic on-screen reporting is serviceable in Icinga Web, but for more robust reporting, it’s best to use Icinga’s separate reporting module. This works with JasperReports Server to provide powerful reporting capabilities. There are also additional reporting and graphing add-ons such as Graphite and PNP, as well as log tools like GrayLog and LogStash.
Icinga provides a comprehensive online user manual that is well-organized, easy to navigate by topic or searchable by keyword. For larger installations, Icinga provides the option of setting up a distributed monitoring environment, including high-availability clustering.
Icinga offers commercial support at four different levels, bronze, silver, gold and platinum. There is no published online pricing.
Pros: Easy to install Core, solid documentations for multiple Linux distros, thousands of available pre-configured plugins, scales well.
Cons: The Icinga Web 2 install is cumbersome with too many steps, offers no way to create and manage rules from Web interface.