Monitoraggio · 25 min read · Nov 07, 2025

Come installare il software di monitoraggio Icinga 2 su Ubuntu 22.04 LTS

Icinga2 è un software di monitoraggio di rete gratuito e open-source che può controllare la disponibilità delle risorse dalla rete e notificare gli utenti in caso di interruzioni. Puoi monitorare i servizi di rete (SMTP, POP3, HTTP, NNTP, ping), le risorse dell’host (utilizzo CPU, utilizzo disco) e i componenti di rete (switch, router, sensori di temperatura e umidità) utilizzando Icinga2. Può essere integrato con i plugin di Nagios.

Nel seguente tutorial, imparerai a installare Icinga2 su un server Ubuntu 22.04 e come collegarlo a un nodo client. Invece del server Apache predefinito, utilizzeremo Nginx per eseguire Icinga2 Web.

Prerequisiti

  • Due macchine che eseguono Ubuntu 22.04. Una di esse fungerà da server Master e l’altra da client per il monitoraggio.
  • Un utente non root con privilegi sudo su entrambi i server.
  • Un nome di dominio completamente qualificato (FQDN) per il server master, icinga.example.com e il nodo client, client.example.com.
  • Assicurati che tutto sia aggiornato. $ sudo apt update $ sudo apt upgrade
  • Alcuni pacchetti di cui il tuo sistema ha bisogno. $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y Alcuni di questi pacchetti potrebbero già essere installati sul tuo sistema.

Passo 1 - Configurare il firewall sul server Master

Il primo passo è configurare il firewall. Ubuntu viene fornito di default con ufw (Uncomplicated Firewall).

Controlla se il firewall è in esecuzione.

$ sudo ufw status

Dovresti ottenere il seguente output.

Status: inactive

Consenti la porta SSH in modo che il firewall non interrompa la connessione attuale quando viene abilitato.

$ sudo ufw allow OpenSSH

Consenti la porta 5665 che è necessaria per il client Icinga2 per connettersi al server.

$ sudo ufw allow 5665

Consenti anche le porte HTTP e HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Abilita il firewall

$ sudo ufw enable
Il comando potrebbe interrompere le connessioni ssh esistenti. Procedere con l'operazione (y|n)? y
Il firewall è attivo e abilitato all'avvio del sistema

Controlla di nuovo lo stato del firewall.

$ sudo ufw status

Dovresti vedere un output simile.

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)

Passo 2 - Installare MySQL

Ubuntu 22.04 viene fornito con l’ultima versione di MySQL. Puoi installarlo con un solo comando.

$ sudo apt install mysql-server

Controlla la versione di MySQL.

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

Questo passaggio è necessario per le versioni di MySQL 8.0.28 e superiori. Entra nella shell di MySQL.

$ sudo mysql

Esegui il seguente comando per impostare la password per il tuo utente root. Assicurati che abbia una combinazione di numeri, lettere maiuscole, minuscole e caratteri speciali.

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

Esci dalla shell.

mysql> exit

Esegui lo script di installazione sicura di MySQL.

$ sudo mysql_secure_installation

Per prima cosa, ti verrà chiesta la password di root. Inseriscila. Successivamente, ti verrà chiesto di installare il componente di validazione della password. Controlla la forza delle password utilizzate in MySQL. Premi Y per installarlo. Successivamente, ti verrà chiesto di impostare il livello della politica di validazione della password. Scegli 2 poiché è il più forte.

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

Successivamente, inserisci N per rifiutare di cambiare la tua password di root. Inoltre, inserisci Y per rimuovere gli utenti anonimi, vietare i login remoti di root, rimuovere il database di test e ricaricare le tabelle dei privilegi.

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!

Passo 3 - Configurare MySQL

Accedi alla shell di MySQL. Inserisci la tua password di root quando richiesto.

$ sudo mysql -u root -p

Crea il database Icinga.

mysql> CREATE DATABASE icinga2;

Crea l’account utente SQL per Icinga2. Non cambiare il database e il nome utente perché sono già impostati per impostazione predefinita. Se desideri cambiarli, dovrai eseguire alcuni passaggi extra durante l’installazione del driver MySQL nel Passo 5. Inserisci la password e riceverai un errore e poi ti verrà chiesto di riconfigurare dove puoi specificare il tuo nome di database e utenti personalizzati.

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

Concedi tutti i privilegi sul database all’utente.

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

Flush dei privilegi utente.

mysql> FLUSH PRIVILEGES;

Esci dalla shell.

mysql> exit

Passo 4 - Installare Icinga2 e i plugin di monitoraggio sul server Master

Utilizzeremo il repository ufficiale di Icinga2 per l’installazione. Scarica e importa la chiave GPG di Icinga2.

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

Esegui i seguenti comandi per creare e aggiungere le informazioni del repository di Icinga2 all’elenco delle fonti 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

Aggiorna l’elenco dei repository di sistema.

$ sudo apt update

Installa Icinga2 e i plugin di monitoraggio.

$ sudo apt install icinga2 monitoring-plugins -y

Passo 5 - Installare il driver IDO MySQL sul server Master

Per far funzionare Icinga2, ha bisogno di un database. Per questo, dobbiamo installare il driver IDO MySQL e configurare la connessione al database. Esegui il seguente comando per installare il driver MySQL.

$ sudo apt install -y icinga2-ido-mysql

Ti verrà chiesto di configurare il driver e creare un database utilizzando l’utilità dbconfig-common. Seleziona per continuare.

Successivamente, ti verrà chiesta la password di MySQL per il database icinga2. Inserisci la password configurata nel passo 3 per continuare.

Inserisci la password del database per Icinga2

Ti verrà chiesto di confermare nuovamente la password.

Conferma password Icinga2

Successivamente, ti verrà chiesto di abilitare la funzionalità ido-mysql. Seleziona per continuare.

Funzionalità Icinga IDO-MySQL

Puoi controllare i dettagli del database nel file /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"
}

Abilita la funzionalità ido-mysql.

$ sudo icinga2 feature enable ido-mysql

Riavvia il servizio Icinga2.

$ sudo systemctl restart icinga2

Verifica lo stato del servizio.

$ 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

Passo 6 - Configurare l’API di Icinga2

Per gestire e configurare il monitoraggio di Icinga2 tramite HTTP, devi configurare l’API di Icinga2. Esegui il seguente comando per abilitare l’API di Icinga2, generare certificati TLS per Icinga2 e aggiornare le configurazioni di Icinga2.

$ sudo icinga2 api setup

Otterrai un output simile.

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!

Il comando sopra crea un file /etc/icinga2/conf.d/api-users.conf con l’utente predefinito root che ha tutti i permessi sull’API di Icinga2. Abbiamo bisogno di un nuovo utente con i permessi minimi richiesti da Icinga Web.

Apri il file api-users.conf per la modifica.

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

Aggiungi il seguente codice alla fine del file.

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

Prendi nota delle credenziali che saranno necessarie in seguito per accedere al sito web. Il server API di Icinga2 ascolta sulla porta 5665 per impostazione predefinita. Riavvia il servizio affinché le modifiche abbiano effetto.

$ sudo systemctl restart icinga2

Il passo successivo è installare l’interfaccia web di Icinga. Viene fornita preconfigurata per Apache, ma utilizzeremo il server Nginx. Pertanto, prima dobbiamo installare Nginx e i certificati SSL.

Passo 7 - Installare Nginx

Ubuntu 22.04 viene fornito con una versione più vecchia di Nginx. Per installare l’ultima versione, devi scaricare il repository ufficiale di Nginx.

Importa la chiave di firma di Nginx.

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

Aggiungi il repository per la versione stabile di 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

Aggiorna i repository di sistema.

$ sudo apt update

Installa Nginx.

$ sudo apt install nginx

Verifica l’installazione.

$ nginx -v
nginx version: nginx/1.24.0

Avvia il server Nginx.

$ sudo systemctl start nginx

Passo 8 - Installare SSL

Dobbiamo installare Certbot per generare il certificato SSL. Puoi installare Certbot utilizzando il repository di Ubuntu o scaricare l’ultima versione utilizzando lo strumento Snapd. Utilizzeremo la versione Snapd.

Ubuntu 22.04 viene fornito con Snapd installato per impostazione predefinita. Esegui i seguenti comandi per assicurarti che la tua versione di Snapd sia aggiornata.

$ sudo snap install core && sudo snap refresh core

Installa Certbot.

$ sudo snap install --classic certbot

Usa il seguente comando per assicurarti che il comando Certbot possa essere eseguito creando un collegamento simbolico alla directory /usr/bin.

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

Esegui il seguente comando per generare un certificato SSL.

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

Il comando sopra scaricherà un certificato nella directory /etc/letsencrypt/live/icinga.example.com sul tuo server.

Genera un certificato per il gruppo Diffie-Hellman.

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

Controlla il servizio di pianificazione del rinnovo di Certbot.

$ sudo systemctl list-timers

Troverai snap.certbot.renew.service come uno dei servizi programmati per l’esecuzione.

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

Fai una prova del processo per controllare se il rinnovo SSL funziona correttamente.

$ sudo certbot renew --dry-run

Se non vedi errori, sei a posto. Il tuo certificato si rinnoverà automaticamente.

Passo 9 - Configurare Nginx e PHP

Poiché Icinga è configurato per Apache, il pacchetto PHP-FPM non è installato per impostazione predefinita. Avrai anche bisogno del modulo PHP Imagick se desideri esportare i grafici in PDF. Esegui il seguente comando per installare PHP-FPM e la libreria PHP Imagick.

$ sudo apt install php-fpm php-imagick

Configurare PHP-FPM

Apri il file /etc/php/8.1/fpm/pool.d/www.conf.

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

Dobbiamo impostare l’utente/gruppo Unix dei processi PHP su nginx. Trova le righe user=www-data e group=www-data nel file e cambiale in 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
...

Trova le righe listen.owner = www-data e listen.group = www-data nel file e cambiale in 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

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Riavvia il servizio PHP-FPM.

$ sudo systemctl restart php8.1-fpm

Configurare Nginx

Crea e apri il file /etc/nginx/conf.d/icinga.conf per la modifica.

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

Incolla il seguente codice al suo interno.

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;
}

Nota che la directory radice da utilizzare nella configurazione di Nginx è /usr/share/icingaweb2/public.

Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.

Apri il file /etc/nginx/nginx.conf per la modifica.

$ sudo nano /etc/nginx/nginx.conf

Aggiungi la seguente riga prima della riga include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Salva il file premendo Ctrl + X e inserendo Y quando richiesto.

Verifica la sintassi del file di configurazione di 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

Riavvia il servizio Nginx.

$ sudo systemctl restart nginx

Passo 10 - Preparare la configurazione Web

Prima di accedere a Icinga Web, dobbiamo configurarlo. Quando utilizzi Icinga Web, è necessario autenticarsi utilizzando un token. Genera il token utilizzando il seguente comando.

$ sudo icingacli setup token create
Il token di configurazione appena generato è: 3c4d4e155635f512

Prendi nota del token perché ne avrai bisogno in seguito. Puoi sempre recuperarlo in seguito utilizzando il seguente comando.

$ sudo icingacli setup token show
Il token di configurazione attuale è: 3c4d4e155635f512

Il passo successivo è creare un database e un utente del database. Accedi alla shell di MySQL.

$ sudo mysql -u root -p

Crea il database Icinga Web.

mysql> CREATE DATABASE icingaweb2;

Crea l’account utente SQL per Icinga Web.

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

Concedi tutti i privilegi sul database all’utente.

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

Flush dei privilegi utente.

mysql> FLUSH PRIVILEGES;

Esci dalla shell.

mysql> exit

Passo 11 - Configurare IcingaWeb

Apri l’URL https://icinga.example.com nel tuo browser e vedrai la seguente schermata.

Pagina di configurazione di Icinga Web

Inserisci il token generato nel passaggio precedente e premi il pulsante Avanti per procedere.

Configurazione dei moduli Icinga

Nella schermata successiva, scegli i moduli che desideri installare e fai clic su Avanti per procedere. Il modulo Monitoraggio è selezionato per te per impostazione predefinita. Nella pagina successiva, ti verranno mostrati i requisiti e se sono stati soddisfatti. Assicurati che tutti i requisiti siano contrassegnati in verde.

Pagina dei requisiti di Icinga

Fai clic su Avanti per procedere alla pagina successiva per selezionare il tipo di autenticazione.

Tipo di autenticazione Icinga

Il tipo di autenticazione è impostato su Database per impostazione predefinita. Fai clic su Avanti per procedere. Ti verrà chiesto di compilare le credenziali del database nella pagina successiva.

Credenziali del database di Icinga Web

Compila le credenziali del database create nel passo 10. Fai clic sul pulsante Valida configurazione per verificare le credenziali. Una volta verificate, fai clic su Avanti per procedere. Successivamente, ti verrà chiesto di nominare il backend di autenticazione.

Backend di autenticazione Icinga

Lascia il valore predefinito e fai clic su Avanti per procedere. Nella pagina successiva, ti verrà chiesto di creare un account amministratore.

Dettagli dell'amministratore di Icinga

Inserisci le credenziali per il tuo nuovo account amministratore e fai clic su Avanti per procedere. Successivamente, ti verrà mostrata la pagina di Configurazione dell’applicazione.

Configurazione dell'applicazione Icinga

Lascia tutti i valori predefiniti per la configurazione dell’applicazione e del logging e fai clic su Avanti per procedere. Ti verrà chiesto di rivedere la configurazione nell’ultima pagina.

Revisione della configurazione di Icinga

Puoi tornare indietro per modificare alcune delle impostazioni. Se sei soddisfatto, fai clic su Avanti per procedere.

Fai clic su Avanti per procedere con la configurazione del modulo di monitoraggio. Successivamente, ti verranno chieste le credenziali del database di Icinga.

Credenziali del database di Icinga

Compila le credenziali del database nel passo 3 e fai clic su Valida configurazione per verificare la connessione. Una volta verificate, fai clic su Avanti per procedere. Successivamente, ti verrà chiesto di compilare i dettagli dell’API.

Dettagli API di Icinga

Compila le credenziali API create nel passo 6 e fai clic su Valida configurazione per verificare la connessione. Fai clic su Avanti per procedere. Successivamente, ti verrà chiesto di scegliere variabili personalizzate protette per la sicurezza del monitoraggio.

Sicurezza del monitoraggio di Icinga

Lascia i valori predefiniti e fai clic su Avanti per procedere. Successivamente, ti verrà chiesto di rivedere la configurazione di monitoraggio. Puoi tornare indietro e cambiarla se lo desideri.

Revisione della configurazione di monitoraggio di Icinga

Se sei soddisfatto, fai clic su Fine per completare l’installazione.

Installazione di Icinga completata

Una volta completato con successo, fai clic sul pulsante Accedi a Icinga Web 2 per aprire la pagina di accesso.

Pagina di accesso a Icinga Web

Inserisci i dettagli del tuo account amministratore e fai clic sul pulsante Accedi per aprire il dashboard di Icinga Web.

Dashboard di Icinga Web

Visita la pagina Panoramica >> Servizi per controllare lo stato del server master simile al seguente.

Pagina dei servizi di Icinga Web

Passo 12 - Inizializzare il server Master

Il passo successivo è inizializzare il server master come nodo master. Il nodo master funge da controller principale per lo stack di monitoraggio. Esegui il seguente comando per avviare il processo di inizializzazione.

$ sudo icinga2 node wizard

Ti verrà chiesto se si tratta di una configurazione dell’agente. Inserisci n per configurare il nodo master.

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

Successivamente, ti verrà chiesto il nome comune o il nome di dominio. Premi Invio per selezionare il valore predefinito che viene visualizzato.

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.

Successivamente, inserisci il nome della zona master e premi Invio per procedere. Nel nostro caso, è lo stesso del nome di dominio del server.

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

Successivamente, ti verrà chiesto se desideri aggiungere zone globali aggiuntive. Premi n per saltare l’aggiunta e premi Invio per procedere.

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

Nel passaggio successivo, lascia l’host di binding API e la porta come predefiniti e premi Invio per procedere.

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

Successivamente, premi Y per disabilitare la configurazione all’interno della directory /etc/icinga2/conf.d/ poiché utilizzeremo la configurazione delle zone di Icinga2 in seguito.

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!

Riavvia il servizio per applicare le modifiche.

$ sudo systemctl restart icinga2

E infine, esegui il seguente comando per creare un ticket per il server client. Usa il nome di dominio del client come argomento.

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

Prendi nota del ticket per un uso successivo.

Passo 13 - Inizializzare l’agente Icinga2 sul server client

Accedi al server client e installa Icinga2 e i plugin di monitoraggio. Esegui i seguenti comandi per farlo.

$ 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 se il servizio Icinga è abilitato e in esecuzione.

$ 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

Avvia il wizard del nodo Icinga per inizializzare l’agente sul server client.

$ sudo icinga2 node wizard

Ti verrà chiesto se si tratta di una configurazione dell’agente. Inserisci Y per configurare l’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

Successivamente, ti verrà chiesto di specificare il nome comune. Lascia il valore predefinito e premi Invio per procedere.

Starting the Agent/Satellite setup routine...

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

Successivamente, specifica l’endpoint padre come icinga.example.com e inserisci Y per stabilire una connessione con il nodo padre dal client.

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

Successivamente, inserisci l’indirizzo IP del server master e lascia il valore della porta invariato come predefinito.

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

Inserisci N per rifiutare di aggiungere ulteriori endpoint master.

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

Successivamente, ti verranno mostrate le informazioni sul certificato per il server master. Premi Y per confermare le informazioni e procedere.

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

Successivamente, inserisci il ticket di richiesta generato nel passaggio precedente.

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

Lascia l’host di binding API e la porta come predefiniti e premi Invio per continuare.

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

Successivamente, inserisci Y due volte per accettare la configurazione e i comandi dal nodo master.

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

Premi Invio per accettare il nome della zona locale predefinito che è il nome di dominio del client. Inserisci il nome di dominio master come nome della zona padre per procedere.

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

Premi N per saltare l’aggiunta di zone globali aggiuntive.

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

Premi N per saltare la disabilitazione delle configurazioni dalla directory /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!

Riavvia il servizio Icinga per applicare le modifiche alla configurazione.

$ sudo systemctl restart icinga2

Passo 14 - Creare la configurazione delle zone sul server Master

Accedi nuovamente al server e crea una nuova directory come zona predefinita.

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

Successivamente, crea un file di configurazione nella directory appena creata e aprilo per la modifica.

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

Incolla il seguente codice al suo interno. L’indirizzo IP nel codice deve corrispondere all’indirizzo IP pubblico del client.

// 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 }

Salva il file premendo Ctrl + X e inserendo Y quando richiesto una volta terminato.

Crea e apri il file dei servizi per la modifica.

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

Incolla il seguente codice al suo interno.

// Ping apply Service "Ping" { check_command = "ping4" assign where host.address // check eseguito su master } // Carico di sistema apply Service "System Load" { check_command = "load" command_endpoint = host.vars.client_endpoint // Check eseguito su client01 assign where host.vars.client_endpoint } // Servizio SSH apply Service "SSH Service" { check_command = "ssh" command_endpoint = host.vars.client_endpoint assign where host.vars.client_endpoint } // Servizio Icinga 2 apply Service "Icinga2 Service" { check_command = "icinga" command_endpoint = host.vars.client_endpoint assign where host.vars.client_endpoint }

Esegui il seguente comando per verificare la configurazione.

$ sudo icinga2 daemon -C

Otterrai un output simile.

[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).

Riavvia il servizio Icinga per applicare le modifiche alla configurazione.

$ sudo systemctl restart icinga2

Passo 15 - Verifica nel dashboard di Icinga

Apri il dashboard web di Icinga2 per verificare le informazioni sulla macchina client. Seleziona Panoramica >> Host dal menu a sinistra e vedrai la seguente schermata.

Pagina degli host del dashboard di Icinga Web

Potrebbe richiedere del tempo affinché lo stato del client venga visualizzato come UP. Fai clic sul client per vedere maggiori dettagli su di esso. Seleziona Panoramica >> Servizi e vedrai i seguenti stati riguardanti il client.

Dettagli dei servizi del client di Icinga Web

Questo conferma che il client sta inviando correttamente le statistiche al server master di Icinga.

Conclusione

Questo conclude il nostro tutorial sull’installazione del software di monitoraggio Icinga su un server Ubuntu 22.04 e sulla sua configurazione per monitorare una macchina client che esegue lo stesso sistema operativo. Se hai domande, pubblicale nei commenti qui sotto.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.