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:
El instalador, en el siguiente paso, nos indicará si el servidor cumple con todos los requisitos para continuar con la instalación:
A continuación, indicamos que vamos a utilizar una base de datos, para guardar la información de los usuarios que se autentificarán.
Siempre podemos comprobar la configuración utilizando el botón «Validate Configuration»
Indicamos el nombre del backend:
Configuramos el nombre y contraseña del usuario administrador:
Indicamos la configuración:
A continuación empezamos con la configuración del backend.
Y configuramos 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:
Si todo ha ido bien durante la instalación, tendríamos que ver la siguiente página antes de finalizar:
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:
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