Revising Icinga Exchange

by | Feb 5, 2025

Icinga is an open-source project, but it’s only become the product we like to use thanks to co-development, brainstorming and suggestions from the community. That’s why we created a platform in the past to facilitate the exchange of custom implementations like check plug-ins, styles, extensions and bridges to third-party systems.

We’re talking about our Exchange Portal, of course.

This platform has been publicly accessible for years and adds to the Icinga ecosystem with great projects like the Monitoring Plugins Collection, the SNClient or the Map Module, to name just a few.
We know Icinga Exchange is used a lot, and so we’ve decided to update it to the latest version of our development stack. This will make it easier for us to integrate suggestions, ideas and new features into the platform in the future.

This blog post is meant to give you the lowdown on what’s new as well as help you get your head around any changes to how the platform works and its underlying systems.

But where do we start? Let’s take a step back to 2013.

 

Big Bang The logo of the Ruby Programming Language Ruby?

Back in 2013, the Icinga 2 project was in development, but it had already released some versions for people to check out and test.
At this time, Java, Python and C# were the main players in the world of programming languages, but others were also gaining traction. Ruby has been on the rise ever since Ruby on Rails, and has become a major topic of conversation in the Western world. The release of the second version of Ruby has also led to its adoption in other projects and companies.

Vagrant is a software that uses this programming language alongside Puppet, and it’s used to set up virtual machines and their software easily. Puppet and Ansible are often used with it, as you can use them for system configuration. But that’s enough on the history of software for now.

Let’s get back to Icinga 2: The new version was also made to make integrating third-party developments easier.
We’ve created a new platform to make it easy for other users to share their extensions with each other: Icinga Exchange.

To get Icinga Exchange up and running, we needed a development environment, for which we chose the tools that were popular at the time: Vagrant, Ruby shell scripts and Puppet. This was the first stone we laid, and now let’s head back to the present day.

 

Modifying the development environment

Over the years, a lot has evolved at Icinga and we have switched to other solutions for our large projects such as Icinga 2, IcingaDB, Icinga Director, Icinga for Kubernetes and Icinga Notifications.

Our development environments are based on preconfigured Docker containers, which can be used by all developers effortlessly and without much overhead. Docker has the advantage that, depending on the operating system, no full virtualisation is required and only a minimal virtualisation layer is provided by the kernel to isolate these containers from the rest of the system.

In order to be able to work in the same environment, we have switched Icinga Exchange from Vagrant and Puppet to Docker.

Visualization: Vagrant and Puppet to Docker

 

Clean-Up

Over the years, the dependencies behind Icinga Exchange have changed a lot, which is why we chose to bring the project up to date with the latest version of the underlying systems. This ensures the project remains maintainable in the future and allows us to implement new functions quickly and efficiently. Some of the things we updated include external APIs, new releases of libraries and frameworks, the search and indexing platform we use and the website’s rendering.

While we were at it, we also took a look at all the features to see if they were still being used and if they were worth keeping. As it turned out, hardly anyone was using the review, comment and rating features, which is why we decided to get rid of them.

 

Quality of Life Adjustments

Most of the changes are about fixing legacy issues, updating components to new versions and changing the development environment, but we’ve also made a few small improvements.

Several of these changes can be found on the landing page, which now features projects from all categories. This is to make sure that people visiting the site can get an overview of the different types of extension capabilities.

We’ve also tweaked the algorithm for choosing the featured projects, making it more balanced, meaning smaller, newer and more exotic projects should also make an appearance on the landing page.

Visualization: Icinga Exchange UI (2025)

Also, it’s now easier to identify the most recent release because the release date is highlighted. That means visitors can quickly see if a new release of a project was published in the last few days, weeks or months.

There are also lots of small changes to the backend that we can’t go into detail here, but they help us simplify the administration of the platform.

With all these changes, we hope to be able to add functions to the project more easily and quickly in the future, with less maintenance effort.

We plan on deploying those adjustments and upgrades to our production in the near future.

 

Thank YOU!

Last but not least, I just wanted to take a moment to thank the community for all their contributions – it’s only thanks to them that the Icinga cosmos has become what it is today.

Be sure to check out those projects over at Icinga Exchange.

Thank you so much for all your fantastic contributions! 😊

You May Also Like…

Subscribe to our Newsletter

A monthly digest of the latest Icinga news, releases, articles and community topics.