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:
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
yum install epel-release
Una vez instalados ambos repositorios, ya podemos realizar la instalación del producto:
yum install icinga2
systemctl enable icinga2
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:
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:
yum install nagios-plugins-all
Es importante indicar que cada vez que realicemos un cambio debemos reiniciar el servicio, de la siguiente manera:
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.
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:
yum install mariadb-server mariadb
systemctl enable mariadb
systemctl start mariadb
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.
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.
# mysql -u root -p
CREATE DATABASE icinga;
GRANT ALL PRIVILEGES ON icinga.* TO 'icingauser'@'localhost' IDENTIFIED BY 'contrasea1412';
CREATE DATABASE icingaweb;
GRANT ALL PRIVILEGES ON icingaweb.* TO 'icingauser'@'localhost' IDENTIFIED BY 'contrasea1412';
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
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:
yum 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 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’
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ñadir:
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"
}
Una vez hechos los cambios podemos reiniciar:
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
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
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:
yum install rh-php71-php-fpm
systemctl start rh-php71-php-fpm.service
systemctl enable rh-php71-php-fpm.service
Continuamos con la instalación del módulo de PHP para la base de datos:
yum install rh-php71-php-mysqlnd
Reiniciamos FPM
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:
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»
Por último instalaremos el paquete ‘Imagick’, que nos permitirá trabajar con ficheros pdf. La instalación es:
yum install sclo-php71-php-pecl-imagick
Volvemos a reiniciar los servicios web:
systemctl restart httpd
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 ^.^
Hola David,
me ha sido muy útil tu tutorial.
Muchas Gracias.
Hola Miguel,
Me alegro que te haya servido.
Gracias por pasarte y comentar.
Saludos!
Hola David, gracias por compartir.
Tengo una consulta, porque cuando se ejecuta el comando para activar el modo de monitoreo basado en agente se pierde de vista los host configurados en modo simple?
impresionante explicación
Gracias, mola eso de «impresionante» 🙂
hola David. me ha funcionado perfectamente la receta y el vídeo. ¿tienes algun link donde explique como agregar host?. deseo monitorear dispositivos con snsmp.
Disculpa pero tengo el siguiente problema…
The Icinga Web 2 configuration directory defaults to «/etc/icingaweb2», if not explicitly set in the environment variable «ICINGAWEB_CONFIGDIR»
No puedo avanzar por los siguientes permios, sabes que puede ser?
hola, Muchas gracias por el aporte! Podrias mostrar como configurar Icinga 2 para monitorear host y services especificos?
Hola,
Aquí tienes explicado como crear y gestionar servicios y sets de servicios, utilizando el módulo Director en Icinga:
https://www.ochobitshacenunbyte.com/2018/07/08/icinga-director-un-modulo-imprescindible/
https://www.ochobitshacenunbyte.com/2019/02/17/primeros-pasos-con-el-modulo-director-de-icinga-2/
https://www.ochobitshacenunbyte.com/2019/02/19/creacion-de-servicios-en-icinga2-con-director/
Saludos
Menida vida, me cambio ya de nagios a esta app, gracias por el video y la guia, dure 40 min instalando desde 0, genial poder seguir miranto tu foro.
«Eres un maquina»
Hola Carlos,
Me alegro que te haya servido. Gracias por lo de máquina 🙂
Saludos!
Llevo pegandome un mes con los manuales y he entendido más en media hora con tu manual que con todos los suyos.!!! Mil gracias
Hola Juan Pablo,
Me alegro que te haya servido.Un saludo!
A modo de nota, yo he tenido problemas a la hora de instalar el paquete de «sclo-php71-php-pecl-imagick» de primeras porque ya no está en el repo de sclo y al instalarlo manualmente por problemas de dependencias (Requires: libMagickWand.so.5()(64bit)). Lo he solventado instalando también la versión 7.3 de php (fpm incluido). No he podido quitar la versión 7.1 porque está puesto como dependencias del icinga.
Hola colega,
Gracias por el aporte. Tendré que volver a echar un vistazo a la instalación, ya que esta entrada ya ha quedado un poco desfasada, tras dos años desde que la escribí.
Saludos!
David,
Muy buen tutorial, tengo una sola consulta cuando estoy la parte de instalacion de IDO database me sale el siguiente error:
«There is currently no icinga instance writing to the IDO. Make sure that a icinga instance is configured and able to write to the IDO».
Que podrá ser? Permisos sobre el directorio no es, ya que le di todos los permisos posibles.
Muchas gracias y saludos desde Uruguay
tengo el mismo problema
Hola Daniel y Jesús,
¿Qué versión de Centos estáis utilizando? Tened en cuenta que la guía la realicé sobre Centos 7.
Saludos
El ultimo paso de la configuracion me esta generando este error:
No se puede crear la cuenta «davinoskytavarez». Ocurrió un error:
ERROR: Zend_Db_Statement_Exception in /usr/share/icingaweb2/library/vendor/Zend/Db/Statement/Pdo.php:225 with message: SQLSTATE[42S02]: Base table or view not found: 1146 Table ‘icingaweb.icingaweb_user’ doesn’t exist, query was: SELECT COUNT(*) AS cnt FROM icingaweb_user WHERE (name = ‘davinoskytavarez’)
La cuenta «davinoskytavarez» se ha definido correctamente como administrador inicial.
Hola,
Esta entrada tiene más de cinco años, imagino que la instalación de Icinga habrá variado en todo este tiempo. Tiene pinta que en algún paso no se ha creado la tabla «icingaweb.icingaweb_user» en la base de datos. Más no te puedo ayudar, revisa los puntos de instalación o bien busca una guía de instalación actualizada para el año 2023.
Saludos
Hi, thanks for your cook-book. I success to install it but get error on the last step when the system will create the user on icingaweb2 database with this: Enter password:
ERROR 1071 (42000) at line 15: Specified key was too long; max key length is 767 bytes