For months we have been working on one of the biggest and most important releases since the creation of Icinga 2. Icinga 2 version 2.11 includes improvements for performance, stability and scalability. After many changes of lines of code, additions and deletions we believe we’re finally there. But we want to have you on board, so we decided to go with a Release Candidate first. Today we’re happy to announce the general availability of this release!

As you may know, Icinga’s core and network stack is written from scratch in C++, specifically the REST API and network event handling. They caused problems, and the attempts the past releases couldn’t reliably make them go away. We’ve therefore decided to do something unusual and resource intensive: Rewrite the whole network stack by using modern programming techniques and throw away the old implementation. This is a huge step forward and some may say, this would be Icinga 3.

Coming late to the party, fixes for reload handling and unwanted notifications also turned into a long-awaited feature: Run Icinga 2 in foreground and let the new umbrella process handle restarts and reloads. Additionally to the issues we’re aiming to fix, this comes in very handy for (Docker) containers as well!

Lean back and enjoy more changes, fixes and features – our GitHub milestone counts 280+ issues and PRs. With all the changes in mind, we want to make sure that 2.11 will be a great release. Snapshot packages have been tested in the past, now it is time to provide you with a release candidate. Please put it into your test stages and let us know about fixed problems or things we need to fix prior the final release!

Scroll down for installation instructions from our testing repository.

 

Rewritten Network Stack

The low level network I/O with JSON-RPC and HTTP on top was written from scratch many years ago. Recent times have shown problems with hanging TLS connections, stalled HTTP requests and resource consuming operations with the Icinga network stack. Since our old code did not allow us to fix all these bugs, we decided to create a few PoCs with different libraries and technologies. This resulted in a rewrite based on the well-known and tested Boost library. The price to a stable REST API and cluster environment are updated Boost packages which we provide on packages.icinga.com for your convenience.

 

Improved Cluster Sync & High Availability for Features

The cluster config sync and the possibility to just deploy config files into “zones.d” is a key feature in Icinga. With 2.11, we’re adding a long-wanted feature to it: Staging for received configuration. This avoids deploying broken configuration directly into production.

Another thing tackled is the storage for created objects during runtime. In the past, we received reports that downtimes were missing after restart. The underlaying problems have now been fixed. 2.11 heals itself whenever things don’t turn out well, additionally the troubleshooting docs help you during your debugging sessions.

Last but not least, we added our HA mechanism (you know it from the IDO feature) to other features as well. When enabling features like Graphite or Elasticsearch you can now set the setting enable_ha=true on both sides. The feature will then run only on one node and the other will take over in the case of failure.

 

Enhanced Core

The JSON library has been replaced and modernized for full UTF8 support. This comes in preparation for the IcingaDB backend and also solves possible crashes we’ve seen on GitHub.

Notifications which would be triggered during the reload phase are now properly sent. Furthermore, when a host/service is still NOT-OK after a downtime ends, a problem notification is sent immediately.

There’s a bunch of smaller enhancements too: all_services for the schedule-downtime host action, on-demand CSR signing CLI tools, getenv() as DSL function and much more.

 

Documentation

For this release, we’re making a dedicated documentation available which includes all changes and updates. Please note that all the documentation links point to “v2.11-RC1” and not “latest” in the doc URLs. Icinga 2.11 comes with numerous additions and changes, and for the first time we’ve written an extensive upgrading documentation. Don’t be afraid, you don’t need to migrate things manually. Look around, there are many improvements for service monitoring, distributed monitoring, features, technical concepts, development and the upgrading chapter.

As always, prior to installing things, make sure to check the Changelog for v2.11.0-rc1!

 

Installation

These details follow the instruction for testing daily snapshot packages with the main difference that v2.11.0-rc1 is available in another repository on packages.icinga.com. 2.11 requires newer Boost packages provided in the release repository, therefore this is needed for testing the release candidate as well.

 

Debian

apt-get update
apt-get -y install apt-transport-https wget gnupg

wget -O - https://packages.icinga.com/icinga.key | apt-key add -

DIST=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release); \
 echo "deb https://packages.icinga.com/debian icinga-${DIST} main" > \
 /etc/apt/sources.list.d/${DIST}-icinga.list
 echo "deb-src https://packages.icinga.com/debian icinga-${DIST} main" >> \
 /etc/apt/sources.list.d/${DIST}-icinga.list

DIST=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release); \
 echo "deb http://packages.icinga.com/debian icinga-${DIST}-testing main" > \
 /etc/apt/sources.list.d/${DIST}-icinga-testing.list
 echo "deb-src http://packages.icinga.com/debian icinga-${DIST}-testing main" >> \
 /etc/apt/sources.list.d/${DIST}-icinga-testing.list

apt-get update

DIST=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release); \
apt-get install -t icinga-${DIST}-testing icinga2

On Debian Stretch, you also need to add the Backports repository before installation:

DIST=$(awk -F"[)(]+" '/VERSION=/ {print $2}' /etc/os-release); \
 echo "deb https://deb.debian.org/debian ${DIST}-backports main" > \
 /etc/apt/sources.list.d/${DIST}-backports.list

apt-get update

 

Ubuntu

apt-get update
apt-get -y install apt-transport-https wget gnupg

wget -O - https://packages.icinga.com/icinga.key | apt-key add -

. /etc/os-release; if [ ! -z ${UBUNTU_CODENAME+x} ]; then DIST="${UBUNTU_CODENAME}"; else DIST="$(lsb_release -c| awk '{print $2}')"; fi; \
 echo "deb https://packages.icinga.com/ubuntu icinga-${DIST} main" > \
 /etc/apt/sources.list.d/${DIST}-icinga.list
 echo "deb-src https://packages.icinga.com/ubuntu icinga-${DIST} main" >> \
 /etc/apt/sources.list.d/${DIST}-icinga.list

. /etc/os-release; if [ ! -z ${UBUNTU_CODENAME+x} ]; then DIST="${UBUNTU_CODENAME}"; else DIST="$(lsb_release -c| awk '{print $2}')"; fi; \
 echo "deb https://packages.icinga.com/ubuntu icinga-${DIST}-testing main" > \
 /etc/apt/sources.list.d/${DIST}-icinga-testing.list
 echo "deb-src https://packages.icinga.com/ubuntu icinga-${DIST}-testing main" >> \
 /etc/apt/sources.list.d/${DIST}-icinga-testing.list

. /etc/os-release; if [ ! -z ${UBUNTU_CODENAME+x} ]; then DIST="${UBUNTU_CODENAME}"; else DIST="$(lsb_release -c| awk '{print $2}')"; fi; \
apt-get install -t icinga-${DIST}-testing icinga2

 

RHEL/CentOS 7

yum -y install https://packages.icinga.com/epel/icinga-rpm-release-7-latest.noarch.rpm
yum -y install epel-release
yum makecache

cat >/etc/yum.repos.d/icinga-testing.repo <<EOF

[icinga-testing-builds]
name=ICINGA (testing builds for epel)
baseurl=http://packages.icinga.com/epel/\$releasever/testing/
enabled=1
gpgcheck=1
gpgkey=https://packages.icinga.com/icinga.key
metadata_expire=1d

EOF

yum makecache

yum install -t icinga-testing-builds icinga2

 

SLES

rpm --import https://packages.icinga.com/icinga.key

zypper ar https://packages.icinga.com/SUSE/ICINGA-release.repo
zypper ref -fs

cat >/etc/zypp/repos.d/icinga-testing.repo <<EOF

[icinga-testing-builds]
name=ICINGA (testing builds for SUSE \$releasever)
baseurl=https://packages.icinga.com/SUSE/\$releasever/testing/
enabled=1
gpgcheck=1
gpgkey=https://packages.icinga.com/icinga.key
metadata_expire=1d

EOF

zypper ref -fs

zypper in icinga2

 

Windows

x64 and x86.

If you need help with testing the release candidate, or want to discuss new things, hop onto our community forums.

Update 2019-08-01: In case you’re encountering “no shared cipher” errors with 2.10.x agents on RHEL7 or Windows connecting to parent 2.11 RC1 instances, please adjust the “cipher_list” configuration as shown in this issue. More troubleshooting hints can be found here.

Update 2019-08-06: Added backports repo for Debian Stretch. All RC feedback is collected and smaller fixes are applied, nothing which harms testing the RC. Thanks for your ongoing feedback!