Icinga 2 · 26 min read · Nov 22, 2025
Come installare il software di monitoraggio Icinga 2 su Debian 12

Icinga 2 è un sistema di monitoraggio open-source che controlla la disponibilità delle risorse di rete, notifica gli utenti delle interruzioni e genera dati sulle prestazioni per la reportistica. Puoi monitorare i servizi di rete (SMTP, POP3, HTTP, NNTP, ping), le risorse dell’host (utilizzo della CPU, utilizzo del 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 come installare Icinga2 su un server Debian 12 e collegarlo a un nodo client. Invece del server Apache predefinito, utilizzeremo Nginx per eseguire Icinga2 Web.
Prerequisiti
- Due macchine che eseguono Debian 12. Una di esse fungerà da server Master e l’altra come 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 debian-archive-keyring ufw 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. Debian viene fornito con ufw (Uncomplicated Firewall) per impostazione predefinita.
Controlla se il firewall è attivo.
$ 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 può 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 il server MariaDB
Debian 12 viene fornito con l’ultima versione di MariaDB. Puoi installarlo con un solo comando.
$ sudo apt install mariadb-server
Controlla la versione di MySQL.
$ mysql --version
mysql Ver 15.1 Distrib 10.11.4-MariaDB, for debian-linux-gnu (x86_64) using EditLine wrapper
Esegui lo script di installazione sicura di MariaDB.
$ sudo mariadb-secure-installation
Ti verrà chiesto di inserire la password di root. Premi Invio perché non abbiamo impostato alcuna password per essa.
NOTE: E' RACCOMANDATO ESEGUIRE TUTTE LE PARTI DI QUESTO SCRIPT PER TUTTI I SERVER MariaDB
IN USO IN PRODUZIONE! LEGGI ATTENTAMENTE OGNI PASSO!
Per accedere a MariaDB per proteggerlo, avremo bisogno della password attuale
per l'utente root. Se hai appena installato MariaDB e
non hai ancora impostato la password di root, dovresti semplicemente premere invio qui.
Inserisci la password attuale per root (premi invio per nessuna):
Successivamente, ti verrà chiesto se desideri passare al metodo di autenticazione Unix socket. Il plugin unix_socket ti consente di utilizzare le credenziali del tuo sistema operativo per connetterti al server MariaDB. Poiché hai già un account root protetto, inserisci n per procedere.
OK, password utilizzata con successo, procedendo...
Impostare la password di root o utilizzare il unix_socket garantisce che nessuno
può accedere all'utente root di MariaDB senza la corretta autorizzazione.
Hai già protetto il tuo account root, quindi puoi rispondere in sicurezza 'n'.
Passare all'autenticazione unix_socket [Y/n] n
Successivamente, ti verrà chiesto se desideri cambiare la password di root. Su Debian 12, la password di root è strettamente legata alla manutenzione automatizzata del sistema, quindi dovrebbe essere lasciata così com’è. Digita n per procedere.
... salto.
Hai già protetto il tuo account root, quindi puoi rispondere in sicurezza 'n'.
Cambiare la password di root? [Y/n] n
Successivamente, ti verranno poste alcune domande per migliorare la sicurezza di MariaDB. Digita Y per rimuovere gli utenti anonimi, vietare gli accessi remoti come root, rimuovere il database di test e ricaricare le tabelle dei privilegi.
... salto.
Per impostazione predefinita, un'installazione di MariaDB ha un utente anonimo, che consente a chiunque
di accedere a MariaDB senza dover avere un account utente creato per
loro. Questo è destinato solo per i test e per rendere l'installazione
un po' più fluida. Dovresti rimuoverli prima di passare a un
ambiente di produzione.
Rimuovere gli utenti anonimi? [Y/n] y
... Successo!
Normalmente, l'utente root dovrebbe essere autorizzato a connettersi solo da 'localhost'. Questo
garantisce che qualcuno non possa indovinare la password di root dalla rete.
Vietare l'accesso remoto come root? [Y/n] y
... Successo!
Per impostazione predefinita, MariaDB viene fornito con un database chiamato 'test' a cui chiunque può
accedere. Questo è anche destinato solo per i test e dovrebbe essere rimosso
prima di passare a un ambiente di produzione.
Rimuovere il database di test e l'accesso ad esso? [Y/n] y
- Rimozione del database di test...
... Successo!
- Rimozione dei privilegi sul database di test...
... Successo!
Ricaricare le tabelle dei privilegi garantirà che tutte le modifiche apportate finora
entreranno in vigore immediatamente.
Ricaricare le tabelle dei privilegi ora? [Y/n] y
... Successo!
Pulizia...
Tutto fatto! Se hai completato tutti i passaggi sopra, la tua installazione di MariaDB
ora dovrebbe essere sicura.
Grazie per aver utilizzato MariaDB!
Puoi accedere alla shell di MariaDB digitando sudo mysql o sudo mariadb nella riga di comando.
Passo 3 - Configurare MariaDB
Accedi alla shell di MariaDB. Inserisci la tua password di root quando richiesto.
$ sudo mysql
Crea il database Icinga.
MariaDB [(none)]> 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 gli utenti personalizzati.
MariaDB [(none)]> CREATE USER 'icinga2'@'localhost' IDENTIFIED BY 'Your_password2';
Concedi tutti i privilegi sul database all’utente.
MariaDB [(none)]> GRANT ALL PRIVILEGES ON icinga2.* TO 'icinga2'@'localhost';
Poiché non stiamo modificando l’utente root, dovresti creare un altro utente SQL per eseguire attività amministrative che utilizzano l’autenticazione tramite password. Scegli una password forte per questo.
MariaDB> GRANT ALL ON *.* TO 'navjot'@'localhost' IDENTIFIED BY 'Yourpassword32!' WITH GRANT OPTION;
Flush dei privilegi degli utenti.
MariaDB [(none)]> FLUSH PRIVILEGES;
Esci dalla shell.
MariaDB [(none)]> 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 sorgenti APT.
$ echo "deb [signed-by=/usr/share/keyrings/icinga-archive-keyring.gpg] https://packages.icinga.com/debian 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/debian 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, Icingacli 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
Successivamente, ti verrà chiesto di abilitare la funzione ido-mysql. Seleziona Sì per continuare.

Successivamente, ti verrà chiesto di configurare il driver e creare un database utilizzando l’utilità dbconfig-common. Seleziona Sì per continuare.
Successivamente, ti verrà chiesto di inserire la password MySQL per il database icinga2. Inserisci la password configurata nel passo 3 per continuare.

Ti verrà chiesto di confermare nuovamente la password.

Puoi controllare i dettagli del database nel file /etc/icinga2/features-available/ido-mysql.conf.
$ sudo cat /etc/icinga2/features-available/ido-mysql.conf
/**
* La libreria db_ido_mysql implementa la funzionalità IDO
* per MySQL.
*/
library "db_ido_mysql"
object IdoMysqlConnection "ido-mysql" {
user = "icinga2",
password = "Your_password2",
host = "localhost",
database = "icinga2"
}
Abilita la funzione ido-mysql.
$ sudo icinga2 feature enable ido-mysql
Abilitazione della funzione ido-mysql. Assicurati di riavviare Icinga 2 affinché queste modifiche abbiano effetto.
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; preset: enabled)
Drop-In: /etc/systemd/system/icinga2.service.d
??limits.conf
Active: active (running) since Mon 2024-01-08 07:35:29 UTC; 4s ago
Process: 15404 ExecStartPre=/usr/lib/icinga2/prepare-dirs /etc/default/icinga2 (code=exited, status=0/SUCCESS)
Main PID: 15411 (icinga2)
Status: "Startup finished."
Tasks: 14
Memory: 13.6M
CPU: 858ms
CGroup: /system.slice/icinga2.service
??15411 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
??15433 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
??15438 /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.
Abilitazione della funzione api. Assicurati di riavviare Icinga 2 affinché queste modifiche abbiano effetto.
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.
Ora riavvia il tuo demone Icinga 2 per completare l'installazione!
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. Scegli una password forte per l’API.
/** api per 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 preconfigurata per Apache, ma utilizzeremo il server Nginx. Pertanto, prima dobbiamo installare Nginx e i certificati SSL.
Passo 7 - Installare Nginx
Debian 12 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 principale di Nginx.
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/mainline/debian `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. Sui sistemi Debian, il seguente comando funzionerà solo con sudo.
$ sudo nginx -v
nginx version: nginx/1.25.3
Avvia il server Nginx.
$ sudo systemctl start nginx
Controlla lo stato del servizio.
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Mon 2024-01-08 07:43:24 UTC; 4s ago
Docs: https://nginx.org/en/docs/
Process: 16330 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
Main PID: 16331 (nginx)
Tasks: 3 (limit: 2299)
Memory: 2.9M
CPU: 16ms
CGroup: /system.slice/nginx.service
??16331 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
??16332 "nginx: worker process"
??16333 "nginx: worker process"
Jan 08 07:43:24 icinga systemd[1]: Starting nginx.service - nginx - high performance web server...
Jan 08 07:43:24 icinga systemd[1]: Started nginx.service - nginx - high performance web server.
Passo 8 - Installare SSL
Dobbiamo installare Certbot per generare il certificato SSL. Puoi installare Certbot utilizzando il repository di Debian o scaricare l’ultima versione utilizzando lo strumento Snapd. Utilizzeremo la versione Snapd.
Debian 12 non viene fornito con Snapd installato. Installa il pacchetto Snapd.
$ sudo apt install snapd
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
Utilizza 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
Verifica se Certbot funziona correttamente.
$ certbot --version
certbot 2.8.0
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 di 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 2024-01-08 09:47:46 UTC 1h 56min left Sun 2024-01-07 09:47:46 UTC 22h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Mon 2024-01-08 13:35:00 UTC 5h 43min left - - snap.certbot.renew.timer snap.certbot.renew.service
Tue 2024-01-09 00:00:00 UTC 16h left Mon 2024-01-08 00:00:01 UTC 7h ago dpkg-db-backup.timer dpkg-db-backup.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.2/fpm/pool.d/www.conf.
$ sudo nano /etc/php/8.2/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.2-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.
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.2-fpm.sock; # Dipende dalla versione di PHP
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 al termine.
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: il file di configurazione /etc/nginx/nginx.conf ha una sintassi corretta
nginx: il test del file di configurazione /etc/nginx/nginx.conf è riuscito
Riavvia il servizio Nginx.
$ sudo systemctl restart nginx
Passo 10 - Preparare l’installazione Web
Prima di accedere a Icinga Web, dobbiamo installarlo insieme allo strumento da riga di comando.
$ sudo apt install icingaweb2 icingacli
Aggiungi l’utente Nginx al gruppo icingaweb2.
$ sudo usermod -aG icingaweb2 nginx
Imposta i permessi della directory di Icingaweb sul gruppo icingaweb2.
$ sudo icingacli setup config directory --group icingaweb2
Successfully created configuration directory /etc/icingaweb2
Quando utilizzi Icinga Web, è necessario autenticarsi utilizzando un token. Genera il token utilizzando il seguente comando.
$ sudo icingacli setup token create
Il token di installazione appena generato è: 56951f01f9f77a68
Prendi nota del token perché ne avrai bisogno più tardi. Puoi sempre recuperarlo in seguito utilizzando il seguente comando.
$ sudo icingacli setup token show
Il token di installazione attuale è: 56951f01f9f77a68
Il passo successivo è creare un database e un utente del database. Accedi alla shell di MariaDB.
$ sudo mysql
Crea il database Icinga Web.
MariaDB [(none)]> CREATE DATABASE icingaweb2;
Crea l’account utente SQL per Icinga Web.
MariaDB [(none)]> CREATE USER 'icingaweb2'@'localhost' IDENTIFIED BY 'Your_password3';
Concedi tutti i privilegi sul database all’utente.
MariaDB [(none)]> GRANT ALL PRIVILEGES ON icingaweb2.* TO 'icingaweb2'@'localhost';
Flush dei privilegi degli utenti.
MariaDB [(none)]> FLUSH PRIVILEGES;
Esci dalla shell.
MariaDB [(none)]> exit
Riavvia Nginx e PHP-FPM per applicare le modifiche ai permessi.
$ sudo systemctl restart nginx php8.2-fpm
Passo 11 - Configurare IcingaWeb
Apri l’URL https://icinga.example.com/setup 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.

L’opzione Abilita una rigorosa politica di sicurezza dei contenuti è deselezionata. Selezionala e lascia tutti gli altri valori predefiniti invariati. 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, 127.0.0.1 come Host, 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 del monitoraggio. Puoi tornare indietro e modificarla 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 ( https://icinga.example.com).

Inserisci i dettagli del tuo account amministratore e fai clic sul pulsante Accedi per aprire la 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 controllore 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.
Benvenuto nella procedura guidata di configurazione di Icinga 2!
Ti guideremo attraverso tutti i dettagli di configurazione richiesti.
Si prega di specificare se si tratta di una configurazione di agente/satellite ('n' installa una configurazione master) [Y/n]: n
Successivamente, ti verrà chiesto il nome comune o il nome di dominio. Premi Invio per selezionare il valore predefinito visualizzato se è corretto. Altrimenti, inserisci il dominio e premi Invio.
Si prega di specificare il nome comune (CN) [icinga.example.com]:
Reconfigurazione di Icinga...
Controllo dei certificati esistenti per il nome comune 'icinga.example.com'...
Il certificato '/var/lib/icinga2/certs//icinga.example.com.crt' per CN 'icinga.example.com' esiste già. Salto della generazione del certificato.
Generazione della configurazione master per Icinga 2.
La funzione 'api' è già abilitata.
Successivamente, inserisci il nome della zona master e premi Invio per procedere. Nel nostro caso, è lo stesso del nome di dominio del server.
Nome della zona master [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.
Zone globali predefinite: global-templates director-global
Vuoi specificare zone globali aggiuntive? [y/N]: n
Nella fase successiva, lascia l’host di binding API e la porta come predefiniti e premi Invio per procedere.
Si prega di specificare l'host/porta di binding API (opzionale):
Host di binding []:
Porta di binding []:
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.
Vuoi disabilitare l'inclusione della directory conf.d [Y/n]: Y
Disabilitazione dell'inclusione della directory conf.d...
Controllo se il file api-users.conf esiste...
Fatto.
Ora riavvia il tuo demone Icinga 2 per completare l'installazione!
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'
c81f2a3b86534f34160ed8b776906e5452d8d09c
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/debian 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/debian 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; preset: enabled)
Drop-In: /etc/systemd/system/icinga2.service.d
??limits.conf
Active: active (running) since Mon 2024-01-08 12:52:53 UTC; 35s ago
Main PID: 19530 (icinga2)
Status: "Startup finished."
Tasks: 12
Memory: 13.4M
CPU: 216ms
CGroup: /system.slice/icinga2.service
??19530 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
??19573 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
??19578 /usr/lib/x86_64-linux-gnu/icinga2/sbin/icinga2 --no-stack-rlimit daemon --close-stdio -e /var/log/icinga2/error.log
Avvia la procedura guidata 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.
Benvenuto nella procedura guidata di configurazione di Icinga 2!
Ti guideremo attraverso tutti i dettagli di configurazione richiesti.
Si prega di specificare se si tratta di una configurazione di agente/satellite ('n' installa una configurazione master) [Y/n]: Y
Successivamente, ti verrà chiesto di specificare il nome comune. Lascia il valore predefinito e premi Invio per procedere.
Avvio della procedura di configurazione dell'agente/satellite...
Si prega di specificare il nome comune (CN) [client.example.com]:
Successivamente, specifica l’endpoint genitore come icinga.example.com e inserisci Y per stabilire una connessione con il nodo genitore dal client.
Si prega di specificare l'endpoint genitore (master o satellite) a cui questo nodo dovrebbe connettersi:
Nome comune (CN dal tuo nodo master/satellite): icinga.example.com
Vuoi stabilire una connessione con il nodo genitore da questo nodo? [Y/n]: Y
Successivamente, inserisci l’indirizzo IP del server master e lascia il valore della porta invariato come predefinito.
Si prega di specificare le informazioni di connessione master/satellite:
Host dell'endpoint master/satellite (indirizzo IP o FQDN): 199.247.31.184
Host/porta di binding API (opzionale):
Inserisci N per rifiutare l’aggiunta di ulteriori endpoint master.
Vuoi aggiungere ulteriori endpoint master/satellite? [y/N]: N
Successivamente, ti verranno mostrate le informazioni sul certificato per il server master. Premi Y per confermare le informazioni e procedere.
Informazioni sul certificato genitore:
Versione: 3
Soggetto: CN = icinga.example.com
Emittente: CN = Icinga CA
Valido da: Jan 8 07:36:55 2024 GMT
Valido fino: Feb 8 07:36:55 2025 GMT
Serial: 3a:e5:5e:e6:d5:5e:cc:1d:89:be:18:0b:10:cb:7d:54:8f:82:b1:5e
Algoritmo di firma: sha256WithRSAEncryption
Soggetti Alt Names: icinga.example.com
Impronta: DB 62 0D 2D AF 73 02 F2 86 92 5E A8 50 CD 0F 4F F2 D6 9E 86 AE F6 F9 E4 D7 F2 F2 60 78 1B 92 E5
Queste informazioni sono corrette? [y/N]: Y
Successivamente, inserisci il ticket di richiesta generato nel passaggio precedente.
Si prega di specificare il ticket di richiesta generato sul tuo master di Icinga 2 (opzionale).
(Suggerimento: # icinga2 pki ticket --cn 'client.example.com'): c81f2a3b86534f34160ed8b776906e5452d8d09c
Lascia l’host di binding API e la porta come predefiniti e premi Invio per continuare.
Si prega di specificare l'host/porta di binding API (opzionale):
Host di binding []:
Porta di binding []:
Successivamente, inserisci Y due volte per accettare la configurazione e i comandi dal nodo master.
Accettare la configurazione dal nodo genitore? [y/N]: Y
Accettare i comandi dal nodo genitore? [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 del master come nome della zona genitore per procedere.
Reconfigurazione di Icinga...
Disabilitazione della funzione di notifica. Assicurati di riavviare Icinga 2 affinché queste modifiche abbiano effetto.
Abilitazione della funzione api. Assicurati di riavviare Icinga 2 affinché queste modifiche abbiano effetto.
Nome della zona locale [client.example.com]:
Nome della zona genitore [master]: icinga.example.com
Premi N per saltare l’aggiunta di zone globali aggiuntive.
Zone globali predefinite: global-templates director-global
Vuoi specificare zone globali aggiuntive? [y/N]: N
Premi Y per saltare la disabilitazione delle configurazioni dalla directory /etc/icinga2/conf.d/.
Vuoi disabilitare l'inclusione della directory conf.d [Y/n]: Y
Disabilitazione dell'inclusione della directory conf.d...
Fatto.
Ora riavvia il tuo demone Icinga 2 per completare l'installazione!
Riavvia il servizio 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. L’indirizzo IP nel codice dovrebbe 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 al termine.
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.
// Ping
apply Service "Ping" {
check_command = "ping4"
assign where host.address // check eseguito sul master
}
// Carico di sistema
apply Service "System Load" {
check_command = "load"
command_endpoint = host.vars.client_endpoint // Controllo 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.
[2024-01-08 13:01:26 +0000] information/cli: Icinga application loader (version: r2.14.1-1)
[2024-01-08 13:01:26 +0000] information/cli: Loading configuration file(s).
[2024-01-08 13:01:26 +0000] information/ConfigItem: Committing config item(s).
[2024-01-08 13:01:26 +0000] information/ApiListener: My API identity: icinga.example.com
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 1 IcingaApplication.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 1 Host.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 1 FileLogger.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 1 IdoMysqlConnection.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 4 Zones.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 1 CheckerComponent.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 2 Endpoints.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 2 ApiUsers.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 1 ApiListener.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 1 NotificationComponent.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 246 CheckCommands.
[2024-01-08 13:01:26 +0000] information/ConfigItem: Instantiated 4 Services.
[2024-01-08 13:01:26 +0000] information/ScriptGlobal: Dumping variables to file '/var/cache/icinga2/icinga2.vars'
[2024-01-08 13:01:27 +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 sulla dashboard di Icinga
Apri la dashboard web di Icinga2 per verificare le informazioni sulla macchina client. Seleziona Panoramica >> Host dal menu a sinistra e vedrai la seguente schermata.

Potrebbe volerci del tempo affinché lo stato del client venga visualizzato come UP. Fai clic sul client per vedere ulteriori 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 Debian 12 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.