Icinga Web 2.7.1

Icinga Web 2.7.1

We are happy to announce a new bugfix release for Icinga Web 2. Official packages are available on packages.icinga.com. You can find all issues related to this release on our Roadmap.


Sneaky Solution for Sneaky Links

Usually we try to include only bugs in minor-releases. Sorry, bug-fixes, of course. But thanks to @winem_ we have also a little enhancement this time: Links in comments, notes, etc. are now highlighted as such.

  • Highlight links in the notes of an object #3888


Nobody’s Perfect, Not Even Developers

We knew it. We saw it coming. And forgot about it. Some views, especially histories, showed an anarchic behavior since v2.7.0. The change responsible for this has been undone and history’s order is reestablished now.

  • Default sort rules no longer work in 2.7.0 #3891


Restrictions Gone Wild Cagey

A fix unfortunately caused restrictions using wildcards to show no results anymore. This is now solved and such restrictions are as permissive as ever.

  • Wildcard filters in chains broken #3886


Color Blind theme for Icinga Web 2

Color Blind theme for Icinga Web 2

Give your Icinga Web 2 a new look – with official ‘Color Blind Theme’ introduced in version 2.7.0! Not just for people with impaired colour vision – with a fresh and well rounded new palette, the new theme is a real looker!

It’s important for us that everyone has the chance to use our tools with maximum effectiveness.We took an existing module from our Icinga Partner Sol1icingaweb2-theme-colourblind by Andrew Foster – refined it a little and it is now part of the default Icinga Web 2 colour scheme bundle!


What’s with the change?

The colorblind theme by Sol1 was already very well made, but we saw some minor issues with the chosen colours in terms of:

  • context with the icinga states
  • readability

Well, let’s just have a look first:

Overview over the different themes and the effects colour deficiency has on the appearance

Overview over the different themes and the effects colour deficiency has on the appearance

So in the top, there is the default Icinga colour scheme – with mocks of the three types of colour deficiency we focused on during the development for the module.
In the middle row you can see the module Sol1 provided
Last row is the new theme which is integrated into the Icinga Web 2 core now.

Icinga state context

Another minor detail to improve was the colour of the WARNING (handled) state, which didn’t really fit in with the rest:

Comparison of colours for the states + handled states

The WARNING (handled) grey sticks out and is hard to connect to the unhandled state colour

So in order to both have the context in which the colours are used preserved and have some sort of hierarchy in severeness of the states some changes needed to be made.

This warranted for a change both in brightness and hue for the OK green as well, so it could be distinguished from the WARNING (handled) yellow:

Visual representation of a colour with changes in hue, saturation and brightness

Visual representation of changes in hue, saturation and brightness.



There have also been some changes to the font colour:
Handled states (Including OK for urgencies sake) are now displayed with black text.

This makes it a lot easier to distinguish between handled and unhandled states in the blink of an eye.

Badges with the different themes

Badges with the different themes



In case you want to build your own theme, there is a helpful article on the topic from our Partner Würth Phoenix. If you have any issues, feedback or inspiration – please tell us about it here or open an issue on github.

And by the way, I will be speaking about this topic at the Icinga Camp Stockholm as well!

Icinga Web 2.7.0

Icinga Web 2.7.0

We are happy to announce a new release for Icinga Web 2, version 2.7.0. Official packages are available on packages.icinga.com. You can find all issues related to this release on our Roadmap.


Icinga’s Amazingness Spreads Further

All the Japanese and Ukrainian monitoring enthusiasts can now appreciate our web-frontend in their native tongue. Being so late to the party is also of their advantage, though. Because they can adjust their dashboard without worrying it gets broke with the next update. (All other admins with non-english users, please have a look at our upgrading documentation)

  • Add Japanese language support #3776
  • Add Ukrainian language support #3828
  • Don’t translate pane and dashlet names in configs #3837


Modules – Bonus Functionality Unleashed

With this release module developers got additional ways to customize Icinga Web 2. Whether you ever wanted to hook into a configuration form’s handling, to perform your very own Ajax requests or enhance our multi-select views with fancy graphs. All is possible now.

  • Allow to hook into a configuration form’s handling #3862
  • Allow to fully customize click and submit handling #3767
  • Integrate DetailviewExtension into multi-select views #3304


UI – Your Daily Routine and Incident Management, Enhanced

Users with color deficiencies now have a built-in theme to ease navigating within Icinga Web 2. Also, our forms got a long overdue re-design and now look less boring. Though, the best of all features is that clicking while holding the Ctrl-key now actually opens a new browser tab! Lost comments? No more. Defining an expiry date again? No more!

  • Add colorblind theme #3743
  • Improve the look of forms #3416
  • Make ctrl-click open new tab #3723


Stay Focused – More Room for More Important Stuff

Some of you know that some checks tend to produce walls of text or measure (too) many interfaces. Now, plugin output and performance data will collapse if they exceed a certain height. If necessary they can of course be expanded and keep that way across browser restarts. The same is also true for the sidebar. (Though, this one stays collapsed)

  • Persistent Collapsible Containers #3638
  • Collapsible plugin output #3870
  • Collapsed sidebar should stay collapsed #3682


Markdown – Tables, Lists and Emphasized Text The Easy Way

Since we now have the possibility to collapse large content dynamically, we allow you to add entire wiki pages to hosts and services. Though, if you prefer to use a real wiki to maintain those (what we’d strongly suggest) it’s now easier than ever before to link to it. Copy url, paste url, submit comment, Done.

  • Make notes, comments and announcements markdown aware #3814
  • Transform any URL in a Comment to a clickable Link #3441
  • Support relative links in plugin output #2916


Things You Have Missed Previously

The tactical overview, our fancy pie charts, is now the very first result when you search something in the sidebar. If you’ll see two entirely green circles there, relax. Also overdue or unreachable checks are now appropriately marked in list views and the service grid now allows you to switch between everything or problems only.

  • Add tactical overview to global search #3845
  • Servicegrid: Add toggle to show problems only #3871
  • Make overdue/unreachable checks better visible #3860


Authorization – Knowing and Controlling What’s Going On

Roles can now be even more tailored to users since the introduction of a new placeholder. This placeholder allows to use a user’s name in restrictions. Things like _service_responsible_person=$user:local_name$ are now possible. The audit log now receives failed login-attempts, that’s been made possible since hooks can now run for anonymous users.

  • Allow roles to filter for the currently logged in user #3493
  • Add possibility to disable permission checks for hooks #3849
  • Send failed login-attempts to the audit log #3856

See also the audit module which got an update and is required for #3856 to work.



Icinga 2.11 Release Candidate

Icinga 2.11 Release Candidate

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.



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!



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.



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" > \
 echo "deb-src https://packages.icinga.com/debian icinga-${DIST} main" >> \

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

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" > \

apt-get update



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" > \
 echo "deb-src https://packages.icinga.com/ubuntu icinga-${DIST} main" >> \

. /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" > \
 echo "deb-src https://packages.icinga.com/ubuntu icinga-${DIST}-testing main" >> \

. /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



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

name=ICINGA (testing builds for epel)


yum makecache

yum install -t icinga-testing-builds icinga2



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

name=ICINGA (testing builds for SUSE \$releasever)


zypper ref -fs

zypper in icinga2



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!



Icinga Cube 1.1.0 is out!

Icinga Cube 1.1.0 is out!

As a little introduction for everyone who has not heard about the cube yet:

The cube module is there to show statistics grouped by the custom variables that have been set for the hosts and services. They are then displayed in up to three dimensions for a quick overview to show the relations.

cube module preview


The services are going cubin’!

The most prominent change is the addition of services:
While it used to be only possible to have the hosts in a cube, the module has now been extended to provide full functionality with services as well.

You can easily switch between hosts and services, while we keep the filters of your cube in place!

  • Support Services #37


No more SQL dump crashes! (or at least fewer)

PostgreSQL rollup syntax errors are now smoothed out and will work as intended – also including the documentation for the requirements.
Having custom variables names like SQL keywords also no longer break the cube!

  • Fix SQL keywords breaking the queries #38
  • Fix rollup syntax for PostgreSQL databases #29 + #24


Restrictions are in place

Adds a filter that considers protected custom variables.
The cube now polls the restrictions set in the monitoring module and only shows the hosts that the user has permission to view.

  • Apply monitoring restrictions #33
  • Respect protected custom vars #25


And just a pinch of UX

Removed the possibility to add more than three dimensions to the cube – we live in a three dimensional world after all.
When the name of a cube tile is too long to fit, it will no longer push everything else downwards but be shortened with an ellipsis instead!

  • Limit to 3 dimensions #36
  • Truncate long headers #35


Fixed pröblems with ümlauts

The URL encoding has been adapted so that both white spaces and umlauts are now supported!
Name your vars however you like!

  • Fix Slices with whitespace or umlaut in data field #17



Icinga Reporting – Hands On

Icinga Reporting – Hands On

After our initial release of Icinga Reporting for early adopters we continued our development and are happy to release v0.9.1 today. The release includes bug fixes and some minor enhancements for the usability. I want to take this opportunity to write a post aimed at the people who are new to the whole reporting shabang – like me 🙂

This week I set out to figuring out for myself why one would need to use reporting and how to get there – and to share my new knowledge with you!


What is reporting?

When I’m talking about reporting in this context I mean Business Reporting. I’ll give you a brief overview by citing good old wikipedia:

Business reporting or enterprise reporting refers to both “the public reporting of operating and financial data by a business enterprise,” and “the regular provision of information to decision-makers within an organization to support them in their work.”


Wikipedia ‘Business Reporting’ (12.06.2019)

In short: Reporting means collecting data, from a certain period of time.


What does Icinga Reporting do?

In simple terms you could say, that the reporting module takes the data from the Icinga Database (IDO) or other modules and displays it. So you gain a nice overview directly in Icinga Web 2 and if you schedule the reports you can also get them per mail or export it to PDF, JSON or CSV format.

You can review the uptime of your hosts and services in the form of a recap of your chosen time period. This gives you the opportunity to improve the accessibility of your systems and environments in the long run. If you want a more in depth description I can point you to this article about the new reporting release.



The process of the installation is already described in the docs here, but for the sake of completeness I’ll do a quick walk through with you here as well.

I documented my way from my installation to my first report for you, installing both the reporting and the idoreporting modules:


Step 1: Cloning the reporting repository

You’ll want to navigate into the icingaweb2/modules repository and clone this repository under the name ‘reporting‘.

git clone git@github.com:Icinga/icingaweb2-module-reporting.git reporting


Cloning reporting in the modules directory


Step 2: Database creation

You will need to create a MySQL/MariaDB database – in this example it will be called ‘reporting‘ for convenience.

Create the db with:


Then import the schema provided under etc/schema:

mysql -p -u root reporting < schema/mysql.sql

Database creation in MySql


Step 3: Activate the module in Icinga Web 2

Log in with a privileged user in Icinga Web 2 and enable the module in Configuration/Modules. Alternatively you can use the icingacli and run icingacli module enable reporting

Activating the module under Configuration/Modules


Step 4: Adding the resource

Once you’ve set up the database, create a new Icinga Web 2 resource for it using the Configuration/Application/Resources menu. Make sure that you set the character set to utf8mb4.

Adding the resource under Configuration/Application/Resources


Step 5: Cloning the IDO reports repository

Like in step one, just that this time we will clone this repository under the name ‘idoreports’.

git clone git@github.com:Icinga/icingaweb2-module-idoreports.git idoreports


Step 6: Import schemas

This step is an analogy to step 2: Import the following schemas also found under etc/schema to your Icinga 2 database (IDO):

mysql -p -u icinga2 icinga2 < schema/slaperiods.sql
mysql -p -u icinga2 icinga2 < schema/get_sla_ok_percent.sql


Step 7: Activate IDO reports

Log in with a privileged user in Icinga Web 2 and enable the module in Configuration/Modules/idoreports. Alternatively you can use the icingacli and run icingacli module enable idoreports


Configuring a new Report

So you should now be at the point where you can start creating your first reports. Just navigate to the Reporting menu item and you should see a button reading ‘Add report‘.

Creating a new report

You can define exactly what you want to see with the Filter, that you can use just like anywhere else in Icinga Web 2 to see only what is relevant to you.

Break it down by days, weeks or months to see what happened when.

Add your own threshold to set what value must be undershot before the tile will be coloured in an alarming red, so it sticks out for you to immediately see problematic entities.

Finished report


Scheduler Daemon

In case you want to have a report sent out to you on a regular basis, you can use the scheduler daemon for that:

icingacli reporting schedule run

This command schedules the execution of all applicable reports. You may configure this command as systemd service. Just copy the example service definition from config/systemd/icinga-reporting.service to /etc/systemd/system/icinga-reporting.service and enable it afterwards:

systemctl enable icinga-reporting.service

You have everything in your hands now to get started with Icinga Reporting. For any questions please feel free to get in touch with us and our lovely community on community.icinga.com. We would love to hear some stories how you use reporting in your organization and how we can help you with your daily work!