How To Install Icinga 2 on CentOS 7 / RHEL 7
Abstract: Install Icinga 2 yum -y install icinga2● icinga2.service - Icinga host/service/network monitoring system
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 https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
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-rpmsAdd Icinga 2 Repository
Icinga provides its official repository for their packages. So, install repository rpm
rpm --import https://packages.icinga.com/icinga.key yum install https://packages.icinga.com/epel/icinga-rpm-release-7-latest.noarch.rpmInstall 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 icinga2SELinux
If the system has SELinux enabled, then Install the below package to have targeted policy for Icinga 2.
yum install -y icinga2-selinuxInstall 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-allConfiguring 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 mariadbPerform initial setup of MariaDB using the mysql_secure_installation command. 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-mysqlCreate 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.
CREATE DATABASE icinga2; grant all privileges on icinga2.* to icinga2@localhost identified by 'icinga123'; FLUSH PRIVILEGES; quit
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.sqlEnable IDO MySQL Module
Let’s lists the available and enabled features in Icinga 2.
icinga2 feature list
Output:
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 commandConfigure 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
Output:
● 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 10.142.0.4 -c 5000,100% -w 3000,80% ├─ 4521 /usr/bin/ping -n -U -W 30 -c 5 10.142.0.4 ├─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 (Json...in); Sep 05 04:43:10 rhicinga2server icinga2[11656]: [2018-09-05 04:35:30 +0000] information/WorkQueue: #7 (IdoMy...in); 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 (ApiLi...in); Sep 05 04:43:10 rhicinga2server icinga2[11656]: [2018-09-05 04:40:29 +0000] information/WorkQueue: #5 (ApiLi...in); Sep 05 04:43:10 rhicinga2server icinga2[11656]: [2018-09-05 04:40:38 +0000] information/ConfigObject: Dumpin...ate'Firewall
Configure the firewall to allow Icinga 2 clients to communicate with Icinga 2 server.
firewall-cmd --permanent --add-port=5665/tcp firewall-cmd --reload
We will configure the Icinga 2 web interface in our next tutorial.
READ: How To Setup Icinga Web 2 on CentOS 7 / RHEL 7
That’s All.