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.comy 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 statusDeberías obtener la siguiente salida.
Status: inactivePermite el puerto SSH para que el firewall no interrumpa la conexión actual al habilitarlo.
$ sudo ufw allow OpenSSHPermite el puerto 5665 que es requerido por el cliente Icinga2 para conectarse al servidor.
$ sudo ufw allow 5665Permite también los puertos HTTP y HTTPS.
$ sudo ufw allow http
$ sudo ufw allow httpsHabilita el Firewall
$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startupVerifica el estado del firewall nuevamente.
$ sudo ufw statusDeberí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-serverVerifica 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 mysqlEjecuta 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> exitEjecuta el script de instalación segura de MySQL.
$ sudo mysql_secure_installationPrimero, 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: 100A 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 -pCrea 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> exitPaso 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.gpgEjecuta 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.listActualiza la lista de repositorios del sistema.
$ sudo apt updateInstala Icinga2 y los plugins de monitoreo.
$ sudo apt install icinga2 monitoring-plugins -yPaso 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-mysqlSe te pedirá que configures el controlador y crees una base de datos utilizando la utilidad dbconfig-common. Selecciona Sí 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. 
Se te pedirá que confirmes la contraseña nuevamente. 
A continuación, se te pedirá que habilites la función ido-mysql. Selecciona Sí para continuar. 
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-mysqlReinicia el servicio de Icinga2.
$ sudo systemctl restart icinga2Verifica 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.logPaso 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 setupObtendrá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.confAgrega 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 icinga2El 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/nullAgrega 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.listActualiza los repositorios del sistema.
$ sudo apt updateInstala Nginx.
$ sudo apt install nginxVerifica la instalación.
$ nginx -v
nginx version: nginx/1.24.0Inicia el servidor Nginx.
$ sudo systemctl start nginxPaso 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 coreInstala Certbot.
$ sudo snap install --classic certbotUtiliza 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/certbotEjecuta 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.comEl 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 4096Verifica el servicio programador de renovación de Certbot.
$ sudo systemctl list-timersEncontrará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.serviceRealiza una prueba del proceso para verificar si la renovación SSL funciona correctamente.
$ sudo certbot renew --dry-runSi 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-imagickConfigurar PHP-FPM
Abre el archivo /etc/php/8.1/fpm/pool.d/www.conf.
$ sudo nano /etc/php/8.1/fpm/pool.d/www.confNecesitamos 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 = nginxGuarda el archivo presionando Ctrl + X y luego Y cuando se te solicite.
Reinicia el servicio PHP-FPM.
$ sudo systemctl restart php8.1-fpmConfigurar Nginx
Crea y abre el archivo /etc/nginx/conf.d/icinga.conf para editar.
$ sudo nano /etc/nginx/conf.d/icinga.confPega 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.confAgrega 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 successfulReinicia el servicio de Nginx.
$ sudo systemctl restart nginxPaso 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: 3c4d4e155635f512Toma 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: 3c4d4e155635f512El 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 -pCrea 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> exitPaso 11 - Configurar IcingaWeb
Abre la URL https://icinga.example.com en tu navegador y verás la siguiente pantalla. 
Ingresa el token generado en el paso anterior y presiona el botón Siguiente para continuar. 
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. 
Haz clic en Siguiente para proceder a la siguiente página para seleccionar el tipo de autenticación. 
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. 
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. 
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. 
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. 
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. 
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. 
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. 
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. 
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. 
Si estás satisfecho, haz clic en Finalizar para completar la instalación. 
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. 
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. 
Visita la página Resumen >> Servicios para verificar el estado del servidor maestro similar a lo siguiente. 
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 wizardSe 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]: nA 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.comA 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]: nEn 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 icinga2Y 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'
365cd931d3091537622a95b113b17775893a224fToma 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 -yVerifica 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.logInicia el asistente de nodo de Icinga para inicializar el agente en el servidor cliente.
$ sudo icinga2 node wizardSe 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]: YA 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]: YA 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]: NA 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]: YA 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'): 365cd931d3091537622a95b113b17775893a224fDeja 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]: YPresiona 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.comPresiona N para omitir agregar zonas globales adicionales.
Default global zones: global-templates director-global
Do you want to specify additional global zones? [y/N]: NPresiona 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 icinga2Paso 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.confPega 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.confPega 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 -CObtendrá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 icinga2Paso 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. 
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. 
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.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.