Install Icinga 2 on CentOS 7 / RHEL 7

Icinga 2 is a free and open source monitoring tool which helps you to monitor network resources, get an alert on outages, also be able to generate the performance data.

Icinga 2 is very scalable, and you can monitor small to larger, complex environments across multiple locations.

Icinga 2 supports all major distributions such as Debian, Ubuntu, CentOS / RHEL, Fedora, openSUSE, SLES, Gentoo, FreeBSD, and ArchLinux.

This post briefly covers the installation and configuration of Icinga 2 on CentOS 7 / RHEL 7.

Switch to the root user.

$ sudo su -

Icinga packages depend on other packages (ex. Nagios plugins) which are distributed in EPEL repository. So, configure the EPEL repository on CentOS 7 / RHEL 7.

rpm -ivh

In addition to this, enable the optional and extras repositories on RHEL 7.

subscription-manager repos --enable rhel-7-server-optional-rpms 
subscription-manager repos --enable rhel-7-server-extras-rpms

Add Icinga 2 Repository

Icinga provides its official repository for their packages. So, install repository rpm

rpm --import 
yum install

Install Icinga 2

yum -y install icinga2

To start Icinga2 service, run:

systemctl start icinga2

To set Icinga 2 service to start automatically on system startup, run:

systemctl enable icinga2


If the system has SELinux enabled, then Install the below package to have targeted policy for Icinga 2.

yum install -y icinga2-selinux

Install Nagios Plugins

Without the plugins, Icinga 2 does not know how to monitor the external services. So install Nagios plugins on top of Icinga 2.

yum -y install nagios-plugins-all

Configuring DB IDO MySQL

The DB IDO module for Icinga 2 takes care of exporting all the configuration and status information to the database; we need to have database server for this requirement.

At present, MySQL and PostgreSQL are supported. Here, we will use the MySQL server as a database server.

If you already have a MySQL server on your system, you can skip the below step.

yum -y install mariadb-server mariadb

Start and enable MariaDB service.

systemctl start mariadb 
systemctl enable mariadb

Install IDO modules for MySQL

Now, install IDO modules for MySQL using the following command. You can find the icinga2-ido-mysql package in Icinga 2 repository.

yum -y install icinga2-ido-mysql

Create Database for Icinga 2

Login to MariaDB using the following command.

mysql -u root -p

Create a database for IDO modules, and this is used when you set up the Icinga2 web interface.

grant all privileges on icinga2.* to icinga2@localhost identified by 'icinga123'; 

After creating the database, you shall import the Icinga 2 IDO schema using the following command.

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

Enable IDO MySQL Module

Let’s lists the available and enabled features in Icinga 2.

icinga2 feature list


Disabled features: api command compatlog debuglog elasticsearch gelf graphite influxdb livestatus opentsdb perfdata statusdata syslog
Enabled features: checker ido-mysql mainlog notification

You can see that ido-mysql is already enabled.

If ido-mysql is not enabled on your system, then enable it using below command.

icinga2 feature enable ido-mysql

Also, enable the command feature which helps Icinga web interface and other Icinga add-ons to send commands to Icinga 2 via the external command pipe.

icinga2 feature enable command

Configure IDO DB MySQL module

Once you have enabled the IDO modules in Icinga 2, the Icinga 2 places the new configuration file at /etc/icinga2/features-enabled/ido-mysql.conf in which you need to update the database credentials manually.

vi /etc/icinga2/features-enabled/ido-mysql.conf

Update the above file shown like below.

user = "icinga2", 
password = "icinga123", 
host = "localhost", 
database = "icinga2"

Restart the Icinga 2 instance to have this enabled features take effect.

systemctl restart icinga2

Check the status of Icinga 2 service.

systemctl status icinga2


● icinga2.service - Icinga host/service/network monitoring system 
Loaded: loaded (/usr/lib/systemd/system/icinga2.service; enabled; vendor preset: disabled) 
Active: active (running) since Tue 2018-09-04 05:00:38 UTC; 23h ago 
Main PID: 11656 (icinga2) 
CGroup: /system.slice/icinga2.service 
├─ 4520 /usr/lib64/nagios/plugins/check_ping -H -c 5000,100% -w 3000,80% 
├─ 4521 /usr/bin/ping -n -U -W 30 -c 5 
├─11656 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon -e 
└─11690 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon -e 

Sep 05 04:43:10 rhicinga2server icinga2[11656]: mail not found in $PATH. Consider installing it. 
Sep 05 04:43:10 rhicinga2server icinga2[11656]: [2018-09-05 04:35:29 +0000] information/WorkQueue: #10 (; 
Sep 05 04:43:10 rhicinga2server icinga2[11656]: [2018-09-05 04:35:30 +0000] information/WorkQueue: #7 (; 
Sep 05 04:43:10 rhicinga2server icinga2[11656]: [2018-09-05 04:35:38 +0000] information/ConfigObject: Dumpin...ate' 
Sep 05 04:43:10 rhicinga2server icinga2[11656]: [2018-09-05 04:40:29 +0000] information/WorkQueue: #6 (; 
Sep 05 04:43:10 rhicinga2server icinga2[11656]: [2018-09-05 04:40:29 +0000] information/WorkQueue: #5 (; 
Sep 05 04:43:10 rhicinga2server icinga2[11656]: [2018-09-05 04:40:38 +0000] information/ConfigObject: Dumpin...ate'


Configure the firewall to allow Icinga 2 clients to communicate with Icinga 2 server.

firewall-cmd --permanent --add-port=5665/tcp 
firewall-cmd --reload