icinga_bannerThe new release 2.1.0 adds new features to Icinga 2 – all thanks to your great feedback on the 2.0 releases. You’ll find plenty of documentation updates (improved “Getting started” and “Distributed Monitoring and High Availability” documentation) and also package enhancements (mostly SUSE related, as Icinga 2 hit their repos lately).
Other than that, this release is all about:

  1. Making it even easier to work with the Icinga 2 configuration format
  2. Better application logging
  3. Advanced high availability cluster functionality

On the side, we’ve continued to polish up docs.icinga.com and streamline the Icinga Web 2 Docs viewer, freshen up our dev.icinga.com, update the Icinga Vagrant Demo Boxes and further develop Ansible and Puppet modules for Icinga 2 (announcements on the latter shortly).
Download Icinga 2 and upgrade now. Don’t forget to update the DB IDO schema – find details on the Changelog.
PS: I’m going to San Francisco for the Icinga Camp too. Join us with your talk on Icinga and have a beer (or two) with us 🙂

Configuration Enhancements

icinga2_list_objectsThe icinga2-list-objects script does not only show all objects (also those generated from apply rules), it also enables you to use one of the coolest features we’ve ever implemented: All object attributes will show their modification origin (templates, dictionary add/remove, etc) including the file name, line number, character from-to. The curious can read on in Gunnar’s recent post on “Analysing configuration problems with Icinga 2“.

# icinga2-list-objects --color | less -R

We’ve also added an application search path for the default icinga2.conf file – this enables shorter config validation, and helps tests and debug runs too.

# icinga2 -C

Our newest core team member Carlos did some great work on the optional Check Command plugins for the Manubulon SNMP plugins which are now integrated into Icinga 2. Details on the documentation – in short:

# vim /etc/icinga2/constants.conf
const ManubulonPluginDir = PluginDir
# vim /etc/icinga2/icinga2.conf
include <manublon>

Thanks Carlos!

Error Logging

icinga2_error_loggingWhen a command fails to execute you would normally want to see why. As we feel the same way about it, we’ve changed all failed commands to log severity warning. There are similar enhancements in other areas where logging was unclear – for example when the performance data parser fails to collect metrics for Graphite (there’s a discussion on wrong locales vs plugin api still in progress here).
I’ve set a wrong path for the PluginDir constant in constants.conf for this example.

Cluster HA

icinga2_cluster_icingaweb2_vagrantThe DB IDO feature offers an integrated ‘high availability‘ mode. As such it ran on the zone master in a HA zone setup, which confused users. We still think that a shared database using a virtual IP address is the best default setting, but you can choose to disable the HA functionality on all nodes by editing the DB IDO config like this:

object IdoMysqlConnection "ido-mysql" { enable_ha = false }

The DB IDO programstatus table requires the additional endpoint_name column to ensure that there’s only one active node populating the database, even in a split-brain failure scenario in an HA zone.
The high availability functionality has been added to the notification feature but in a different fashion. Similar to check load balancing inside a cluster zone, notifications are now load balanced too. If you prefer to maintain redundancy when sending notifications, set enable_ha = false in the NotificationComponent configuration (details on the documentation).

2.1.0 Changelog

Find details on the issues on https://dev.icinga.com/versions/199

  • DB IDO schema upgrade required! New schema version: 1.11.7
  • RPMs install the schema files into `/usr/share/icinga2-ido*` instead of `/usr/share/doc/icinga2-ido*` #6881
  • Information for config objects using `icinga2-list-objects` script #6702
  • Add Python 2.4 as requirement #6702
  • Add search path: If `-c /etc/icinga2/icinga2.conf` is omitted, use `SysconfDir + “/icinga2/icinga2.conf”` #6874
  • Change log level for failed commands #6751
  • Notifications are load-balanced in a High Availability cluster setup (New config attribute: `enable_ha`) #6203
  • DB IDO “run once” or “run everywhere” mode in a High Availability cluster setup (New config attributes: `enable_ha` and `failover_timeout`) #6203 #6827
  • RPMs use the `icingacmd` group for /var/{cache,log,run}/icinga2 #6948


  • Bug #6881: make install does not install the db-schema
  • Bug #6915: use _rundir macro for configuring the run directory
  • Bug #6916: External command pipe: Too many open files
  • Bug #6917: enforce /usr/lib as base for the cgi path on SUSE distributions
  • Bug #6942: ExternalCommandListener fails open pipe: Too many open files
  • Bug #6948: check file permissions in /var/cache/icinga2
  • Bug #6962: Commands are processed multiple times
  • Bug #6964: Host and service checks stuck in “pending” when hostname = localhost a parent/satellite setup
  • Bug #7001: Build fails with Boost 1.56
  • Bug #7016: 64-bit RPMs are not installable
  • Feature #5219: Cluster support for modified attributes
  • Feature #6066: Better log messages for cluster changes
  • Feature #6203: Better cluster support for notifications / IDO
  • Feature #6205: Log replay sends messages to instances which shouldn’t get those messages
  • Feature #6702: Information for config objects
  • Feature #6704: Release 2.1
  • Feature #6751: Change log level for failed commands
  • Feature #6874: add search path for icinga2.conf
  • Feature #6898: Enhance logging for perfdata/graphitewriter
  • Feature #6919: Clean up spec file
  • Feature #6920: Recommend related packages on SUSE distributions
  • API – Bug #6998: ApiListener ignores bind_host attribute
  • DB IDO – Feature #6827: delay ido connect in ha cluster
  • Documentation – Bug #6870: Wrong object attribute ‘enable_flap_detection’
  • Documentation – Bug #6878: Wrong parent in Load Distribution
  • Documentation – Bug #6909: clarify on which config tools are available
  • Documentation – Bug #6968: Update command arguments ‘set_if’ and beautify error message
  • Documentation – Bug #6995: Keyword “required” used inconsistently for host and service “icon_image*” attributes
  • Documentation – Feature #6651: Migration: note on check command timeouts
  • Documentation – Feature #6703: Documentation for zones and cluster permissions
  • Documentation – Feature #6743: Better explanation for HA config cluster
  • Documentation – Feature #6839: Explain how the order attribute works in commands
  • Documentation – Feature #6864: Add section for reserved keywords
  • Documentation – Feature #6867: add section about disabling re-notifications
  • Documentation – Feature #6869: Add systemd options: enable, journal
  • Documentation – Feature #6922: Enhance Graphite Writer description
  • Documentation – Feature #6949: Add documentation for icinga2-list-objects
  • Documentation – Feature #6997: how to add a new cluster node
  • Documentation – Feature #7018: add example selinux policy for external command pipe
  • Plugins – Feature #6650: Plugin Check Commands: add manubulon snmp plugins