Instalar Icinga 2 e Icinga Web 2 en Centos 7

En el artículo de hoy vamos a ver la instalación y primeros pasos de configuración de la plataforma Icinga, esto es, Icinga2 e IcingaWeb2, sobre un sistema operativo CentOS 7, en este año 2018

La idea de dejar claro el año en que estamos, es que la instalación de este producto ya la traté en su día, además de otros artículos que podéis encontrar por la web. Desde entonces ha cambiado bastante, así que vamos al lío.

Instalación de Icinga2 e IcingaWeb2

Para seguir la instalación me he servido de la documentación oficial, que siempre es la mejor opción. Iremos por partes. Primero instalaremos Icinga2, después el servidor web y la base de datos necesaria; por último el frontend web IcingaWeb2.

Instalación de Icinga2

Ya hemos dicho que la instalación va a ser como un sistema GNU Linux CentOS 7, por lo que también es compatible con RHEL 7.

El primero paso es instalar el repositorio de Icinga, de la siguiente manera:

  1. yum install https://packages.icinga.com/epel/icinga-rpm-release-7-latest.noarch.rpm

Para la instalación es imprescindible también tener habilitado el repositorio EPEL

  1. yum install epel-release

Una vez instalados ambos repositorios, ya podemos realizar la instalación del producto:

  1. yum install icinga2
  2. systemctl enable icinga2
  3. systemctl start icinga2

Al ser un sistema con systemd, en el paso anterior hemos utilizando systemctl para añadir al arranque el servicio, además de encenderlo.

Tras realizar la instalación se habilitan por defecto tres funcionalidades, que son:

  • ‘checker’ que tal como indica el nombre se encarga de los chequeos
  • ‘notifcation’ funcionalidad para enviar las notificaciones
  • ‘maillog’, que se encarga de escribir el fichero ‘icinga2.log’

Podemos ver las funcionalidades con el siguiente comando:

  1. icinga2 feature list

Ya sabéis que Icinga es un proyecto derivado de Nagios, por lo que utiliza los mismos plugins que este. Estos están disponibles a través del repositorio EPEL que hemos instalado anteriormente. Por lo que para instalarlos sólo debemos escribir:

  1. yum install nagios-plugins-all

Es importante indicar que cada vez que realicemos un cambio debemos reiniciar el servicio, de la siguiente manera:

  1. systemctl restart icinga2

Si en nuestro sistema tenemos habilitado el sistema de control de acceso SELinux, debemos instalar un módulo de Icinga, para que el producto pueda trabajar correctamente.

  1. yum install icinga2-selinux

Para que pueda comunicarse correctamente Icinga2 con el IcingaWeb2, debemos configurar DB IDO; esta pieza se encarga de exportar toda la información de configuración y estado de los monitores, a una base de datos. Existen dos módulos al respecto, uno para MYSQL/MariaDB y otro para PostgreSQL

En nuestro caso vamos a utilizar MariaDB, por lo que vamos a instalar el servidor de base de datos:

  1. yum install mariadb-server mariadb
  2. systemctl enable mariadb
  3. systemctl start mariadb
  4. mysql_secure_installation

En el último comando, nos encargamos de asignar una contraseña al usuario ‘root’ de la base de datos, además de asegurar la instalación.

Ahora nos toca instalar el módulo IDO, que hemos comentado anteriormente.

  1. yum install icinga2-ido-mysql

Una vez hecho estos pasos, ya podemos acceder a la consola de base de datos, crear la base de datos correspondiente y asignarle el usuario de turno.

  1. # mysql -u root -p
  2.  
  3. CREATE DATABASE icinga;
  4. GRANT ALL PRIVILEGES ON icinga.* TO 'icingauser'@'localhost' IDENTIFIED BY 'contrasea1412';
  5.  
  6. CREATE DATABASE icingaweb;
  7. GRANT ALL PRIVILEGES ON icingaweb.* TO 'icingauser'@'localhost' IDENTIFIED BY 'contrasea1412';
  8.  
  9. FLUSH PRIVILEGES;

Salimos de la consola de base de datos e importamos el esquema de “Icinga 2 IDO

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

Por último en esta parte habilitamos el módulo ‘Icinga 2 IDO’

  1. icinga2 feature enable ido-mysql

Y reiniciamos el servicio:

  1. systemctl restart icinga2

Instalación de IcingaWEB2

Ya hemos llegado al apartado web. El primero paso será instalar el servidor web. Aquí podemos escoger tanto NGINX como Apache. Yo me he decantado por este último.

Realizamos la instalación:

  1. yum install httpd
  2. systemctl enable httpd
  3. systemctl start httpd

Si tenemos el cortafuegos habilitado con ‘firewalld’, debemos añadir:

  1. firewall-cmd --add-service=http
  2. firewall-cmd --permanent --add-service=http

Tanto Icinga Web2 como otras interfaces web utilizan una “REST API” para sus acciones y las consultas a los detalles de los objetos.

Podemos ejecutar el comando CLI con ‘icinga api setup’ para habilitar la característica ‘api’

  1. icinga2 api setup

Además debemos editar el fichero donde se indica la configuración de usuarios para la API

  1. vim /etc/icinga2/conf.d/api-users.conf

Y añadir:

  1. object ApiUser "icingaweb2" {
  2. password = "Wijsn8Z9eRs5E25d"
  3. permissions = [ "status/query", "actions/*", "objects/modify/*", "objects/query/*" ]
  4. }

El usuario y la contraseña la debemos cambiar.

Además debemos modificar los datos de configuración del fichero «/etc/icinga2/features-enabled/ido-mysql.conf» , para que quede, en mi caso, como sigue:

  1. library "db_ido_mysql"
  2.  
  3. object IdoMysqlConnection "ido-mysql" {
  4. user = "icingauser"
  5. password = "contrasea1412"
  6. host = "localhost"
  7. database = "icinga"
  8. }

Una vez hechos los cambios podemos reiniciar:

  1. systemctl restart icinga2

Continuemos. Para poder instalar todos los paquetes del proyecto web, debemos tener habilitado un repositorio más, que nos dará acceso a una serie de paquetes para PHP, este repositorio es SCL

  1. yum install centos-release-scl

De esta manera ya tenemos todos los repositorios necesarios para poder continuar con la instalación.

Recordamos que hasta ahora hemos instalado el servidor web Apache (httpd) y la base de datos MariaDB

Instalamos Icinga Web 2

  1. yum install icingaweb2 icingacli -y

Si utilizamos SELinux, adicionalmente debemos instalar:

  1. yum install icingaweb2-selinux -y

Si deseamos trabajar con el módulo FPM, un acrónimo en inglés de “FastCGI Process Manager”, los pasos serían los siguientes:

  1. yum install rh-php71-php-fpm
  2. systemctl start rh-php71-php-fpm.service
  3. systemctl enable rh-php71-php-fpm.service

Continuamos con la instalación del módulo de PHP para la base de datos:

  1. yum install rh-php71-php-mysqlnd

Reiniciamos FPM

  1. systemctl restart rh-php71-php-fpm.service

Una vez hecho todo esto, debemos obtener el ‘token’ que utilizamos en la instalación vía web:

  1. icingacli setup token create

Siempre lo podemos visualizar con el siguiente comando:

  1. icingacli setup token show

Reiniciar servicio web:

  1. systemctl restart httpd

Antes de pasar a la interfaz web, debemos realizar un par se pasos más. El primero de todo es configurar la zona horaria , para ello debemos editar el fichero «/etc/opt/rh/rh-php71/php.ini» e indicar nuestra zona horaria, que en mi caso es «Europe/Madrid»

Por último instalaremos el paquete ‘Imagick’, que nos permitirá trabajar con ficheros pdf. La instalación es:

  1. yum install sclo-php71-php-pecl-imagick

Volvemos a reiniciar los servicios web:

  1. systemctl restart httpd
  2. systemctl restart rh-php71-php-fpm.service

Ahora sí, nos vamos a la instalación web.

Tanto esta parte como la parte web, la podéis seguir en el siguiente vídeo:

Espero que os parezca interesante. Nos vamos leyendo ^.^