How to Install and Configure Icinga 2 / Icinga Web 2 on CentOS 7 and RHEL 7

Channel: Linux
Abstract: [[email protected] ~]$ sudo yum install httpd Next install mariadb server (database) with the following yum command[[email protected] ~]$ sudo yum ins

Icinga 2 is an open source monitoring tool that is used for checking the availability of IT resources (Network, servers etc) & report the outage in case a resource is down. It also generates performance data for reporting purposes as well.

Icinga 2 has multi-threaded design & can run thousands of checks each seconds without affecting the CPU. We can also setup Icinga 2 with high availability clusters with a distributed setup for large/complex environments.

In this tutorial, we will learn to install Icinga 2  on CentOS/ RHEL 7 systems. Below are my lab setup details for Icinga 2

  • Hostname of the machine 「icinga2.example.com」
  • IP address 「192.168.1.2」
  • OS : CentOS 7 / RHEL 7
  • All the installation will done via linuxtechi user, who is part of wheel group.
Requirements for Icinga 2

1) We need to have a machine with LAMP server installed for installation of Icinga 2. To create a LAMP server, we will first install the apache web server with the following command,

[[email protected] ~]$ sudo yum install httpd

Next install mariadb server (database) with the following yum command,

[[email protected] ~]$ sudo yum install mariadb mariadb-server

Start & enable mariadb service using beneath commands,

[[email protected] ~]$ sudo systemctl start mariadb && sudo systemctl enable mariadb

Now secure the mysql installation by executing the following command,

[[email protected] ~]$ sudo mysql_secure_installation

Then follow the on screen instructions to secure the mysql installation.

Lastly install the required PHP packages, but we need the latest php packages. To install the latest php packages, we will install scl packages,

[[email protected] ~]$ sudo yum install centos-release-scl

Next run the following yum  command to install the latest php packages for Icinga,

[[email protected] ~]$ sudo yum install rh-php71-php-mysqlnd rh-php71-php-cli php-Icinga rh-php71-php-common rh-php71-php-fpm rh-php71-php-pgsql rh-php71-php-ldap rh-php71-php-intl rh-php71-php-xml rh-php71-php-gd rh-php71-php-pdo rh-php71-php-mbstring -y

Next we will setup a default time zone in php, look for date.timezone and add the following content

[[email protected] ~]$ sudo vi /etc/opt/rh/rh-php71/php.ini

date.timezone = India/Kolkata

Change the time zone as you see fit & save the file. Now start and enable apache service,

[[email protected] ~]$ sudo systemctl start httpd && sudo systemctl enable httpd

2)  We also need to have EPEL repository enabled as some packages required by Icinga 2 are available on EPEL repositories. Install EPEL repo on CentOS/RHEL 7 with the following command,

[[email protected] ~]$ sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm

For RHEL, enable optional repository with the following command,

# subscription-manager repos --enable rhel-7-server-optional-rpms
Icinga 2 installation

Icinga is available in the form of the RPM package, but for that first we need to enable icinga yum repository, execute the following command from the terminal to enable it

[[email protected] ~]$ sudo yum install https://packages.icinga.com/epel/icinga-rpm-release-7-latest.noarch.rpm

Now we will install the icinga 2 along with its plugins,

[[email protected] ~]$ sudo yum install icinga2-ido-mysql icingaweb2 icingacli nagios-plugins-all

We will also install an additional package, icingaweb2-selinux  as we will be keeping our selinux enabled,

[[email protected] ~]$ sudo yum install icingaweb2-selinux  -y

Now restart apache, icinga2 & fpm services, & enable them for boot,

[[email protected] ~]$ sudo systemctl restart httpd.service
[[email protected] ~]$ sudo systemctl start icinga2.service
[[email protected] ~]$ sudo systemctl enable icinga2.service
[[email protected] ~]$ sudo systemctl start rh-php71-php-fpm.service
[[email protected] ~]$ sudo systemctl enable rh-php71-php-fpm.service
Configure Firewall rules for ICINGA 2

In case OS firewall is running and enabled on your server then configure following firewalld rules for port 80 & 5665, so that we can access the webpage from our local network & enable the monitoring via port 5665,

[[email protected] ~]$ sudo firewall-cmd --zone=public --permanent --add-port=80/tcp  
[[email protected] ~]$ sudo firewall-cmd --zone=public --permanent --add-port=5665/tcp
[[email protected] ~]$ sudo firewall-cmd --reload
Success
[[email protected] ~]$

As for the SELinux policies, we have already made the necessary changes by installing the ‘icinga-selinux‘ package.

Access Icinga 2 Web and Start the Installation wizard:

Now open a web browser  & enter the following URL to access the icinga 2 web setup,

http://<ip-addrees-or-hostname-of-icnga2-server>/icingaweb2/setup

In my case, url is http://192.168.1.2/icingaweb2/setup

where, 192.168.1.2 is the IP address of the machine where we have installed ICINGA 2. As soon as we enter the URL, we will be greeted with the following screen,

We now need to create the setup token. Run the following commands to create the setup token,

[[email protected] ~]$ sudo groupadd -r icingaweb2
[[email protected] ~]$ sudo usermod -a -G icingaweb2 apache
[[email protected] ~]$ sudo icingacli setup config directory --group icingaweb2
[[email protected] ~]$ sudo icingacli setup token create
The newly generated setup token is: de74e67ae840e90e
[[email protected] ~]$

Upon executing the last command, we will get a token as output. Copy the token & paste it on the webpage,

Process to create token is also mentioned on the webpage.  On the next screen, select monitoring & click next,

On the next screen, we will find various php modules that we have installed, review them & click next,

On the next screen, select the authentication type. We will be using ‘Database‘,  press next,

We now need to create a database for the Icinga, run the following commands to create a new database for icinga,

[[email protected] ~]$ mysql -u root -p
Enter password:
MariaDB [(none)]> create database icinga2;
Query OK, 1 row affected (0.00 sec)

Now exit from mariadb interface & provide the information on the setup page & click on validate,

Once the Configuration has been validated successful  and then click on Next

Next, select the Authentication Backend name, we are keeping it default,

Next select the username & password  to administer the Icinga admin web portal (Web Site)

Next configure the settings regarding your application, for us default is good,

Click on Next,

On the next screen, we will be asked to review the changes that we have made for icinga. Make sure that everything is in order & hit next,

We will now configure the monitoring module of Icinga. Here on the next couple of screens, we will configure the monitoring backend (which is left as default)  & then we will have to enter the database information again, but before we do that we need to import the IDO schema.

To import the schema, run the following commands,

[[email protected] ~]$ mysql -u root -p 
 MariaDB [(none)]>  CREATE DATABASE icinga; 
 MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'icinga'; 
 MariaDB [(none)]> FLUSH PRIVILEGES; 
 MariaDB [(none)]> EXIT;

Here we created another database for Icinga IDO & will now import the IDO schema to it,

[[email protected] ~]$ mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql

Also make changes as per your database to the following file,

[[email protected] ~]$ sudo vi /etc/icinga2/features-available/ido-mysql.conf
/**
 * The db_ido_mysql library implements IDO functionality
 * for MySQL.
 */
library "db_ido_mysql"
object IdoMysqlConnection "ido-mysql" {
  user = "icinga"
  password = "icinga"
  host = "localhost"
  database = "icinga"
}

Now after successful validation for the IDO, click next.  On this screen, we can configure information regarding our remote icinga instance, change it to ‘Local Command File‘,

Leave the rest of the screens as default & on the last screen, review all the changes & hit finish. We will then get the following screen,

Click on 「Login to icinga Web 2」 & we will redirected the login page for icinga. Login using the credentials that we specify in above the installation steps.

Upon successful authentication, we can now see the icinga dashboard with all the services & their status,

This confirms that we have successfully installed the Icinga 2 monitoring tool. Please feel free to send in your queries or suggestions using the comment box below.

Read More  – How to add remote Linux and Windows Host to Icinga 2 for Monitoring

Ref From: linuxtechi

Related articles