Monitoreo · 26 min read · Nov 07, 2025

Cómo instalar el software de monitoreo Icinga 2 en Ubuntu 22.04 LTS

Icinga2 es un software de monitoreo de red gratuito y de código abierto que puede verificar la disponibilidad de recursos de la red y notificar a los usuarios sobre interrupciones. Puedes monitorear servicios de red (SMTP, POP3, HTTP, NNTP, ping), recursos de host (uso de CPU, uso de disco) y componentes de red (conmutadores, enrutadores, sensores de temperatura y humedad) utilizando Icinga2. Se puede integrar con plugins de Nagios.

En el siguiente tutorial, aprenderás a instalar Icinga2 en un servidor Ubuntu 22.04 y cómo conectarlo a un nodo cliente. En lugar del servidor Apache por defecto, utilizaremos Nginx para ejecutar Icinga2 Web.

Prerrequisitos

  • Dos máquinas que ejecuten Ubuntu 22.04. Una de ellas actuará como servidor maestro y la otra como cliente para monitoreo.
  • Un usuario no root con privilegios de sudo en ambos servidores.
  • Un nombre de dominio completamente calificado (FQDN) para el servidor maestro, icinga.example.com y el nodo cliente, client.example.com.
  • Asegúrate de que todo esté actualizado.
    $ sudo apt update
    $ sudo apt upgrade
  • Algunos paquetes que tu sistema necesita.
    $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
    ``` Algunos de estos paquetes pueden ya estar instalados en tu sistema.

Paso 1 - Configurar el Firewall en el servidor Maestro

El primer paso es configurar el firewall. Ubuntu viene con ufw (Uncomplicated Firewall) por defecto.

Verifica si el firewall está en funcionamiento.

$ sudo ufw status

Deberías obtener la siguiente salida.

Status: inactive

Permite el puerto SSH para que el firewall no interrumpa la conexión actual al habilitarlo.

$ sudo ufw allow OpenSSH

Permite el puerto 5665 que es requerido por el cliente Icinga2 para conectarse al servidor.

$ sudo ufw allow 5665

Permite también los puertos HTTP y HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Habilita el Firewall

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Verifica el estado del firewall nuevamente.

$ sudo ufw status

Deberías ver una salida similar.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
5665                       ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
5665 (v6)                  ALLOW       Anywhere (v6)

Paso 2 - Instalar MySQL

Ubuntu 22.04 viene con la última versión de MySQL. Puedes instalarlo con un solo comando.

$ sudo apt install mysql-server

Verifica la versión de MySQL.

$ mysql --version
mysql  Ver 8.0.32-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))

Este paso es necesario para las versiones de MySQL 8.0.28 y superiores. Ingresa al Shell de MySQL.

$ sudo mysql

Ejecuta el siguiente comando para establecer la contraseña para tu usuario root. Asegúrate de que tenga una mezcla de números, mayúsculas, minúsculas y caracteres especiales.

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword12!';

Sal del shell.

mysql> exit

Ejecuta el script de instalación segura de MySQL.

$ sudo mysql_secure_installation

Primero, se te pedirá tu contraseña de root. Ingrésala. A continuación, se te pedirá que instales el Componente de Validación de Contraseña. Verifica la fortaleza de las contraseñas utilizadas en MySQL. Presiona Y para instalarlo. A continuación, se te pedirá que establezcas el nivel de la política de validación de contraseñas. Elige 2 ya que es el más fuerte.

Securing the MySQL server deployment.

Enter password for user root:

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: Y

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Using existing password for root.

Estimated strength of the password: 100

A continuación, ingresa N para rechazar cambiar tu contraseña de root. También, ingresa Y para eliminar usuarios anónimos, deshabilitar inicios de sesión remotos de root, eliminar la base de datos de prueba y recargar las tablas de privilegios.

Change the password for root ? ((Press y|Y for Yes, any other key for No) : N

 ... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : Y
Success.

By default, MySQL 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : Y
Success.

All done!

Paso 3 - Configurar MySQL

Inicia sesión en el shell de MySQL. Ingresa tu contraseña de root cuando se te solicite.

$ sudo mysql -u root -p

Crea la base de datos Icinga.

mysql> CREATE DATABASE icinga2;

Crea la cuenta de usuario SQL para Icinga2. No cambies la base de datos y el nombre de usuario porque ya están establecidos por defecto. Si deseas cambiarlos, necesitarás realizar algunos pasos adicionales al instalar el controlador de MySQL en el Paso 5. Ingresa la contraseña y recibirás un error y luego se te pedirá reconfigurar donde podrás especificar tu nombre de base de datos y usuarios personalizados.

mysql> CREATE USER 'icinga2'@'localhost' IDENTIFIED BY 'Your_password2';

Otorga todos los privilegios en la base de datos al usuario.

mysql> GRANT ALL PRIVILEGES ON icinga2.* TO 'icinga2'@'localhost';

Actualiza los privilegios del usuario.

mysql> FLUSH PRIVILEGES;

Sal del shell.

mysql> exit

Paso 4 - Instalar Icinga2 y plugins de monitoreo en el servidor Maestro

Usaremos el repositorio oficial de Icinga2 para la instalación. Descarga e importa la clave GPG de Icinga2.

$ wget -O - https://packages.icinga.com/icinga.key | sudo gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg

Ejecuta los siguientes comandos para crear y agregar la información del repositorio de Icinga2 a la lista de fuentes de APT.

$ echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/ubuntu icinga-`lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list
$ echo "deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] http://packages.icinga.com/ubuntu icinga-`lsb_release -cs` main" | sudo tee -a /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list

Actualiza la lista de repositorios del sistema.

$ sudo apt update

Instala Icinga2 y los plugins de monitoreo.

$ sudo apt install icinga2 monitoring-plugins -y

Paso 5 - Instalar el controlador IDO MySQL en el servidor Maestro

Para que Icinga2 funcione, necesita una base de datos. Para eso, necesitamos instalar el controlador IDO MySQL y configurar la conexión a la base de datos. Ejecuta el siguiente comando para instalar el controlador de MySQL.

$ sudo apt install -y icinga2-ido-mysql

Se te pedirá que configures el controlador y crees una base de datos utilizando la utilidad dbconfig-common. Selecciona para continuar.

A continuación, se te pedirá la contraseña de MySQL para la base de datos icinga2. Ingresa la contraseña configurada en el paso 3 para continuar. Ingresa la contraseña de la base de datos para Icinga2

Se te pedirá que confirmes la contraseña nuevamente. Confirma la contraseña de Icinga2

A continuación, se te pedirá que habilites la función ido-mysql. Selecciona para continuar. Función IDO-MySQL de Icinga

Puedes verificar los detalles de la base de datos en el archivo /etc/icinga2/features-available/ido-mysql.conf.

$ cat /etc/icinga2/features-available/ido-mysql.conf
/**
 * The db_ido_mysql library implements IDO functionality
 * for MySQL.
 */

library "db_ido_mysql"

object IdoMysqlConnection "ido-mysql" {
  user = "icinga2",
  password = "Your_password2",
  host = "localhost",
  database = "icinga2"
}

Habilita la función ido-mysql.

$ sudo icinga2 feature enable ido-mysql

Reinicia el servicio de Icinga2.

$ sudo systemctl restart icinga2

Verifica el estado del servicio.

$ sudo systemctl status icinga2
? icinga2.service - Icinga host/service/network monitoring system
     Loaded: loaded (/lib/systemd/system/icinga2.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/icinga2.service.d
             ??limits.conf
     Active: active (running) since Mon 2023-05-01 08:02:36 UTC; 1s ago
    Process: 9823 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/default/icinga2 (code=exited, status=0/SUCCESS)
   Main PID: 9828 (icinga2)
     Status: "Startup finished."
      Tasks: 10
     Memory: 17.6M
        CPU: 657ms
     CGroup: /system.slice/icinga2.service
             ??9828 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
             ??9846 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
             ??9849 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log

Paso 6 - Configurar la API de Icinga2

Para gestionar y configurar el monitoreo de Icinga2 a través de HTTP, necesitas configurar la API de Icinga2. Ejecuta el siguiente comando para habilitar la API de Icinga2, generar certificados TLS para Icinga2 y actualizar las configuraciones de Icinga2.

$ sudo icinga2 api setup

Obtendrás una salida similar.

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//icinga.example.com.csr'.
information/base: Writing private key to '/var/lib/icinga2/certs//icinga.example.com.key'.
information/base: Writing certificate signing request to '/var/lib/icinga2/certs//icinga.example.com.csr'.
information/cli: Signing CSR with CA and writing certificate to '/var/lib/icinga2/certs//icinga.example.com.crt'.
information/pki: Writing certificate to file '/var/lib/icinga2/certs//icinga.example.com.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!

El comando anterior crea un archivo /etc/icinga2/conf.d/api-users.conf con el usuario predeterminado root teniendo todos los permisos sobre la API de Icinga2. Necesitamos un nuevo usuario con los permisos mínimos requeridos por Icinga Web.

Abre el archivo api-users.conf para editar.

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

Agrega el siguiente código al final del archivo.

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

Toma nota de las credenciales que necesitarás más adelante para acceder al sitio web. El servidor API de Icinga2 escucha en el puerto 5665 por defecto. Reinicia el servicio para que los cambios surtan efecto.

$ sudo systemctl restart icinga2

El siguiente paso es instalar la interfaz web de Icinga. Viene preconfigurada para Apache, pero utilizaremos el servidor Nginx. Por lo tanto, primero necesitamos instalar Nginx y los certificados SSL.

Paso 7 - Instalar Nginx

Ubuntu 22.04 viene con una versión más antigua de Nginx. Para instalar la última versión, necesitas descargar el repositorio oficial de Nginx.

Importa la clave de firma de Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Agrega el repositorio para la versión estable de Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Actualiza los repositorios del sistema.

$ sudo apt update

Instala Nginx.

$ sudo apt install nginx

Verifica la instalación.

$ nginx -v
nginx version: nginx/1.24.0

Inicia el servidor Nginx.

$ sudo systemctl start nginx

Paso 8 - Instalar SSL

Necesitamos instalar Certbot para generar el certificado SSL. Puedes instalar Certbot utilizando el repositorio de Ubuntu o obtener la última versión utilizando la herramienta Snapd. Usaremos la versión de Snapd.

Ubuntu 22.04 viene con Snapd instalado por defecto. Ejecuta los siguientes comandos para asegurarte de que tu versión de Snapd esté actualizada.

$ sudo snap install core && sudo snap refresh core

Instala Certbot.

$ sudo snap install --classic certbot

Utiliza el siguiente comando para asegurarte de que el comando Certbot se pueda ejecutar creando un enlace simbólico al directorio /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Ejecuta el siguiente comando para generar un certificado SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d icinga.example.com

El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/icinga.example.com en tu servidor.

Genera un certificado de grupo Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Verifica el servicio programador de renovación de Certbot.

$ sudo systemctl list-timers

Encontrarás snap.certbot.renew.service como uno de los servicios programados para ejecutarse.

NEXT                        LEFT          LAST                        PASSED         UNIT                     ACTIVATES
------------------------------------------------------------------------------------------------------------------------------------
Mon 2023-05-01 13:37:57 UTC 3h 45min left Mon 2023-05-01 07:20:42 UTC 2h 31min ago   ua-timer.timer           ua-timer.service
Mon 2023-05-01 14:39:29 UTC 4h 47min left Sat 2023-02-04 16:04:18 UTC 2 months ago   motd-news.timer          motd-news.service
Mon 2023-05-01 15:53:00 UTC 6h left       n/a                         n/a            snap.certbot.renew.timer snap.certbot.renew.service

Realiza una prueba del proceso para verificar si la renovación SSL funciona correctamente.

$ sudo certbot renew --dry-run

Si no ves errores, estás listo. Tu certificado se renovará automáticamente.

Paso 9 - Configurar Nginx y PHP

Dado que Icinga está configurado para Apache, el paquete PHP-FPM no está instalado por defecto. También necesitarás el módulo PHP Imagick si deseas exportar los gráficos a PDF. Ejecuta el siguiente comando para instalar PHP-FPM y la biblioteca PHP Imagick.

$ sudo apt install php-fpm php-imagick

Configurar PHP-FPM

Abre el archivo /etc/php/8.1/fpm/pool.d/www.conf.

$ sudo nano /etc/php/8.1/fpm/pool.d/www.conf

Necesitamos establecer el usuario/grupo Unix de los procesos PHP a nginx. Encuentra las líneas user=www-data y group=www-data en el archivo y cámbialas a nginx.

...
; Unix user/group of processes
; Note: The user is mandatory. If the group is not set, the default user's group
;       will be used.
user = nginx
group = nginx
...

Encuentra las líneas listen.owner = www-data y listen.group = www-data en el archivo y cámbialas a nginx.

; Set permissions for unix socket, if one is used. In Linux, read/write
; permissions must be set in order to allow connections from a web server. Many
; BSD-derived systems allow connections regardless of permissions. The owner
; and group can be specified either by name or by their numeric IDs.
; Default Values: user and group are set as the running user
;                 mode is set to 0660
listen.owner = nginx
listen.group = nginx

Guarda el archivo presionando Ctrl + X y luego Y cuando se te solicite.

Reinicia el servicio PHP-FPM.

$ sudo systemctl restart php8.1-fpm

Configurar Nginx

Crea y abre el archivo /etc/nginx/conf.d/icinga.conf para editar.

$ sudo nano /etc/nginx/conf.d/icinga.conf

Pega el siguiente código en él.

server {
    listen       443 ssl http2;
    listen       [::]:443 ssl http2;
    server_name  icinga.example.com;

    access_log  /var/log/nginx/icinga.access.log;
    error_log   /var/log/nginx/icinga.error.log;

    # SSL
    ssl_certificate      /etc/letsencrypt/live/icinga.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/icinga.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/icinga.example.com/chain.pem;
    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
    resolver 8.8.8.8;

    location ~ ^/index\.php(.*)$ {
        # fastcgi_pass 127.0.0.1:9000;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock; # Depends On The PHP Version
        fastcgi_index index.php;
        # try_files $uri =404;
        # fastcgi_split_path_info ^(.+\.php)(/.+)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME /usr/share/icingaweb2/public/index.php;
        fastcgi_param ICINGAWEB_CONFIGDIR /etc/icingaweb2;
        fastcgi_param REMOTE_USER $remote_user;
    }

    location ~ ^/(.*)? {
        alias /usr/share/icingaweb2/public;
        index index.php;
        rewrite ^/$ /dashboard;
        try_files $1 $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        return 404;
    }
}

# enforce HTTPS
server {
    listen       80;
    listen       [::]:80;
    server_name  icinga.example.com;
    return 301   https://$host$request_uri;
}

Observa que el directorio raíz que se utilizará en la configuración de Nginx es /usr/share/icingaweb2/public.

Guarda el archivo presionando Ctrl + X y luego Y cuando se te solicite una vez que termines.

Abre el archivo /etc/nginx/nginx.conf para editar.

$ sudo nano /etc/nginx/nginx.conf

Agrega la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Guarda el archivo presionando Ctrl + X y luego Y cuando se te solicite.

Verifica la sintaxis del archivo de configuración de Nginx.

$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Reinicia el servicio de Nginx.

$ sudo systemctl restart nginx

Paso 10 - Preparar la configuración web

Antes de acceder a Icinga Web, necesitamos configurarlo. Al usar Icinga Web, se requiere autenticar utilizando un token. Genera el token utilizando el siguiente comando.

$ sudo icingacli setup token create
The newly generated setup token is: 3c4d4e155635f512

Toma nota del token porque lo necesitarás más adelante. Siempre puedes recuperarlo más tarde utilizando el siguiente comando.

$ sudo icingacli setup token show
The current setup token is: 3c4d4e155635f512

El siguiente paso es crear una base de datos y un usuario de base de datos. Inicia sesión en el shell de MySQL.

$ sudo mysql -u root -p

Crea la base de datos Icinga Web.

mysql> CREATE DATABASE icingaweb2;

Crea la cuenta de usuario SQL para Icinga Web.

mysql> CREATE USER 'icingaweb2'@'localhost' IDENTIFIED BY 'Your_password3';

Otorga todos los privilegios en la base de datos al usuario.

mysql> GRANT ALL PRIVILEGES ON icingaweb2.* TO 'icingaweb2'@'localhost';

Actualiza los privilegios del usuario.

mysql> FLUSH PRIVILEGES;

Sal del shell.

mysql> exit

Paso 11 - Configurar IcingaWeb

Abre la URL https://icinga.example.com en tu navegador y verás la siguiente pantalla. Página de configuración de Icinga Web

Ingresa el token generado en el paso anterior y presiona el botón Siguiente para continuar. Configuración de módulos de Icinga

En la siguiente pantalla, elige los módulos que deseas instalar y haz clic en Siguiente para continuar. El módulo Monitoreo está seleccionado por defecto. En la siguiente página, se te mostrarán los requisitos y si han sido cumplidos. Asegúrate de que todos los requisitos estén marcados en verde. Página de requisitos de Icinga

Haz clic en Siguiente para proceder a la siguiente página para seleccionar el tipo de autenticación. Tipo de autenticación de Icinga

El tipo de autenticación está configurado en Base de Datos por defecto. Haz clic en Siguiente para continuar. Se te pedirá que completes las credenciales de la base de datos en la siguiente página. Credenciales de base de datos de Icinga Web

Completa las credenciales de la base de datos creadas en el paso 10. Haz clic en el botón Validar configuración para verificar las credenciales. Una vez verificadas, haz clic en Siguiente para continuar. A continuación, se te pedirá que nombres el backend de autenticación. Backend de autenticación de Icinga

Deja el valor predeterminado y haz clic en Siguiente para continuar. En la siguiente página, se te pedirá que crees una cuenta de administrador. Detalles del administrador de Icinga

Ingresa las credenciales para tu nueva cuenta de administrador y haz clic en Siguiente para continuar. A continuación, se te mostrará la página de Configuración de la aplicación. Configuración de la aplicación de Icinga

Deja todos los valores predeterminados para la configuración de la aplicación y el registro y haz clic en Siguiente para continuar. Se te pedirá que revises la configuración en la última página. Revisión de configuración de Icinga

Puedes volver atrás para cambiar cualquiera de los ajustes. Si estás satisfecho, haz clic en Siguiente para continuar.

Haz clic en Siguiente para proceder con la configuración del módulo de monitoreo. A continuación, se te pedirán las credenciales de la base de datos de Icinga. Credenciales de base de datos de Icinga

Completa las credenciales de la base de datos en el paso 3 y haz clic en Validar configuración para verificar la conexión. Una vez verificado, haz clic en Siguiente para continuar. A continuación, se te pedirá que completes los detalles de la API. Detalles de la API de Icinga

Completa las credenciales de la API creadas en el paso 6 y haz clic en Validar configuración para verificar la conexión. Haz clic en Siguiente para continuar. A continuación, se te pedirá que elijas variables personalizadas protegidas para la seguridad del monitoreo. Seguridad de monitoreo de Icinga

Deja los valores predeterminados y haz clic en Siguiente para continuar. A continuación, se te pedirá que revises la configuración de Monitoreo. Puedes volver atrás y cambiarlo si lo deseas. Revisión de configuración de monitoreo de Icinga

Si estás satisfecho, haz clic en Finalizar para completar la instalación. Instalación de Icinga finalizada

Una vez finalizado con éxito, haz clic en el botón Iniciar sesión en Icinga Web 2 para abrir la página de inicio de sesión. Página de inicio de sesión de Icinga Web

Ingresa los detalles de tu cuenta de administrador y haz clic en el botón Iniciar sesión para abrir el panel de control de Icinga Web. Panel de control de Icinga Web

Visita la página Resumen >> Servicios para verificar el estado del servidor maestro similar a lo siguiente. Página de servicios de Icinga Web

Paso 12 - Inicializar el servidor Maestro

El siguiente paso es inicializar el servidor maestro como el nodo maestro. El nodo maestro actúa como el controlador principal para la pila de monitoreo. Ejecuta el siguiente comando para iniciar el proceso de inicialización.

$ sudo icinga2 node wizard

Se te preguntará si es una configuración de agente. Ingresa n para configurar el nodo maestro.

Welcome to the Icinga 2 Setup Wizard!

We will guide you through all required configuration details.

Please specify if this is an agent/satellite setup ('n' installs a master setup) [Y/n]: n

A continuación, se te pedirá el nombre común o el nombre de dominio. Presiona Enter para seleccionar el valor predeterminado que se muestra.

Please specify the common name (CN) [icinga.example.com]:
Reconfiguring Icinga...
Checking for existing certificates for common name 'icinga.example.com'...
Certificate '/var/lib/icinga2/certs//icinga.example.com.crt' for CN 'icinga.example.com' already existing. Skipping certificate generation.
Generating master configuration for Icinga 2.
'api' feature already enabled.

A continuación, ingresa el nombre de la zona maestra y presiona Enter para continuar. En nuestro caso, es el mismo que el nombre de dominio del servidor.

Master zone name [master]: icinga.example.com

A continuación, se te preguntará si deseas agregar zonas globales adicionales. Presiona n para omitir la adición y presiona Enter para continuar.

Default global zones: global-templates director-global
Do you want to specify additional global zones? [y/N]: n

En el siguiente paso, deja el host y el puerto de enlace de la API como predeterminados y presiona Enter para continuar.

Please specify the API bind host/port (optional):
Bind Host []:
Bind Port []:

A continuación, presiona Y para deshabilitar la configuración dentro del directorio /etc/icinga2/conf.d/ ya que utilizaremos la configuración de Zonas de Icinga2 más adelante.

Do you want to disable the inclusion of the conf.d directory [Y/n]: Y
Disabling the inclusion of the conf.d directory...
Checking if the api-users.conf file exists...

Done.

Now restart your Icinga 2 daemon to finish the installation!

Reinicia el servicio para aplicar los cambios.

$ sudo systemctl restart icinga2

Y por último, ejecuta el siguiente comando para crear un ticket para el servidor cliente. Usa el nombre de dominio del cliente como argumento.

$ sudo icinga2 pki ticket --cn 'client.example.com'
365cd931d3091537622a95b113b17775893a224f

Toma nota del ticket para usarlo más tarde.

Paso 13 - Inicializar el agente de Icinga2 en el servidor cliente

Inicia sesión en el servidor cliente e instala Icinga2 y los plugins de monitoreo. Ejecuta los siguientes comandos para hacerlo.

$ wget -O - https://packages.icinga.com/icinga.key | sudo gpg --dearmor -o /usr/share/keyrings/icinga-archive-keyring.gpg
$ echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/ubuntu icinga-`lsb_release -cs` main" | sudo tee /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list
$ echo "deb-src [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] http://packages.icinga.com/ubuntu icinga-`lsb_release -cs` main" | sudo tee -a /etc/apt/sources.list.d/$(lsb_release -cs)-icinga.list
$ sudo apt update
$ sudo apt install icinga2 monitoring-plugins -y

Verifica si el servicio Icinga está habilitado y en funcionamiento.

$ sudo systemctl status icinga2
? icinga2.service - Icinga host/service/network monitoring system
     Loaded: loaded (/lib/systemd/system/icinga2.service; enabled; vendor preset: enabled)
    Drop-In: /etc/systemd/system/icinga2.service.d
             ??limits.conf
     Active: active (running) since Tue 2023-05-02 07:32:07 UTC; 59min ago
   Main PID: 7602 (icinga2)
     Status: "Startup finished."
      Tasks: 8
     Memory: 13.9M
        CPU: 1.018s
     CGroup: /system.slice/icinga2.service
             ??7602 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
             ??7620 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
             ??7623 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log

Inicia el asistente de nodo de Icinga para inicializar el agente en el servidor cliente.

$ sudo icinga2 node wizard

Se te preguntará si es una configuración de agente. Ingresa Y para configurar el agente.

Welcome to the Icinga 2 Setup Wizard!

We will guide you through all required configuration details.

Please specify if this is an agent/satellite setup ('n' installs a master setup) [Y/n]: Y

A continuación, se te pedirá que especifiques el nombre común. Deja el valor predeterminado y presiona Enter para continuar.

Starting the Agent/Satellite setup routine...

Please specify the common name (CN) [client.example.com]:

A continuación, especifica el punto final padre como icinga.example.com e ingresa Y para establecer una conexión con el nodo padre desde el cliente.

Please specify the parent endpoint(s) (master or satellite) where this node should connect to:
Master/Satellite Common Name (CN from your master/satellite node): icinga.example.com

Do you want to establish a connection to the parent node from this node? [Y/n]: Y

A continuación, ingresa la dirección IP del servidor maestro y deja el valor del puerto sin cambios como predeterminado.

Please specify the master/satellite connection information:
Master/Satellite endpoint host (IP address or FQDN): 199.247.31.184
Master/Satellite endpoint port [5665]:

Ingresa N para rechazar agregar más puntos finales maestros.

Add more master/satellite endpoints? [y/N]: N

A continuación, se te mostrará la información del certificado para el servidor maestro. Presiona Y para confirmar la información y continuar.

Parent certificate information:

 Version:             3
 Subject:             CN = icinga.example.com
 Issuer:              CN = Icinga CA
 Valid From:          May  1 08:28:26 2023 GMT
 Valid Until:         Jun  1 08:28:26 2024 GMT
 Serial:              53:50:d4:1a:85:c5:70:5b:b1:f6:0e:c3:b6:e4:db:62:df:8d:5e:d9

 Signature Algorithm: sha256WithRSAEncryption
 Subject Alt Names:   icinga.example.com
 Fingerprint:         DC BB 90 68 29 E5 C4 B5 74 F5 BC 8C BF A1 8F BF D2 9D A4 E5 A9 9A 43 2C 3B 24 AE A9 CD 19 32 F4

Is this information correct? [y/N]: Y

A continuación, ingresa el ticket de solicitud generado en el paso anterior.

Please specify the request ticket generated on your Icinga 2 master (optional).
 (Hint: # icinga2 pki ticket --cn 'client.example.com'): 365cd931d3091537622a95b113b17775893a224f

Deja el host y el puerto de enlace de la API como predeterminados y presiona Enter para continuar.

Please specify the API bind host/port (optional):
Bind Host []:
Bind Port []:

A continuación, ingresa Y dos veces para aceptar la configuración y los comandos del nodo maestro.

Accept config from parent node? [y/N]: Y
Accept commands from parent node? [y/N]: Y

Presiona Enter para aceptar el nombre de zona local predeterminado que es el nombre de dominio del cliente. Ingresa el nombre de dominio del maestro como el nombre de zona padre para continuar.

Reconfiguring Icinga...
Disabling feature notification. Make sure to restart Icinga 2 for these changes to take effect.
Enabling feature api. Make sure to restart Icinga 2 for these changes to take effect.

Local zone name [client.example.com]:
Parent zone name [master]: icinga.example.com

Presiona N para omitir agregar zonas globales adicionales.

Default global zones: global-templates director-global
Do you want to specify additional global zones? [y/N]: N

Presiona N para omitir deshabilitar las configuraciones del directorio /etc/icinga2/conf.d/.

Do you want to disable the inclusion of the conf.d directory [Y/n]: Y
Disabling the inclusion of the conf.d directory...

Done.

Now restart your Icinga 2 daemon to finish the installation!

Reinicia el servicio de Icinga para aplicar los cambios de configuración.

$ sudo systemctl restart icinga2

Paso 14 - Crear la configuración de Zonas en el servidor Maestro

Inicia sesión nuevamente en el servidor y crea un nuevo directorio como la zona predeterminada.

$ sudo mkdir -p /etc/icinga2/zones.d/icinga.example.com/

A continuación, crea un archivo de configuración en el directorio recién creado y ábrelo para editar.

$ sudo nano /etc/icinga2/zones.d/icinga.example.com/client.example.com.conf

Pega el siguiente código en él. La dirección IP en el código debe coincidir con la dirección IP pública del cliente. // Endpoints object Endpoint "client.example.com" { } // Zones object Zone "client.example.com" { endpoints = [ "client.example.com" ] parent = "icinga.example.com" } // Host Objects object Host "client.example.com" { check_command = "hostalive" address = "95.179.138.148" vars.client_endpoint = name }

Guarda el archivo presionando Ctrl + X y luego Y cuando se te solicite una vez que termines.

Crea y abre el archivo de servicios para editar.

$ sudo nano /etc/icinga2/zones.d/icinga.example.com/services.conf

Pega el siguiente código en él. // Ping apply Service "Ping" { check_command = "ping4" assign where host.address // check executed on master } // System Load apply Service "System Load" { check_command = "load" command_endpoint = host.vars.client_endpoint // Check executed on client01 assign where host.vars.client_endpoint } // SSH Service apply Service "SSH Service" { check_command = "ssh" command_endpoint = host.vars.client_endpoint assign where host.vars.client_endpoint } // Icinga 2 Service apply Service "Icinga2 Service" { check_command = "icinga" command_endpoint = host.vars.client_endpoint assign where host.vars.client_endpoint }

Ejecuta el siguiente comando para verificar la configuración.

$ sudo icinga2 daemon -C

Obtendrás una salida similar.

[2023-05-02 11:21:23 +0000] information/cli: Icinga application loader (version: r2.13.7-1)
[2023-05-02 11:21:23 +0000] information/cli: Loading configuration file(s).
[2023-05-02 11:21:23 +0000] information/ConfigItem: Committing config item(s).
[2023-05-02 11:21:23 +0000] information/ApiListener: My API identity: icinga.example.com
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 IcingaApplication.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 Host.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 FileLogger.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 IdoMysqlConnection.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 CheckerComponent.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 4 Zones.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 2 Endpoints.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 2 ApiUsers.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 ApiListener.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 1 NotificationComponent.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 244 CheckCommands.
[2023-05-02 11:21:23 +0000] information/ConfigItem: Instantiated 4 Services.
[2023-05-02 11:21:23 +0000] information/ScriptGlobal: Dumping variables to file '/var/cache/icinga2/icinga2.vars'
[2023-05-02 11:21:23 +0000] information/cli: Finished validating the configuration file(s).

Reinicia el servicio de Icinga para aplicar los cambios de configuración.

$ sudo systemctl restart icinga2

Paso 15 - Verificar en el panel de control de Icinga

Abre el panel de control de Icinga2 Web para verificar la información de la máquina cliente. Selecciona Resumen >> Hosts en el menú de la izquierda y verás la siguiente pantalla. Página de hosts del panel de control de Icinga Web

Puede tardar un tiempo en que el estado del cliente se muestre como UP. Haz clic en el Cliente para ver más detalles sobre él. Selecciona Resumen >> Servicios y verás los siguientes estados sobre el cliente. Detalles de servicios del cliente de Icinga Web

Esto confirma que el cliente está enviando estadísticas correctamente al servidor maestro de Icinga.

Conclusión

Esto concluye nuestro tutorial sobre la instalación del software de monitoreo Icinga en un servidor Ubuntu 22.04 y su configuración para monitorear una máquina cliente que ejecuta el mismo sistema operativo. Si tienes alguna pregunta, publícalas en los comentarios a continuación.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.