Install Icinga with IcingaDB on RHEL 10.1

30 April, 2026

Dirk Wening
Dirk Wening
Technical Writer

Dirk arbeitet seit Januar 2025 bei NETWAYS als Junior Consultant im Zuge seiner Umschulung zum Fachinformatiker für Systemintegration. Aktuell arbeitet er in der Abteilung  NETWAYS Professional Services und strebt nach seiner Umschulung eine Übernahme zum Consulting-Team an. In seiner Freizeit unternimmt er sehr viel mit seiner Tochter oder spielt American Football.

by | Apr 30, 2026

Dieser Eintrag ist in der Serie Grundinstallation Icinga

Last updated: 30.04.2026

This guide will walk you through the complete installation of Icinga 2 with IcingaDB on Red Hat Enterprise Linux 10.1 – from repository setup to the running monitoring stack. You get a cleanly set up Icinga stack with IcingaDB as a modern data backend.

Step-by-step instructions for installing Icinga and IcingaDB on RHEL 10.1

An important note before starting: The official RHEL repositories of Icinga are part of the Icinga Repository Subscription. It is not possible to install Icinga on RHEL-based systems without official access! A subscription to Icinga is required to gain access.

All information and contact options can be found on the Icinga homepage: https://icinga.com/pricing/

Requirements for the installation

Before you start, the following points should be fulfilled:

  • Operating system: RHEL 10.1
  • You have the right to be a Sudo user
  • Access to an SQL database (I use MariaDB here)
  • An Internet connection on the server
  • An active Icinga repository subscription

Step 1: Add repository and install packages

Start with the following command:

rpm --import https://packages.icinga.com/icinga.key
wget https://packages.icinga.com/subscription/rhel/ICINGA-release.repo -O /etc/yum.repos.d/ICINGA-release.repo

Once the command block has been successfully completed, you must edit /etc/yum.repos.d/ICINGA-release.repo with your Icinga Subscription Repository access data.

dnf repolist

This command activates all repos. It may happen that you are shown that your system is not yet registered. If this is the case, don’t panic!

subscription-manager register --username=DeinRedHatBenutzername --password=DeinRedHatPassword

You can now install Icinga2 by simply executing the following command.

dnf install icinga2

systemctl enable icinga2

systemctl start icinga2

icinga daemon -C 

dnf install icinga2-selinux

Step 2: Activate the Icinga API and install monitoring plugins

Now you need an external check plugin, as Icinga does not have one integrated by default. This allows you to collect and analyze your data.

dnf install nagios-plugins

In case you are wondering why Icinga uses plugins for Nagios: Historically, Icinga 2 evolved from Nagios. The plugin collection also works with other monitoring systems based on Nagios.

To interact with Icinga, the Icinga API must be set up. This can be easily triggered with the corresponding Icinga 2 command:

icinga2 api setup

systemctl restart icinga2

An API user is generated in /etc/icinga2/conf.d/api-users.conf with a random password so that the API can be addressed by Icinga2.

Step 3: Set up IcingaDB

IcingaDB is based on a Redis server. To avoid problems with the server configuration, the Icinga team provides a special Redis package: icindadb-redis contains a current Redis version and is optimally adapted to the requirements of Icinga DB. This is how you install it:

dnf install icingadb-redis

The Redis server can basically be installed anywhere in an Icinga environment. For the best practice recommendation, however, you should place it on the central Icinga node to keep latency as low as possible.

If there is already a configured Redis server in your infrastructure, you can use this. However, this requires customization, which is why the special Icinga package is recommended.

Step 4: Activating the Redis

The installation of icingadb-redis automatically creates all the required system files. This allows you to activate and start the service directly.

systemctl enable --now icingadb-redis

By default, icingadb-redis only listens on 127.0.0.1, i.e. on localhost. To enable you to integrate additional nodes in the future, change the following configuration file: /etc/icingadb-redis/icingadb-redis.conf

In this file, it is best to adjust the “bind” item.
bind 127.0.0.1 becomes bind 0.0.0.0
This means that all interfaces can access the Redis.

systemctl restart icingadb-redis

Activate the feature in Icinga 2 to enable data forwarding to Redis. All changes made in this step are verified by restarting the entire Icinga service.

icinga2 feature enable icingadb
systemctl restart icinga2

Security note: Redis does not have active authentication by default. If you change bind to 0.0.0.0, this may allow unauthorized access if your system communicates externally. To close this security gap, it is advisable to take various security precautions.
This includes:

  • Set up a password
  • Set up firewall rules or
  • Set up TLS

In this guide, however, this has been omitted in order to improve comprehensibility and reduce the scope. However, it is strongly recommended that these adjustments are also made retrospectively.

Step 5: Install icingaDB and create database

After activating IcingaDB as a feature in Icinga, this step serves to install the package on your system.

dnf install icingadb

To use the data collected by Icinga2, create a database. In our example, I am using MariaDB. The command remains the same in MySQL.

If you use PostgreSQL, you can find the corresponding command in the official Icinga docs.

mysql -u root -p
CREATE DATABASE icingadb;
CREATE USER 'icingadb'@'localhost' IDENTIFIED BY 'DeinSicheresPasswort';
GRANT ALL ON icingadb.* TO 'icingadb'@'localhost';

You have now successfully created the database and the database user. IcingaDB also provides a database schema, which is now imported:

mysql -u root -p icingadb </usr/share/icingadb/schema/mysql/schema.sql

Step 6: Adjust access permissions

The installation of Icinga DB creates a configuration file filled with default values under /etc/icingadb/config.yml. The access parameters of the database and Redis must now be entered in this file to enable communication between all components.

The following parameters must be checked and adjusted if necessary:

For the database:

  • host with the corresponding host name/host IP of your database
  • database with the name of your database (in this guide icingadb)
  • user with the name of your database user
  • password with the password that you have assigned to your database

For Redis:

  • host with the corresponding host name/host IP of your Redis instance
  • If you have changed the port or set a password during the installation of your Redis server, you must also enter this here

Once these changes have been completed, the Icinga DB service can be activated:

systemctl enable --now icingadb

Step 7: Node Wizard

The Node Wizard helps you to set up your zones and define the endpoints of your Icinga monitoring. For this you use:

icinga2 node wizard

The following points are queried interactively:

  • Is this agent/satellite setup? -> Enter ‘n’ here and confirm with Enter
  • Specifiy common name (FQDN of your master) -> Enter nothing and confirm with Enter
  • Master zone name -> Enter nothing and confirm with Enter
  • Specify additional global zones -> Enter nothing and confirm with Enter
  • Specify API bind host/port -> Enter nothing and confirm with Enter
  • Bind Host -> Enter nothing and confirm with Enter
  • Bind Port -> Enter nothing and confirm with Enter
  • Disable inclusion of conf.d directory -> Enter nothing and confirm with Enter

To verify the configuration and then reload Icinga2:

Icinga2 daemon -C
systemctl reload icinga2

Congratulations, you have successfully installed Icinga2 with IcingaDB on RHEL 10.1!

You want to use Icinga 2 in your environment, but want someone else to set it up? We support you in planning, installing and operating your monitoring stack. Enquire now without obligation!

We are happy to advise you on all aspects of open source monitoring!

How did you like our article?