Icinga 2 bug fix release 2.2.4

We have just released version 2.2.4. This release fixes a number of bugs:

* Bug #6943: Configured recurring downtimes not applied on saturdays
* Bug #7660: livestatus / nsca / etc submits are ignored during reload
* Bug #7685: kUn-Bashify mail-{host,service}-notification.sh
* Bug #8128: Icinga 2.2.2 build fails on SLES11SP3 because of changed boost dependency
* Bug #8131: vfork() hangs on OS X
* Bug #8162: Satellite doesn’t use manually supplied ‘local zone name’
* Bug #8192: Feature statusdata shows wrong host notification options
* Bug #8201: Update Icinga Web 2 uri to /icingaweb2
* Bug #8214: Fix YAJL detection on Debian squeeze
* Bug #8222: inconsistent URL http(s)://www.icinga.org
* Bug #8223: Typos in readme file for windows plugins
* Bug #8245: check_ssmtp command does NOT support mail_from
* Bug #8256: Restart fails after deleting a Host
* Bug #8288: Crash in DbConnection::ProgramStatusHandler
* Bug #8295: Restart of Icinga hangs
* Bug #8299: Scheduling downtime for host and all services only schedules services
* Bug #8311: Segfault in Checkable::AddNotification
* Bug #8321: enable_event_handlers attribute is missing in status.dat
* Bug #8368: Output in “node wizard” is confusing

You can look up the bug ID in our issue tracker at dev.icinga.org. Updated packages should be available shortly.

Icinga 2 bugfix release 2.2.1 – Support Arrays in Command Arguments

Since we released Icinga 2 2.2.0 right before OSMC 2014, we received quite a lot of feedback and also bug reports – thank you! We’ve fixed quite a few bugs for 2.2.1 and also one rather annoying design bug – others might think of it as a feature.

Arrays in Command Arguments

While the command arguments for CheckCommand objects are a pretty nifty idea, some check plugins require specific parameters: Sometimes with a prepended parameter key, sometimes just multiple values. Most prominent examples are:

./check_disk .... -p '/' -p '/var' -p '/tmp'

./check_nrpe .... -a 'arg1' 'arg2' 'arg3'

This did not work in previous versions, so we came up with a better idea:

  1. Support arrays in runtime macros
  2. Allow to define if the key patameter is repeated (e.g. check_disk) or not (e.g. check_nrpe)

That way you can now define an array of disks and pass that value directly to the disk CheckCommand shipped with Icinga 2 using the disk_partitions custom attribute, as shown in the screenshots below. repeat_key is enabled by default.

icinga2_2.2.1_macros_arrays_config icinga2_2.2.1_macros_arrays_command_log icinga2_2.2.1_macros_arrays_icingaweb2

You can also use this new feature for your own check_icmp command definition too, as shown in the documentation.


Package builds are available soon. While downloading and upgrading to the latest and greatest, make sure to read the Changelog.

Enjoy Icinga 2 and please send your feedback, bug reports & feature requests to our development tracker.


More details at the development tracker.

  • Support arrays in [command argument macros](#command-passing-parameters) #6709
    • Allows to define multiple parameters for [nrpe -a](#plugin-check-command-nrpe), [nscp -l](#plugin-check-command-nscp), [disk -p](#plugin-check-command-disk), [dns -a](#plugin-check-command-dns).
  • Bugfixes
  • Feature #6709: Support for arrays in macros
  • Feature #7463: Update spec file to use yajl-devel
  • Feature #7739: The classicui Apache conf doesn’t support Apache 2.4
  • Feature #7747: Increase default timeout for NRPE checks
  • Feature #7867: Document how arrays in macros work
  • Bug #7173: service icinga2 status gives wrong information when run as unprivileged user
  • Bug #7602: livestatus large amount of submitting unix socket command results in broken pipes
  • Bug #7613: icinga2 checkconfig should fail if group given for command files does not exist
  • Bug #7671: object and template with the same name generate duplicate object error
  • Bug #7708: Built-in commands shouldn’t be run on the master instance in remote command execution mode
  • Bug #7725: Windows wizard uses incorrect CLI command
  • Bug #7726: Windows wizard is missing –zone argument
  • Bug #7730: Restart Icinga – Error Restoring program state from file ‘/var/lib/icinga2/icinga2.state’
  • Bug #7735: 2.2.0 has out-of-date icinga2 man page
  • Bug #7738: Systemd rpm scripts are run in wrong package
  • Bug #7740: /usr/sbin/icinga-prepare-dirs conflicts in the bin and common package
  • Bug #7741: Icinga 2.2 misses the build requirement libyajl-devel for SUSE distributions
  • Bug #7743: Icinga2 node add failed with unhandled exception
  • Bug #7754: Incorrect error message for localhost
  • Bug #7770: Objects created with node update-config can’t be seen in Classic UI
  • Bug #7786: Move the icinga2-prepare-dirs script elsewhere
  • Bug #7806: !in operator returns incorrect result
  • Bug #7828: Verify if master radio box is disabled in the Windows wizard
  • Bug #7847: Wrong information in section “Linux Client Setup Wizard for Remote Monitoring”
  • Bug #7862: Segfault in CA handling
  • Bug #7868: Documentation: Explain how unresolved macros are handled
  • Bug #7890: Wrong permission in run directory after restart
  • Bug #7896: Fix Apache config in the Debian package

Icinga Web 2 is Here!

We walked a very long way  since we have started working on Icinga Web 2 back in 2013, but now we finally made it. Icinga Web 2 is the successor of (you guessed it) Icinga Web. All the things we have learned from previous projects, various experiences from users around the globe and our community motivates us for such a long time to do things different. We still love Icinga Web and we’ll keep it in maintenance for the next years.

Icinga Web was very good for the last years but now we’re taking the next level. Icinga Web 2 is lightweight like the classic Icinga CGIs and flexible like Icinga Web and last but not least very easy to extend and to embed into other projects.

It supports multiple authentication methods like Active Directory, LDAP or database and multiple monitoring backends, i.e. IDO and Livestatus.

We support Icinga 1.x and Icinga 2 and we focussed on performance, usability and YOU. Download the first beta release over here at GitHub and give us as much feedback as possible.



Icinga 2 release 2.2.0 – Agent, Cli & Apply For Rules

When releasing Icinga 2 in its final version, we got quite a lot of feedback on why there is no agent, and how to monitor remote clients. Back in the beginning of 2014 we already had an idea on how to implement it, but you’d better design, re-design and even re-design such an important feature last. Especially when there are existing solutions out there that users can adopt.

Remote Clients – the “Agent”

icinga2_execute_remote_checksThat is merely the reason why everything took longer than expected. Furthermore, an “agent” is understood quite differently by different users. One thinks of a full-featured Icinga 2 instance with local configuration, local check scheduler and host/service discovery on the master. Others just want to a secure way of executing checks remotely, and drop the old-fashioned insecure NRPE protocol. And yet, users don’t care about their operating system – an agent must run on Linux, Unix – and Windows. Luckily Icinga 2 was designed to work on Windows from conception. Before you continue reading – all the mentioned roles and distributions work and have been implemented in this release 2.2.0 already.

Installation & CLI idea

But there is more – how to safely install that agent? While installing an Icinga 2 (HA) Cluster is relatively easy, it still requires knowledge on SSL certificates and other manual configuration steps. So we noticed that many users struggled with it. And such a thing just for an agent? No, there must be something more simple. In the design and concept phase of the agent bits in Icinga 2, we came up with our very own cli implementation. It supports you by adding setup wizards for master and client nodes, doing all the SSL setup magic. Furthermore, the Icinga 2 cluster protocol was extended to support CSR-Auto-Signing. Simply said – your client nodes can be installed with a single generated ticket number, no need for local SSL certificates.

Going further, remote satellite nodes with their local config will report their objects to the central master. There are cli commands to assist you in adding the nodes, black/whitelisting hosts and services and also generating local configuration on the master. There is plenty of newly written documentation for that, so be sure to check it out. Oh, and if you don’t require that, and just want to execute remote commands – that’s all in there as well.


CLI with Auto-Completion

That cli framewicinga2_cli_command_feature_auto_completionork also supports context based bash auto-completion. We’ve also integrated existing scripts like “feature enable” or “object list” into the cli, and removed the old shell and python scripts. The “python-icinga2″ package is gone for that very reason too. Generating your CA and SSL certificates is also supported out of the box. Similar to the agent setup on Linux, the native Windows installer uses the icinga2 cli commands too.


More dynamic configuration with apply for

While this is already one of the most epic things we’ve ever implemented – cli & agent – we did not stop there. Users have been asking, why custom attributes (the vars. identifier) could only hold strings, numbers and boolean values but not arrays or dictionaries. The latter could be used like groups for better apply rules expressions.

So, we added that support, and decided to dump the values as json into the existing backends, adding a new column “is_json” to allow existing interfaces to show that correctly, as seen in Icinga Web 2 already. But we did not stop here – why not extend the existing apply rules to loop over arrays/dictionaries? That way you can save yourself a lot of typing and generate new service apply rules based on host custom attributes. Sounds complicated, but once you’ve tried it, you’ll never want to go back. That gets even more interesting when you generate the host from your CMDB, Puppet, <insert #devops tool here>. It certainly provides an even more dynamic approach. Take a look at the configuration screenshots for the new “apply <objecttype> <optionalprefix> for (key => value in dict)” syntax :)

icinga2_custom_dict_arr_attributes_host icinga2_custom_dict_arr_attributes_services icinga2_custom_dict_arr_attributes_icingaweb2


More config magic – apply with variables

Iicinga2_cli_command_object_list_filtern a different situation – back with the agent, and its dependencies, we’ve learnt, that setting local variables in apply rules should be able to read host or service attributes in that scope. For instance, you would want to generate host and service dependencies for your vmware or cloud farm, and set the parent_host_name attribute directly in the child hosts inherited template. No need for duplicate dependency rules – control them using apply and a locally-scoped variable set. You’ll find a more telling example on the doumentation as well, and also that this feature isn’t dependency-exclusive – it can be used for all apply rules.

And while that could become tremendously complicated, the “object list” cli command allows you to filter by name or type wildcard strings. Plus, we’ve worked a lot on possible configuration errors, making them as telling as possible, even for complicated nested apply rules.


More Features: Graphite, GELF

Apart from the core feature set, we noticed at Icinga Camp San Francisco that many already use the GraphiteWriter in production – which is freaking awesome! While chatting with Grant from SpaceX, we’ve also made sure that everyone out there can configure the host and service prefix template, thus adding more statistics and making it more usable afterall. You’ll also recognize the GelfWriter feature, which was contributed by the graylog2 developers and we found it so nice to include it in 2.2. There’s a talk on this years OSMC on that topic, more details once OSMC is over.


Get Icinga 2

Last but not least – thanks everyone for their ongoing feedback. The documentation and also the example configuration has been overhauled in many places. Be it better explanations of apply rules and their expressions in general, or detailed examples on how to use the new apply for rules. We’ve even shipped in an example configuration. The old strategy with single objects just does not work that well now with ever more dynamic apply rules, and only confuses you, the user ;)

The cluster vagrant boxes ship new demo configurations for cluster and remote check execution bits, if you want to give it a try.

Package builds are running, and hopefully everyone gets 2.2.0 asap. While downloading, please be sure to read the Changelog and all the changes introduced with this release. They require your attention! :)

As always, thanks for using Icinga 2 and watch out for Icinga Web 2 :) Feedback, bugs or feature requests are always welcome!


PS: This video was taken during Icinga 2 development. Get the Windows Agent from packages.icinga.org and try it yourself!


2.2.0 Changelog

For details on the below issues see https://dev.icinga.org/versions/200


  • DB IDO schema update to version `1.12.0`
    • schema files in `lib/db_ido_{mysql,pgsql}/schema` (source)
    • Table `programstatus`: New column `program_version`
    • Table `customvariables` and `customvariablestatus`: New column `is_json` (required for custom attribute array/dictionary support)
  • New features
    • GelfWriter: Logging check results, state changes, notifications to GELF (graylog2, logstash) #7619
    • Agent/Client/Node framework #7249
    • Windows plugins for the client/agent parts #7242 #7243
  • New CLI commands #7245
    • `icinga2 feature {enable,disable}` replaces `icinga2-{enable,disable}-feature` script #7250
    • `icinga2 object list` replaces `icinga2-list-objects` script #7251
    • `icinga2 pki` replaces` icinga2-build-{ca,key}` scripts #7247
    • `icinga2 repository` manages `/etc/icinga2/repository.d` which must be included in `icinga2.conf` #7255
    • `icinga2 node` cli command provides node (master, satellite, agent) setup (wizard) and management functionality #7248
    • `icinga2 daemon` for existing daemon arguments (`-c`, `-C`). Removed `-u` and `-g` parameters in favor of [init.conf](#init-conf).
    • bash auto-completion & terminal colors #7396
  • Configuration
    • Former `localhost` example host is now defined in hosts.conf #7594
    • All example services moved into advanced apply rules in services.conf
    • Updated downtimes configuration example in downtimes.conf #7472
    • Updated notification apply example in notifications.conf #7594
    • Support for object attribute ‘zone’ #7400
    • Support setting object variables in apply rules #7479
    • Support arrays and dictionaries in custom attributes #6544 #7560
    • Add apply for rules for advanced dynamic object generation #7561
    • New attribute `accept_commands` for ApiListener #7559
    • New init.conf file included first containing new constants `RunAsUser` and `RunAsGroup`.
  • Cluster
    • Add CSR Auto-Signing support using generated ticket #7244
    • Allow to execute remote commands on endpoint clients #7559
  • Perfdata
    • PerfdataWriter: Don’t change perfdata, pass through from plugins #7268
    • GraphiteWriter: Add warn/crit/min/max perfdata and downtime_depth stats values #7366 #6946
  • Packages
    • `python-icinga2` package dropped in favor of integrated cli commands #7245
    • Windows Installer for the agent parts #7243

Please remove `conf.d/hosts/localhost*` after verifying your updated configuration!



  • Feature #6544: Support for array in custom variable.
  • Feature #6946: Add downtime depth as statistic metric for GraphiteWriter
  • Feature #7187: Document how to use multiple assign/ignore statements with logical “and” & “or”
  • Feature #7199: Cli commands: add filter capability to ‘object list’
  • Feature #7241: Windows Wizard
  • Feature #7242: Windows plugins
  • Feature #7243: Windows installer
  • Feature #7244: CSR auto-signing
  • Feature #7245: Cli commands
  • Feature #7246: Cli command framework
  • Feature #7247: Cli command: pki
  • Feature #7248: Cli command: Node
  • Feature #7249: Node Repository
  • Feature #7250: Cli command: Feature
  • Feature #7251: Cli command: Object
  • Feature #7252: Cli command: SCM
  • Feature #7253: Cli Commands: Node Repository Blacklist & Whitelist
  • Feature #7254: Documentation: Agent/Satellite Setup
  • Feature #7255: Cli command: Repository
  • Feature #7262: macro processor needs an array printer
  • Feature #7319: Documentation: Add support for locally-scoped variables for host/service in applied Dependency
  • Feature #7334: GraphiteWriter: Add support for customized metric prefix names
  • Feature #7356: Documentation: Cli Commands
  • Feature #7366: GraphiteWriter: Add warn/crit/min/max perfdata values if existing
  • Feature #7370: CLI command: variable
  • Feature #7391: Add program_version column to programstatus table
  • Feature #7396: Implement generic color support for terminals
  • Feature #7400: Remove zone keyword and allow to use object attribute ‘zone’
  • Feature #7415: CLI: List disabled features in feature list too
  • Feature #7421: Add -h next to –help
  • Feature #7423: Cli command: Node Setup
  • Feature #7452: Replace cJSON with a better JSON parser
  • Feature #7465: Cli command: Node Setup Wizard (for Satellites and Agents)
  • Feature #7467: Remove virtual agent name feature for localhost
  • Feature #7472: Update downtimes.conf example config
  • Feature #7478: Documentation: Mention ‘icinga2 object list’ in config validation
  • Feature #7479: Set host/service variable in apply rules
  • Feature #7480: Documentation: Add host/services variables in apply rules
  • Feature #7504: Documentation: Revamp getting started with 1 host and multiple (service) applies
  • Feature #7514: Documentation: Move troubleshooting after the getting started chapter
  • Feature #7524: Documentation: Explain how to manage agent config in central repository
  • Feature #7543: Documentation for arrays & dictionaries in custom attributes and their usage in apply rules for
  • Feature #7559: Execute remote commands on the agent w/o local objects by passing custom attributes
  • Feature #7560: Support dictionaries in custom attributes
  • Feature #7561: Generate objects using apply with foreach in arrays or dictionaries (key => value)
  • Feature #7566: Implement support for arbitrarily complex indexers
  • Feature #7594: Revamp sample configuration: add NodeName host, move services into apply rules schema
  • Feature #7596: Plugin Check Commands: disk is missing ‘-p’, ‘x’ parameter
  • Feature #7619: Add GelfWriter for writing log events to graylog2/logstash
  • Feature #7620: Documentation: Update Icinga Web 2 installation
  • Feature #7622: Icinga 2 should use less RAM
  • Feature #7680: Conditionally enable MySQL and PostgresSQL, add support for FreeBSD and DragonFlyBSD
  • Bug #6547: delaying notifications with times.begin should postpone first notification into that window
  • Bug #7257: default value for “disable_notifications” in service dependencies is set to “false”
  • Bug #7268: Icinga2 changes perfdata order and removes maximum
  • Bug #7272: icinga2 returns exponential perfdata format with check_nt
  • Bug #7275: snmp-load checkcommand has wrong threshold syntax
  • Bug #7276: SLES (Suse Linux Enterprise Server) 11 SP3 package dependency failure
  • Bug #7302: ITL: check_procs and check_http are missing arguments
  • Bug #7324: config parser crashes on unknown attribute in assign
  • Bug #7327: Icinga2 docs: link supported operators from sections about apply rules
  • Bug #7331: Error messages for invalid imports missing
  • Bug #7338: Docs: Default command timeout is 60s not 5m
  • Bug #7339: Importing a CheckCommand in a NotificationCommand results in an exception without stacktrace.
  • Bug #7349: Documentation: Wrong check command for snmp-int(erface)
  • Bug #7351: snmp-load checkcommand has a wrong “-T” param value
  • Bug #7359: Setting snmp_v2 can cause snmp-manubulon-command derived checks to fail
  • Bug #7365: Typo for “HTTP Checks” match in groups.conf
  • Bug #7369: Fix reading perfdata in compat/checkresultreader
  • Bug #7372: custom attribute name ‘type’ causes empty vars dictionary
  • Bug #7373: Wrong usermod command for external command pipe setup
  • Bug #7378: Commands are auto-completed when they shouldn’t be
  • Bug #7379: failed en/disable feature should return error
  • Bug #7380: Debian package root permissions interfere with icinga2 cli commands as icinga user
  • Bug #7392: Schema upgrade files are missing in /usr/share/icinga2-ido-{mysql,pgsql}
  • Bug #7417: CMake warnings on OS X
  • Bug #7428: Documentation: 1-about contribute links to non-existing report a bug howto
  • Bug #7433: Unity build fails on RHEL 5
  • Bug #7446: When replaying logs the secobj attribute is ignored
  • Bug #7473: Performance data via API is broken
  • Bug #7475: can’t assign Service to Host in nested HostGroup
  • Bug #7477: Fix typos and other small corrections in documentation
  • Bug #7482: OnStateLoaded isn’t called for objects which don’t have any state
  • Bug #7483: Hosts/services should not have themselves as parents
  • Bug #7495: Utility::GetFQDN doesn’t work on OS X
  • Bug #7503: Icinga2 fails to start due to configuration errors
  • Bug #7520: Use ScriptVariable::Get for RunAsUser/RunAsGroup
  • Bug #7536: Object list dump erraneously evaluates template definitions
  • Bug #7537: Nesting an object in a template causes the template to become non-abstract
  • Bug #7538: There is no __name available to nested objects
  • Bug #7573: link missing in documentation about livestatus
  • Bug #7577: Invalid checkresult object causes Icinga 2 to crash
  • Bug #7579: only notify users on recovery which have been notified before (not-ok state)
  • Bug #7585: Nested templates do not work (anymore)
  • Bug #7586: Exception when executing check
  • Bug #7597: Compilation Error with boost 1.56 under Windows
  • Bug #7599: Plugin execution on Windows does not work
  • Bug #7617: mkclass crashes when called without arguments
  • Bug #7623: Missing state filter ‘OK’ must not prevent recovery notifications being sent
  • Bug #7624: Installation on Windows fails
  • Bug #7625: IDO module crashes on Windows
  • Bug #7646: Get rid of static boost::mutex variables
  • Bug #7648: Unit tests fail to run
  • Bug #7650: Wrong set of dependency state when a host depends on a service
  • Bug #7681: CreateProcess fails on Windows 7
  • Bug #7688: DebugInfo is missing for nested dictionaries

Icinga 2 bugfix release 2.1.1

gate_bridgeWhile preparing for our very first Icinga Camp in San Francisco and planning the next feature release, we’ve also been catching up with some smaller bugs in the 2.1.0 release.

Icinga 2 version 2.1.1 is tagged on Github, package builds for distributions should be available soon.

We’ll have Icinga 2 and the latest Icinga Web 2 dev snapshot in the Vagrant boxes with us next week – see you in the city! :-)

Changelog 2.1.1

  • Bug #6147: Link libcJSON against libm
  • Bug #6696: make test fails on openbsd
  • Bug #6841: Too many queued messages
  • Bug #6862: SSL_read errors during restart
  • Bug #6981: SSL errors with interleaved SSL_read/write
  • Bug #7029: icinga2.spec: files-attr-not-set for python-icinga2 package
  • Bug #7032: “Error parsing performance data” in spite of “enable_perfdata = false”
  • Bug #7036: Remove validator for the Script type
  • Bug #7037: icinga2-list-objects doesn’t work with Python 3
  • Bug #7038: Fix rpmlint errors
  • Bug #7042: icinga2-list-objects complains about Umlauts and stops output
  • Bug #7044: icinga2 init-script terminates with exit code 0 if $DAEMON is not in place or not executable
  • Bug #7047: service icinga2 status – prints cat error if the service is stopped
  • Bug #7058: Exit code is not initialized for some failed checks
  • Bug #7065: pipe2 returns ENOSYS on GNU Hurd and Debian kfreebsd
  • Bug #7072: GraphiteWriter should ignore empty perfdata value
  • Bug #7080: Missing differentiation between service and systemctl
  • Bug #7096: new SSL Errors with too many queued messages
  • Bug #7115: Build fails on Haiku
  • Bug #7123: Manubulon-Plugin conf Filename wrong
  • Bug #7139: GNUInstallDirs.cmake outdated
  • Bug #7167: Segfault using cluster in TlsStream::IsEof
  • Bug #7168: fping4 doesn’t work correctly with the shipped command-plugins.conf
  • Bug #7186: Livestatus hangs from time to time
  • Bug #7195: fix memory leak ido_pgsql
  • Bug #7210: clarify on db ido upgrades
  • Feature #6719: Change log message for checking/sending notifications
  • Feature #7028: Document how to use @ to escape keywords
  • Feature #7033: Add include guards for mkclass files
  • Feature #7034: Ensure that namespaces for INITIALIZE_ONCE and REGISTER_TYPE are truly unique
  • Feature #7035: Implement support for unity builds
  • Feature #7039: Figure out a better way to set the version for snapshot builds
  • Feature #7040: Unity builds: Detect whether __COUNTER__ is available
  • Feature #7041: Enable unity build for RPM/Debian packages
  • Feature #7070: Explain event commands and their integration by a real life example (httpd restart via ssh)
  • Feature #7158: Extend documentation for icinga-web on Debian systems

Icinga 2 Release News: 2.1.0 is out!

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.org and streamline the Icinga Web 2 Docs viewer, freshen up our dev.icinga.org, 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.org/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