Instalación de Icinga 2 e Icinga Web 2 en Centos 8

Volvemos a la carga con el popular producto de monitoreo de infraestructuras llamado Icinga, en este caso vemos su instalación sobre un servidor con Centos 8. Ya he hablado en varias ocasiones sobre esta herramienta, por lo que me saltaré la explicación sobre su origen, funcionamiento y características. Siempre podéis consultar las entradas antiguas.

Para esta ocasión me he servido de un VPS creado en mi proveedor de confianza Clouding.io, empresa que esta afincada a orillas del mediterráneo, en la ciudad de Barcelona, también mi ciudad.

Instalación de Icinga 2 e IcingaWeb 2 en Centos 8

Al igual que en otras ocasiones he utilizado la documentación oficial, que ya sabéis que siempre es la mejor opción. La primera parte será sobre la instalación de Icinga 2, para después ver la instalación web y de la base de datos.

Instalar Icinga 2

Esta instalación la hacemos sobre Centos 8, por lo que los mismos pasos también servirían para RHEL 8.

Añadimos el repositorio para esta distribución:

rpm -Uvh https://packages.icinga.com/epel/icinga-rpm-release-8-latest.noarch.rpm

Para la instalación es necesario que también tengamos habilitado el repositorio EPEL

dnf install epel-release

Una vez ya tenemos ambos repositorios, procedemos con la instalación:

dnf install icinga2
systemctl enable icinga2
systemctl start icinga2

Al ser un sistema con systemd, en el paso anterior hemos utilizado 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:

icinga2 feature list

Instalar Nagios Plugins

Ya sabéis que Icinga es un proyecto derivado de Nagios, por lo que utiliza los mismos plugins que este.

En otras ocasiones hemos utilizado los paquetes que ya vienen en el repositorio EPEL, pero en esta entrada compilaremos la versión 2.3.3, desde las fuentes.

Instalamos dependencias y los paquetes necesarios para compilar:

dnf install gcc glibc glibc-common make gettext 
dnf install automake autoconf wget openssl-devel tar

Descargamos la versión 2.3.3 y descomprimimos el contenido:

wget https://nagios-plugins.org/download/nagios-plugins-2.3.3.tar.gz
tar zcvf nagios-plugins-2.3.3.tar.gz -C /opt

Accedemos a la carpeta y compilamos:

cd /opt/nagios-plugins-2.3.3/
./configure --with-nagios-user=icinga --with-nagios-group=icinga
make
make install

Recuera que los plugins quedan ubicados en la ruta /usr/local/nagios/libexec/

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

systemctl restart icinga2

SELinux, módulo IDO y base de datos

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:

dnf 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

Me iba a decantar por la instalación con MariaDB, pero me ha dado problemas más adelante cuando he querido instalar el módulo IDO, por lo que vamos a utilizar MySQL.

Procedemos con la instalación:

sudo dnf install mysql-server mysql-common
sudo systemctl start mysqld.service
sudo systemctl enable mysqld.service

Y como siempre os recomiendo, ejecutamos mysql_secure_installation, para asegurar la instalación. Entre otras cosas le asignaremos una contraseña al usuario «root»

A continuación, instalamos el módulo IDO:

dnf 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.

# mysql -u root -p
 
CREATE DATABASE icinga;
CREATE USER 'icingauser' IDENTIFIED BY 'contrasea';
GRANT ALL PRIVILEGES ON icinga.* TO 'icingauser'@'%' WITH GRANT OPTION;
 
CREATE DATABASE icingaweb;
GRANT ALL PRIVILEGES ON icingaweb.* TO 'icingauser'@'%' WITH GRANT OPTION;
 
FLUSH PRIVILEGES;

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

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’

icinga2 feature enable ido-mysql

Y reiniciamos el servicio:

systemctl restart icinga2

Ahora ya podmeos pasar a la instalación de la parte web.

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 de esta parte:

dnf install httpd
systemctl enable httpd
systemctl start httpd

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

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

Tanto Icinga Web 2 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’

icinga2 api setup

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

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

Y añadimos:

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

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:

library "db_ido_mysql"
 
object IdoMysqlConnection "ido-mysql" {
user = "icingauser"
password = "contrasea1412"
host = "localhost"
database = "icinga"
}

Reiniciamos el servicio:

systemctl restart icinga2

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

Instalamos Icinga Web 2

yum install icingaweb2 icingacli -y

Si utilizamos SELinux, adicionalmente debemos instalar:

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:

dnf install php-fpm
systemctl start php-fpm.service
systemctl enable php-fpm.service

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

icingacli setup token create

Siempre lo podemos visualizar con el siguiente comando:

icingacli setup token show

Reiniciar servicio web:

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»

Antes de pasar a la parte web, es importante que tengamos instalado el módulo de PHP para «Imagick«. Por suerte tenéis una entrada que le dediqué a este tema en su día: Instalar ImageMagick en RHEL, Centos y Scientific Linux

Volvemos a reiniciar los servicios web:

systemctl restart httpd.service<br />systemctl restart php-fpm.service

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

Una vez ya hemos accedido a la URL «http://ip-o-dominio/icingaweb2» y hemos añadido el token, podemo indicar que además de la instalación base, también se instale la documentación y las traducciones a otros idiomas:

Inicio instalación web de Icinga Web 2

El instalador, en el siguiente paso, nos indicará si el servidor cumple con todos los requisitos para continuar con la instalación:

Información de los requisitos

A continuación, indicamos que vamos a utilizar una base de datos, para guardar la información de los usuarios que se autentificarán.

Configuramos la base de datos de usuarios

Siempre podemos comprobar la configuración utilizando el botón «Validate Configuration»

Indicamos el nombre del backend:

Indicamos el nombre del backend

Configuramos el nombre y contraseña del usuario administrador:

Configuramos el usuario administrador

Indicamos la configuración:

Configuramos la aplicación

A continuación empezamos con la configuración del backend.

Empezamos con la configuración del backend

Y configuramos la base de datos IDO

Configuramos y validamos la base de datos IDO

Ahora viene una parte muy importante. Debemos indicar los datos de la API, que habíamos puesto en su fichero correspondiente, al principio de esta entrada:

Indicamos los datos dle usuario para la API

Si todo ha ido bien durante la instalación, tendríamos que ver la siguiente página antes de finalizar:

Mensaje que la instalación ha sido correcta

Antes de acabar la entrada, como hemos instalado los Nagios Plugins desde las fuentes, Icinga no encuentra los plugins, para solventarlo simplemente hemos de seguir estos pasos:

cd /usr/lib64/nagios
mv plugins plugins.original
ln -s /usr/local/nagios/libexec plugins

De esta manera ya tenemos los monitores funcionando.

Y con esto ya lo tendríamos:

Aspecto del producto tras la instalación

En mi caso tengo una alarma por SWAP, pero es normal, ya que el VPS por defecto no la tiene habilitada.

Si no sabes muy bien que hacer a partir de aquí, puedes consultar las siguientes entradas:

Icinga Director: Un módulo imprescindible

Primeros pasos con el módulo Director de Icinga 2

Creación de servicios en Icinga 2 con Director

Y esto es todo. Espero que esta entrada os sea de utilidad en algún momento. Nos vamos leyendo.

Siempre podéis consultar la web oficial: https://icinga.com