Icinga2 on CentOS7

icinga_logo

A Software to monitor the health of an infrastructure is a vital component to a good system administrator.

After looking arround for open source software i decided to give Icinga2 a try.

Icinga2 is a fork of Nagios (it’s a good start) and looks much cooler 🙂 (IMO The cool factor is very important)

CentOS7 was the choice for the Operating System.

After reading the documentation in Icinga website and having some trouble i decided to add some crucial steps that i had to take to perform a successful installation.

All the steps described are performed as root user

First thing firts, after CentOS installation update your system:

# yum update

Now add the Icinga repository to your package management configuration

# rpm --import http://packages.icinga.org/icinga.key
# curl -o /etc/yum.repos.d/ICINGA-release.repo http://packages.icinga.org/epel/ICINGA-release.repo
# yum makecache

Install Icinga2

# yum install icinga2
# systemctl enable icinga2
# systemctl start icinga2

Congratulations Icinga2 is installed.

CheckPlugins

It’s time to install the checkplugins.

As Icinga2 is a Nagios fork we are going ot install the same plugins for it to work properly by installing the Monitoring Plugins.

# wget https://www.monitoring-plugins.org/download/monitoring-plugins-2.1.2.tar.gz
# yum install gcc
# gzip -dc monitoring-plugins-2.x.tar.gz | tar -xf -
# cd monitoring-plugins-2.x
# ./configure
# make
# make install

Vim editor

Icinga2 comes with some color schemes for vim that you can install by

# PREFIX=~/.vim
# mkdir -p $PREFIX/{syntax,ftdetect}
# cd /usr/share/doc/icinga2-common-2.4.1/syntax/
# cp vim/syntax/icinga2.vim $PREFIX/syntax/
# cp vim/ftdetect/icinga2.vim $PREFIX/ftdetect/

Lets change the installation directory of the plugins from /urs/lib64/* to /urs/local/libexec in the constants.conf file of icinga2. The file is in /etc/icinga2

# cd /etc/icinga2
# vim constants.conf

Creating a systemctl for Icinga2

# systemctl enable icinga2
# systemctl start icinga2

Icinga Web 2 interface

At this point Icinga2 is istalled and configured.
Icinga 2 can be used with Icinga Web 2 and a number of other web interfaces.
For now i am going to install Icinga Web 2.
Firts we are going to install MySQL

# yum install mariadb-server mariadb
# systemctl enable mariadb
# systemctl start mariadb
# mysql_secure_installation

Now install install the icinga2-ido-mysql package

# yum install icinga2-ido-mysql

MySQL setup and configuration

# mysql -u root -p
mysql>  CREATE DATABASE icinga;
        GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'icinga';
# mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql

Enable the IDO MySQL module

# icinga2 feature enable ido-mysql
# systemctl restart icinga2

WebServer install

If you did not install the CenOS web server you need to install httpd

# yum install httpd
# systemctl enable httpd
# systemctl start httpd

Firewall

Add some rules to permit access to the web server

# firewall-cmd --add-service=http
# firewall-cmd --permanent --add-service=http

Command Pipe

For the Icinga2 to receive commands from the Icinga Web 2 you need to enable the command pipe

# icinga2 feature enable command
# systemctl restart icinga2

Icinga Web 2 interface installation

Setting up package repository

# rpm --import http://packages.icinga.org/icinga.key
# curl -o /etc/yum.repos.d/ICINGA-release.repo http://packages.icinga.org/epel/ICINGA-release.repo
# yum makecache

EPEL install

# yum install epel-release

PHP install

# yum install php php-mysql

Don’t forget to change the date.timezone in /etc/php.ini

Let’s install the web interface

# yum install icingaweb2 icingacli

And now lets prepare for the web setup

# icingacli setup token create

Run this command to mitigate an error at the web setup

chcon -R -t httpd_sys_rw_content_t /etc/icingaweb2/

Copy the token and access the site:
http://<server-ip>/icingaweb2/setup
past the token and continue the setup
If the website does not open restart the httpd by running:

# systemctl restart http

For the web interface to work (send commands to your icinga server) you need to disable SELinx in your system.
To do that just edit the file /etc/selinux/confing and change the enforcing to disabled.

Leave a comment