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.come 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 -yAlcuni 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 Sì per continuare.
Successivamente, ti verrà chiesta la password di MySQL per il database icinga2. Inserisci la password configurata nel passo 3 per continuare.

Ti verrà chiesto di confermare nuovamente la password.

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

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.

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

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.

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

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.

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.

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

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.

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.

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.

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.

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.

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.

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

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

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

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

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.

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.

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.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.