About Icinga 2

What is Icinga 2?

Icinga 2 is an open source monitoring system which checks the availability of your network resources, notifies users of outages, and generates performance data for reporting.

Scalable and extensible, Icinga 2 can monitor large, complex environments across multiple locations.


Icinga 2 and the Icinga 2 documentation are licensed under the terms of the GNU General Public License Version 2, you will find a copy of this license in the LICENSE file included in the source package.


Check the project website at https://www.icinga.com for status updates. Join the community channels for questions or ask an Icinga partner for professional support.


There are many ways to contribute to Icinga – whether it be sending patches, testing, reporting bugs, or reviewing and updating the documentation. Every contribution is appreciated!

Please continue reading in the Contributing chapter.

Icinga 2 Development

The Git repository is located on GitHub.

Icinga 2 is written in C++ and can be built on Linux/Unix and Windows. Read more about development builds in the INSTALL.md file.

What’s New

What’s New in Version 2.6.3


This is a bugfix release which addresses a number of bugs we’ve found since 2.6.2 was released. It also contains a number of improvements for the Icinga documentation.


  • Feature 4955 (Documentation): Review CheckCommand documentation including external URLs
  • Feature 5057 (Documentation): Update Security section in the Distributed Monitoring chapter
  • Feature 5055 (Documentation): mysql_socket attribute missing in the documentation for the mysql CheckCommand
  • Feature 5035 (Documentation): Docs: Typo in Distributed Monitoring chapter
  • Feature 5029 (Documentation): Advanced topics: Wrong acknowledgement notification filter
  • Feature 5030 (Documentation): Advanced topics: Mention the API and explain stick acks, fixed/flexible downtimes
  • Feature 3133 (Documentation): [dev.icinga.com #9583] Add practical examples for apply expressions
  • Feature 4996 (Documentation): documentation: mixed up host names in 06-distributed-monitoring.md
  • Feature 4980 (Documentation): Add OpenBSD and AlpineLinux package repositories to the documentation
  • Feature 4954 (Documentation): Add an example for /v1/actions/process-check-result which uses filter/type


  • Bug 5080 (IDO): Missing index use can cause icinga_downtimehistory queries to hang indefinitely
  • Bug 4603 (IDO): [dev.icinga.com #12597] With too many comments, Icinga reload process won’t finish reconnecting to database
  • Bug 4989 (Check Execution): Icinga daemon runs with nice 5 after reload
  • Bug 4930 (Cluster): Change “Discarding ‘config update object’” log messages to notice log level

What’s New in Version 2.6.2


This is a bugfix release which addresses a crash that can occur when removing configuration files for objects which have been deleted via the API.


  • Bug 4952 (API): Icinga crashes while trying to remove configuration files for objects which no longer exist

What’s New in Version 2.6.1


This release addresses a number of bugs we have identified in version 2.6.0. The documentation changes reflect our recent move to GitHub.


  • Feature 4950 (Documentation): doc/06-distributed-monitoring.md: Fix typo
  • Feature 4934 (Documentation): Update contribution section for GitHub
  • Feature 4923 (Documentation): [dev.icinga.com #14011] Migration to Github
  • Feature 4917 (Documentation): [dev.icinga.com #13969] Incorrect license file mentioned in README.md
  • Feature 4916 (Documentation): [dev.icinga.com #13967] Add travis-ci build status logo to README.md
  • Feature 4813 (libicinga): [dev.icinga.com #13345] Include argument name for log message about incorrect set_if values
  • Feature 4908 (Documentation): [dev.icinga.com #13897] Move domain to icinga.com
  • Feature 4803 (Documentation): [dev.icinga.com #13277] Update Repositories in Docs
  • Feature 4885 (Documentation): [dev.icinga.com #13671] SLES 12 SP2 libboost_thread package requires libboost_chrono
  • Feature 4868 (Documentation): [dev.icinga.com #13569] Add more build details to INSTALL.md
  • Feature 4869 (Documentation): [dev.icinga.com #13571] Update RELEASE.md


  • Bug 4950 (IDO): IDO schema update is not compatible to MySQL 5.7
  • Bug 4882 (libbase): [dev.icinga.com #13655] Crash - Error: parse error: premature EOF bug High libbase
  • Bug 4867 (libbase) [dev.icinga.com #13567] SIGPIPE shutdown on config reload
  • Bug 4874 (IDO) [dev.icinga.com #13617] IDO: Timestamps in PostgreSQL may still have a time zone offset
  • Bug 4877 (IDO) [dev.icinga.com #13633] IDO MySQL schema not working on MySQL 5.7
  • Bug 4870 (Packages): [dev.icinga.com #13573] SLES11 SP4 dependency on Postgresql >= 8.4

What’s New in Version 2.6.0


  • Client/Satellite setup
    • The “bottom up” client configuration mode has been deprecated. Check #13255 for additional details and migration.
  • Linux/Unix daemon
    • Ensure that Icinga 2 does not leak file descriptors to executed commands.
    • There are 2 processes started instead of previously just one process.
  • Windows client
    • Package bundles NSClient++ 0.5.0. ITL CheckCommands have been updated too.
    • Allow to configure the user account for the Icinga 2 service. This is useful if several checks require administrator permissions (e.g. check_update.exe)
    • Bugfixes for check plugins
  • Cluster and API
    • Provide location information for objects and templates in the API
    • Improve log message for ignored config updates
    • Fix cluster resync problem with API created objects (hosts, downtimes, etc.)
    • Fix that API-created objects in a global zone are not synced to child endpoints
  • Notifications
    • Several bugfixes for downtime, custom and flapping notifications
  • New ITL CheckCommands: logstash, glusterfs, iostats
  • Package builds require a compiler which supports C++11 features (gcc-c++ >= 4.7, clang++)
  • DB IDO
    • Schema upgrade required (2.6.0.sql)
    • This update fixes timestamp columns required by Icinga Web 2 and might take a while. Please ensure to schedule a maintenance task for your database upgrade.


  • Feature 12566 (API): Provide location information for objects and templates in the API
  • Feature 13255 (Cluster): Deprecate cluster/client mode “bottom up” w/ repository.d and node update-config
  • Feature 12844 (Cluster): Check whether nodes are synchronizing the API log before putting them into UNKNOWN
  • Feature 12623 (Cluster): Improve log message for ignored config updates
  • Feature 12635 (Configuration): Suppress compiler warnings for auto-generated code
  • Feature 12575 (Configuration): Implement support for default templates
  • Feature 12554 (Configuration): Implement a command-line argument for “icinga2 console” to allow specifying a script file
  • Feature 12544 (Configuration): Remove unused method: ApplyRule::DiscardRules
  • Feature 10675 (Configuration): Command line option for config syntax validation
  • Feature 13491 (Documentation): Update README.md and correct project URLs
  • Feature 13457 (Documentation): Add a note for boolean values in the disk CheckCommand section
  • Feature 13455 (Documentation): Troubleshooting: Add examples for fetching the executed command line
  • Feature 13443 (Documentation): Update Windows screenshots in the client documentation
  • Feature 13437 (Documentation): Add example for concurrent_checks in CheckerComponent object type
  • Feature 13395 (Documentation): Add a note about removing “conf.d” on the client for “top down command endpoint” setups
  • Feature 13327 (Documentation): Update API and Library Reference chapters
  • Feature 13319 (Documentation): Add a note about pinning checks w/ command_endpoint
  • Feature 13297 (Documentation): Add a note about default template import to the CheckCommand object
  • Feature 13199 (Documentation): Doc: Swap packages.icinga.com w/ DebMon
  • Feature 12834 (Documentation): Add more Timeperiod examples in the documentation
  • Feature 12832 (Documentation): Add an example of multi-parents configuration for the Migration chapter
  • Feature 12587 (Documentation): Update service monitoring and distributed docs
  • Feature 12449 (Documentation): Add information about function ‘range’
  • Feature 13449 (ITL): Add tempdir attribute to postgres CheckCommand
  • Feature 13435 (ITL): Add sudo option to mailq CheckCommand
  • Feature 13433 (ITL): Add verbose parameter to http CheckCommand
  • Feature 13431 (ITL): Add timeout option to mysql_health CheckCommand
  • Feature 12762 (ITL): Add a radius CheckCommand for the radius check provide by nagios-plugins
  • Feature 12755 (ITL): Add CheckCommand definition for check_logstash
  • Feature 12739 (ITL): Add timeout option to oracle_health CheckCommand
  • Feature 12613 (ITL): Add CheckCommand definition for check_iostats
  • Feature 12516 (ITL): ITL - check_vmware_esx - specify a datacenter/vsphere server for esx/host checks
  • Feature 12040 (ITL): Add CheckCommand definition for check_glusterfs
  • Feature 12576 (Installation): Use raw string literals in mkembedconfig
  • Feature 12564 (Installation): Improve detection for the -flto compiler flag
  • Feature 12552 (Installation): Set versions for all internal libraries
  • Feature 12537 (Installation): Update cmake config to require a compiler that supports C++11
  • Feature 9119 (Installation): Make the user account configurable for the Windows service
  • Feature 12733 (Packages): Windows Installer should include NSClient++ 0.5.0
  • Feature 12679 (Plugins): Review windows plugins performance output
  • Feature 13225 (Tests): Add unit test for notification state/type filter checks
  • Feature 12530 (Tests): Implement unit tests for state changes
  • Feature 12562 (libbase): Use lambda functions for INITIALIZE_ONCE
  • Feature 12561 (libbase): Use ‘auto’ for iterator declarations
  • Feature 12555 (libbase): Implement an rvalue constructor for the String and Value classes
  • Feature 12538 (libbase): Replace BOOST_FOREACH with range-based for loops
  • Feature 12536 (libbase): Add -fvisibility=hidden to the default compiler flags
  • Feature 12510 (libbase): Implement an environment variable to keep Icinga from closing FDs on startup
  • Feature 12509 (libbase): Avoid unnecessary string copies
  • Feature 12507 (libbase): Remove deprecated functions
  • Feature 9182 (libbase): Better message for apply errors
  • Feature 12578 (libicinga): Make sure that libmethods is automatically loaded even when not using the ITL


  • Bug 12860 (API): Icinga crashes while deleting a config file which doesn’t exist anymore
  • Bug 12667 (API): Crash in HttpRequest::Parse while processing HTTP request
  • Bug 12621 (API): Invalid API filter error messages
  • Bug 11541 (API): Objects created in a global zone are not synced to child endpoints
  • Bug 11329 (API): API requests from execute-script action are too verbose
  • Bug 13419 (CLI): Wrong help string for node setup cli command argument –master_host
  • Bug 12741 (CLI): Parse error: “premature EOF” when running “icinga2 node update-config”
  • Bug 12596 (CLI): Last option highlighted as the wrong one, even when it is not the culprit
  • Bug 13151 (Cluster): Crash w/ SendNotifications cluster handler and check result with empty perfdata
  • Bug 11684 (Cluster): Cluster resync problem with API created objects
  • Bug 10897 (Compat): SCHEDULE_AND_PROPAGATE_HOST_DOWNTIME command missing
  • Bug 10896 (Compat): SCHEDULE_AND_PROPAGATE_TRIGGERED_HOST_DOWNTIME command missing
  • Bug 12749 (Configuration): Configuration validation fails when setting tls_protocolmin to TLSv1.2
  • Bug 12633 (Configuration): Validation does not highlight the correct attribute
  • Bug 12571 (Configuration): Debug hints for dictionary expressions are nested incorrectly
  • Bug 12556 (Configuration): Config validation shouldnt allow ‘endpoints = [ “” ]’
  • Bug 13221 (DB IDO): PostgreSQL: Don’t use timestamp with timezone for UNIX timestamp columns
  • Bug 12558 (DB IDO): Getting error during schema update
  • Bug 12514 (DB IDO): Don’t link against libmysqlclient_r
  • Bug 10502 (DB IDO): MySQL 5.7.9, Incorrect datetime value Error
  • Bug 13519 (Documentation): “2.1.4. Installation Paths” should contain systemd paths
  • Bug 13517 (Documentation): Update “2.1.3. Enabled Features during Installation” - outdated “feature list”
  • Bug 13515 (Documentation): Update package instructions for Fedora
  • Bug 13411 (Documentation): Missing API headers for X-HTTP-Method-Override
  • Bug 13407 (Documentation): Fix example in PNP template docs
  • Bug 13267 (Documentation): Docs: Typo in “CLI commands” chapter
  • Bug 12933 (Documentation): Docs: wrong heading level for commands.conf and groups.conf
  • Bug 12831 (Documentation): Typo in the documentation
  • Bug 12822 (Documentation): Fix some spelling mistakes
  • Bug 12725 (Documentation): Add documentation for logrotation for the mainlog feature
  • Bug 12681 (Documentation): Corrections for distributed monitoring chapter
  • Bug 12664 (Documentation): Docs: Migrating Notification example tells about filters instead of types
  • Bug 12662 (Documentation): GDB example in the documentation isn’t working
  • Bug 12594 (Documentation): Typo in distributed monitoring docs
  • Bug 12577 (Documentation): Fix help output for update-links.py
  • Bug 12995 (Graphite): Performance data writer for Graphite : Values without fraction limited to 2147483647 (7FFFFFFF)
  • Bug 12849 (ITL): Default values for check_swap are incorrect
  • Bug 12838 (ITL): snmp_miblist variable to feed the -m option of check_snmp is missing in the snmpv3 CheckCommand object
  • Bug 12747 (ITL): Problem passing arguments to nscp-local CheckCommand objects
  • Bug 12588 (ITL): Default disk plugin check should not check inodes
  • Bug 12586 (ITL): Manubulon: Add missing procurve memory flag
  • Bug 12573 (ITL): Fix code style violations in the ITL
  • Bug 12570 (ITL): Incorrect help text for check_swap
  • Bug 12535 (Installation): logrotate file is not properly generated when the logrotate binary resides in /usr/bin
  • Bug 13205 (Notifications): Recovery notifications sent for Not-Problem notification type if notified before
  • Bug 12892 (Notifications): Flapping notifications sent for soft state changes
  • Bug 12670 (Notifications): Forced custom notification is setting “force_next_notification”: true permanently
  • Bug 12560 (Notifications): Don’t send Flapping* notifications when downtime is active
  • Bug 12549 (Notifications): Fixed downtimes scheduled for a future date trigger DOWNTIMESTART notifications
  • Bug 12276 (Perfdata): InfluxdbWriter does not write state other than 0
  • Bug 12155 (Plugins): check_network performance data in invalid format - ingraph
  • Bug 10489 (Plugins): Windows Agent: performance data of check_perfmon
  • Bug 10487 (Plugins): Windows Agent: Performance data values for check_perfmon.exe are invalid sometimes
  • Bug 9831 (Plugins): Implement support for resolving DNS hostnames in check_ping.exe
  • Bug 12940 (libbase): SIGALRM handling may be affected by recent commit
  • Bug 12718 (libbase): Crash in ClusterEvents::SendNotificationsAPIHandler
  • Bug 12545 (libbase): Add missing initializer for WorkQueue::m_NextTaskID
  • Bug 12534 (libbase): Fix compiler warnings
  • Bug 8900 (libbase): File descriptors are leaked to child processes which makes SELinux unhappy
  • Bug 13275 (libicinga): Icinga tries to delete Downtime objects that were statically configured
  • Bug 13103 (libicinga): Config validation crashes when using command_endpoint without also having an ApiListener object
  • Bug 12602 (libicinga): Remove unused last_in_downtime field
  • Bug 12592 (libicinga): Unexpected state changes with max_check_attempts = 2
  • Bug 12511 (libicinga): Don’t update TimePeriod ranges for inactive objects