Cómo instalar la herramienta de monitorización Icinga 2 en CentOS 8

La monitorización es uno de los componentes más importantes de la infraestructura del servidor y del centro de datos. Te ayudará a detectar los problemas y las incidencias que se produzcan en tus servidores para que puedas resolverlos más rápidamente. Existen algunas herramientas de monitorización de código abierto, y una de las más populares es«Icinga 2«.

Icinga se creó como un fork de la popular herramienta de monitorización Nagios y ahora se ha reescrito desde cero en C++. Como fork del proyecto Nagios, Icinga ha venido con herramientas y características adicionales, como el director icinga, los módulos icinga y los plugins icinga. Además, tiene soporte para la monitorización distribuida, que te permite gestionar varias instancias de Icinga desde un solo panel.

En este tutorial, te mostraremos paso a paso cómo instalar y configurar Icinga2 con Apache2 y MariaDB en un servidor CentOS 8.

Requisitos previos

  • Un servidor CentOS 8. Asegúrate de que está actualizado a la última versión.
  • Al menos 2GB de RAM y 2 núcleos. Si tienes más, será mejor.
  • Un usuario con privilegios Sudo.

Configurar los repositorios

En primer lugar, tienes que añadir el repositorio de epel, remi e icinga al sistema centos 8. Luego tienes que instalar la herramienta dnf `config-manager` y habilitar el repositorio `PowerTools` utilizando esa herramienta.

1. Añade el repositorio epel y remi para los servidores centos 8 ejecutando los siguientes comandos.

sudo dnf install -y epel-release
sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

2. Ahora ejecuta el siguiente comando para descargar y añadir el repositorio Icinga para el sistema centos 8.

sudo dnf install -y https://packages.icinga.com/epel/icinga-rpm-release-8-latest.noarch.rpm

3. Después, ejecuta los siguientes comandos para instalar la herramienta dnf config-manager y habilitar el repositorio PowerTools.

sudo dnf install -y 'dnf-command(config-manager)'
sudo dnf config-manager --set-enabled powertools

4. Una vez completado todo el proceso, verifica todos los repositorios habilitados en tu sistema utilizando el siguiente comando.

sudo dnf repolist

Verás una salida similar a la de abajo, y asegúrate de que los repositorios epel, remi, icinga-* y powertools están en la lista.

repo id                                                                                              repo name
appstream                                                                                            CentOS Linux 8 - AppStream
baseos                                                                                               CentOS Linux 8 - BaseOS
epel                                                                                                 Extra Packages for Enterprise Linux 8 - x86_64
epel-modular                                                                                         Extra Packages for Enterprise Linux Modular 8 - x86_64
extras                                                                                               CentOS Linux 8 - Extras
icinga-stable-release                                                                                ICINGA (stable release for epel)
powertools                                                                                           CentOS Linux 8 - PowerTools
remi-modular                                                                                         Remi's Modular repository for Enterprise Linux 8 - x86_64
remi-safe                                                                                            Safe Remi's RPM repository for Enterprise Linux 8 - x86_64

Instalación y configuración de la pila LAMP

La herramienta de monitorización de Icinga tiene dos componentes principales,«icinga2«, que se encarga de todos los trabajos de monitorización, y«icingaweb2«, que es una potente, limpia y rápida aplicación web basada en PHP que te permite gestionar tu pila Icinga desde un navegador web. Ahora vas a instalar y configurar la pila LAMP básica en el sistema centos 8.

1. Habilita el módulo remi para PHP 7.4 utilizando el siguiente comando.

sudo dnf module enable -y php:remi-7.4

2. A continuación, ejecuta el siguiente comando para instalar los paquetes básicos de LAMP Stack.

sudo dnf install -y httpd mariadb-server mariadb php php-cli php-devel php-pear make php-mysqlnd php-pecl-imagick php-pecl-imagick-devel

2. Ahora inicia los servicios de apache (httpd en centos) y mariadb y permite que ambos se inicien al arrancar el sistema.

sudo systemctl enable --now httpd
sudo systemctl enable --now mariadb

Y verás una salida similar a la siguiente, los servicios apache y mariadb iniciados y habilitados.

# Apache started and enabled
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.

# MariaDB started and enabled
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

2. Después, ejecuta el siguiente comando para configurar la contraseña de mariadb como root y, por razones de seguridad, eliminarás el usuario anónimo y de prueba de la base de datos por defecto, deshabilitando también el inicio de sesión remoto para el usuario root.

sudo mysql_secure_installation

A continuación se muestra la salida similar que obtendrás, y asegúrate de escribir una nueva contraseña fuerte para el usuario root de mariadb y escribe«Y» para confirmar todas las acciones.

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

To log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): PRESS ENTER
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] Y
New password: TYPE STRONG PASSWORD
Re-enter new password: TYPE STRONG PASSWORD
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Instalación y configuración de Icinga2

Ahora vas a instalar y configurar el componente principal de Icinga en sí. Esta etapa cubrirá la instalación de los paquetes de icinga2, la creación de la nueva base de datos y el usuario, la importación del esquema de la base de datos y la configuración de la API REST de Icinga.

1. Ejecuta el siguiente comando para instalar los paquetes de la herramienta de monitorización de Icinga.

sudo dnf install -y icinga2 nagios-plugins-all

Después, inicia y habilita el servicio icinga2, y verifica el estado del servicio Icinga.

sudo systemctl enable --now icinga2
sudo systemctl status icinga2

Si ves una salida similar a la siguiente, el servicio Icinga está funcionando.

# Icinga2 started and enabled
Created symlink /etc/systemd/system/multi-user.target.wants/icinga2.service → /usr/lib/systemd/system/icinga2.service.

# Icinga2 status running
? icinga2.service - Icinga host/service/network monitoring system
   Loaded: loaded (/usr/lib/systemd/system/icinga2.service; enabled; vendor preset: disabled)
   Active: active (running) since Sun 2021-07-18 02:38:19 UTC; 6s ago
  Process: 31290 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/sysconfig/icinga2 (code=exited, status=0/SUCCESS)
 Main PID: 31298 (icinga2)
    Tasks: 13 (limit: 4964)
   Memory: 20.9M
   CGroup: /system.slice/icinga2.service
           ??31298 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
           ??31319 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
           ??31324 /usr/lib64/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log

2. A continuación, si tienes el SELinux en funcionamiento en el sistema centos 8, tienes que instalar el paquete‘icinga2-selinux‘. Pero si el SELinux está desactivado, sáltate esta parte.

Ejecuta el siguiente comando para comprobar el estado de SELinux.

sudo sestatus

Si obtienes una salida similar a la siguiente, entonces tu SELinux está‘activado‘. En caso contrario, obtendrás la salidadisabled’, lo que significa que puedes saltarte la parte de SELinux.

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      32

Ahora instala el paquete icinga2-selinux utilizando el comando que aparece a continuación.

sudo dnf install -y icinga2-selinux

A continuación, aplica la nueva configuración reiniciando el servicio icinga2 y comprueba que Icinga está en funcionamiento bajo el contexto SELinux.

sudo systemctl restart icinga2
ps -eZ | grep icinga2

A continuación se muestra la salida similar que obtendrás.

system_u:system_r:icinga2_t:s0    33479 ?        00:00:00 icinga2
system_u:system_r:icinga2_t:s0    33499 ?        00:00:00 icinga2
system_u:system_r:icinga2_t:s0    33504 ?        00:00:00 icinga2

3. A continuación, instala el backend IDO MySQL para el icinga2 utilizando el siguiente comando.

sudo dnf install -y icinga2-ido-mysql

4. Ahora ejecuta el siguiente comando para entrar en el shell de MySQL y escribe tu contraseña de root.

sudo mysql -u root -p

4. Crea una nueva base de datos y un nuevo usuario para el servicio icinga2 utilizando las consultas mysql que aparecen a continuación.

MariaDB [(none)]> CREATE DATABASE icinga;
MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'icingapassdb';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit

Ahora ejecuta el comando mysql de abajo para importar el esquema de la base de datos icinga2-ido-mysql a la base de datos icinga, y escribe la contraseña de tu contraseña de root de mariadb.

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

Después, activa la función icinga2-ido-mysql y reinicia el servicio icinga2 para aplicar la nueva configuración mediante los comandos que aparecen a continuación.

sudo icinga2 feature enable ido-mysql
sudo systemctl restart icinga2

Y verás una salida similar a la de la imagen de abajo.

Habilitar y configurar el icinga 2 ido-mysql

4. A continuación, tienes que generar la configuración de la API REST de icinga2 y los certificados. El icingaweb2 necesita la API REST para enviar acciones relacionadas con los trabajos de monitorización, como la reprogramación de los controles, la consulta de los detalles de los objetos, etc.

Ejecuta el siguiente comando de icinga2 para generar un nuevo usuario de la API, la configuración y los certificados TLS.

sudo icinga2 api setup

Y verás una salida similar a la siguiente, el nuevo usuario root con contraseña está disponible en el archivo de configuración /etc/icinga2/conf.d/api-users.conf, y los certificados TLS están disponibles en el directorio /var/lib/icinga2/certs/.

information/cli: Generating new CA.
information/base: Writing private key to '/var/lib/icinga2/ca//ca.key'.
information/base: Writing X509 certificate to '/var/lib/icinga2/ca//ca.crt'.
information/cli: Generating new CSR in '/var/lib/icinga2/certs//centos8.csr'.
information/base: Writing private key to '/var/lib/icinga2/certs//centos8.key'.
information/base: Writing certificate signing request to '/var/lib/icinga2/certs//centos8.csr'.
information/cli: Signing CSR with CA and writing certificate to '/var/lib/icinga2/certs//centos8.crt'.
information/pki: Writing certificate to file '/var/lib/icinga2/certs//centos8.crt'.
information/cli: Copying CA certificate to '/var/lib/icinga2/certs//ca.crt'.
information/cli: Adding new ApiUser 'root' in '/etc/icinga2/conf.d/api-users.conf'.
information/cli: Reading '/etc/icinga2/icinga2.conf'.
information/cli: Enabling the 'api' feature.
Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect.
information/cli: Updating 'NodeName' constant in '/etc/icinga2/constants.conf'.
information/cli: Created backup file '/etc/icinga2/constants.conf.orig'.
information/cli: Updating 'ZoneName' constant in '/etc/icinga2/constants.conf'.
information/cli: Backup file '/etc/icinga2/constants.conf.orig' already exists. Skipping backup.
Done.

Now restart your Icinga 2 daemon to finish the installation!

Opcionalmente, para añadir el nuevo usuario de la API manualmente, edita la configuración /etc/icinga2/conf.d/api-users.conf utilizando el comando editor nano como se indica a continuación.

sudo nano /etc/icinga2/conf.d/api-users.conf

Pega la siguiente configuración de ejemplo como se indica a continuación, y asegúrate de definir el usuario de la API, la contraseña y definir el permiso como necesites.

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

Por último, aplica la nueva configuración reiniciando el servicio icinga2 con el siguiente comando.

sudo systemctl restart icinga2

Instalación y configuración de Icingaweb2

En esta fase, instalarás y configurarás la aplicación web icingaweb2, incluyendo la configuración de la base de datos y la generación del token de instalación.

1. Ejecuta el siguiente comando para instalar los paquetes de icingaweb2.

sudo dnf install -y icingaweb2 icingacli

Durante la instalación, se generará la nueva configuración de apache para icingaweb2. Verifica la nueva configuración con el siguiente comando.

cat /etc/httpd/conf.d/icingaweb2.conf

A continuación se muestra la configuración que verás.

Alias /icingaweb2 "/usr/share/icingaweb2/public"

# Remove comments if you want to use PHP FPM and your Apache version is older than 2.4
#<IfVersion < 2.4>
#    # Forward PHP requests to FPM
#    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
#    <LocationMatch "^{urlPath}/(.*\.php)$">
#        ProxyPassMatch "fcgi://127.0.0.1:9000/{documentRoot}/$1"
#    </LocationMatch>
#</IfVersion>

<Directory "/usr/share/icingaweb2/public">
    Options SymLinksIfOwnerMatch
    AllowOverride None
.......

Para aplicar la nueva configuración, reinicia el servicio apache/httpd utilizando el siguiente comando.

sudo systemctl restart httpd

2. A continuación, escribe el siguiente comando para entrar en el shell de mysql.

sudo mysql -u root -p

Ejecuta algunas consultas mysql que aparecen a continuación para crear una nueva base de datos y un nuevo usuario para el icingaweb2.

MariaDB [(none)]> CREATE DATABASE icingaweb2;
MariaDB [(none)]> GRANT ALL ON icingaweb2.* TO [email protected] IDENTIFIED BY 'icingaweb2passdb';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit

3. Después de eso, genera el token de configuración de icingaweb2 para la instalación en la siguiente etapa utilizando el siguiente comando.

sudo icingacli setup token create
sudo icingacli setup token show

Se te mostrará la siguiente salida. Asegúrate de copiar el token de instalación de icinga2 en tu nota.

# Generated setup token
The newly generated setup token is: 41e33db4cf0c5617

# Show generated token
The current setup token is: 41e33db4cf0c5617

Configurar Icinga Web 2 a través de la interfaz web

Ahora, abre tu navegador web y la URL http://SERVER-IP/icingaweb2/setupy obtendrás la página de instalación de icinga2.

1. Pega el token de instalación de icingaweb2 en la casilla y haz clic en Siguiente.

instalación y configuración de icinga web 2

2. Aquí, deja los módulos de Icinga por defecto y haz clic en Siguiente.

icinga web 2 elige los módulos por defecto

3. Ahora asegúrate de que todos los requisitos del sistema icingaweb2 tienen colores `verdes`, luego haz clic en el botón Siguiente.

requisitos del sistema icinga web 2

4. Deja la autenticación del backend como«Base de datos» por defecto y haz clic en Siguiente.

autentificación de la base de datos de icinga web 2

5. Escribe el nombre de la base de datos, el nombre de usuario y la contraseña para el icingaweb2 y vuelve a hacer clic en Siguiente.

configuración de la base de datos de icinga web 2

6. Deja el nombre del backend de autenticación como«icingaweb2» por defecto y haz clic en Siguiente.

nombre de autentificación de la base de datos de icinga web 2

7. Ahora escribe el nuevo usuario y la contraseña de administración, y haz clic en Siguiente.

icinga web 2 crear usuario administrador

8. Deja la configuración de la aplicación y del registro por defecto, y haz clic en Siguiente.

configuración y registro de la aplicación web 2 de icinga

9. Vuelve a comprobar todas las configuraciones, y luego haz clic en Siguiente para continuar.

icinga web 2 comprueba toda la configuración de la instalación

10. Ahora haz clic en Siguiente para configurar los módulos de monitorización de icinga2.

configuración de los módulos de icinga web 2

11. Escribe el nombre de la base de datos, el nombre de usuario y la contraseña para el icinga2-ido-mysql, y luego haz clic en el botón Validar configuración.

Si tienes un error como‘Actualmente no hay ninguna instancia de icinga escribiendo en el IDO. Asegúrate de que hay una instancia de icinga configurada y capaz de escribir en el IDO’, vuelve a tu terminal y edita la configuración manualmente.

Ejecuta el siguiente comando para editar la configuración del IDO.

sudo nano /etc/icinga2/features-available/ido-mysql.conf

Copia y pega la configuración de ido mysql como se indica a continuación.

object IdoMysqlConnection "ido-mysql" {
user = "icinga", password = "icingapassdb", host = "localhost", database = "icinga" }

Ahora pulsa Ctrl+x y luego y para guardar el archivo.

A continuación, reinicia el servicio Icinga2 con el siguiente comando.

sudo systemctl restart icinga2

Ahora vuelve al navegador web y activa la opción Omitir validación, y vuelve a pulsar Siguiente.

icinga 2 ido configuración de la base de datos mysql

12. Ahora elige el tipo de transporte«Archivo de comando local» y haz clic en Siguiente.

transporte del comando icinga 2

13. Deja la configuración de seguridad de la monitorización por defecto y haz clic en Siguiente.

icinga 2 supervisión de la seguridad

14. Vuelve a comprobar la configuración de la instalación de Icinga y haz clic en Finalizar para continuar.

instalación del acabado icinga 2

15. Cuando la instalación se realice con éxito, obtendrás la salida que aparece en la imagen siguiente. A continuación, haz clic en el botón Iniciar sesión en Icinga Web 2.

instalación de icinga 2 completada

Verificar la instalación de Icinga 2 e Icinga Web 2

1. Escribe tu usuario y contraseña de administrador de Icinga, y haz clic en el botón Iniciar sesión.

página de inicio de sesión de icinga 2

2. Ahora obtendrás una página similar a la siguiente.

panel de administración de icinga 2

Como puedes ver en el panel de control, hay algunos servicios detectados automáticamente por la herramienta de monitorización de icinga2. Los servicios con el color verde significan salud, y los servicios con el color amarillo significan que es necesario comprobar una advertencia. Y los servicios de error tendrán colores rojos.

Conclusión

Al finalizar el tutorial, has aprendido sobre la instalación y configuración de la herramienta de monitorización icinga2 en el último servidor CentOS 8 con LAMP Stack. La instalación de icinga2 requiere que te concentres en cada etapa, y lo más importante es que sepas lo que estás haciendo, no ejecutando comandos a ciegas.

También te podría gustar...