Con il crescere dell’infrastruttura aumenta il numero di componenti da tenere sotto controllo e diventa rapidamente impraticabile verificarne manualmente lo stato.
Il monitoraggio assume quindi un ruolo fondamentale nella gestione dell’infrastruttura. Tra le diverse soluzioni disponibili, Zabbix non si limita al semplice controllo della disponibilità degli host, ma permette di raccogliere metriche a diversi livelli, correlare gli eventi e definire condizioni di allarme basate sullo stato reale dei sistemi.
Creazione della VM
Come descritto nell’articolo dedicato, il primo passaggio consiste nella creazione di una macchina virtuale Debian all’interno di Proxmox VE, utilizzando preferibilmente un template preconfigurato oppure una delle immagini ufficiali in formato qcow2.
La VM verrà inserita nella VLAN di Management (10.0.5.0/24) e configurata automaticamente tramite Cloud-Init con i seguenti parametri di rete:
- Indirizzo IP: 10.0.5.22/24
- Gateway: 10.0.5.254
- DNS: 10.0.5.254
Risulta superfluo specificare che indirizzi, subnet, VLAN, ecc. dipendono dal proprio laboratorio.
Dopo la creazione della macchina virtuale, è consigliabile includerla immediatamente nel piano di backup di Proxmox.
Zabbix dietro reverse proxy
Per consentire l’accesso al servizio in HTTPS, Zabbix viene pubblicato dietro un reverse proxy. Nella nostra infrastruttura, viene utilizzato Nginx Proxy Manager Plus, con un certificato self-signed.
Creare un nuovo Proxy Host seguendo le proprie specifiche:
Per una maggior sicurezza, possiamo anche impostare delle Access List, limitando l’accesso a soli determinati indirizzi IP.
Bisogna creare la seguente regola di firewall affinché NPM possa raggiungere Zabbix sulla porta 80.
Infine, creare un DNS override in OPNsense da Services > Unbound DNS > Overrides, in modo che zabbix.home.lan punti all’indirizzo IP del reverse proxy (10.0.70.1 nel nostro homelab).
Installazione del server Zabbix
Accedere alla VM tramite SSH. Scaricare e installare il pacchetto del repository ufficiale di Zabbix, quindi aggiornare l’indice dei pacchetti:
wget https://repo.zabbix.com/zabbix/7.4/release/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.4+debian13_all.deb
dpkg -i zabbix-release_latest_7.4+debian13_all.deb
apt update
Installare PostgreSQL con il seguente comando:
apt install -y postgresq
Installare il server Zabbix con tutti i componenti necessari:
apt install zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent2 zabbix-agent2-plugin-postgresql
Creazione del database
Assicurarsi che il servizio PostgreSQL sia attivo. Creare l’utente e il database dedicati a Zabbix:
sudo -u postgres createuser --pwprompt zabbix
password: *******************
sudo -u postgres createdb -O zabbix zabbix
Sul server Zabbix, importare lo schema e i dati iniziali. Durante l’operazione verrà richiesta la password appena impostata:
zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | \
sudo -u zabbix psql zabbix
Modificare il file di configurazione del server Zabbix per impostare la password del database:
nano /etc/zabbix/zabbix_server.conf
Impostare la password del database nel parametro seguente:
DBPassword=password
Al posto di password deve essere inserita la password dell’utente zabbix appena creato.
Avvio dei servizi
Abilitare e riavviare servizi seguenti:
systemctl enable -now zabbix-server zabbix-agent2 nginx php8.4-fpm
systemctl restart zabbix-server zabbix-agent2 nginx php8.4-fpm
Accesso all’interfaccia web
Aprire quindi l’URL https://zabbix.home.lan (o qualsiasi altro URL configurato) in un browser per completare la configurazione iniziale.
Assicurarsi che tutti i requisiti siano soddisfatti prima di procedere.
Primo accesso e configurazione utenti
Eseguire il primo accesso con l’utente di default:
username: Admin
password: zabbix
Una volta effettuato l’accesso, creare un nuovo utente amministratore con ruolo Super Admin dal menu Users. Eseguire il login con il nuovo utente e disabilitare gli account predefiniti Admin e Guest, inserendoli nel gruppo Disabled per impedire il loro utilizzo.
Configurazione della MFA
Il passaggio successivo consiste nella configurazione dell’autenticazione multifattore (MFA) nell’interfaccia web di Zabbix. La relativa sezione è disponibile in Users > Authentication > MFA settings.
Per applicare l’autenticazione a due fattori a un gruppo, è possibile utilizzare un gruppo già esistente oppure crearne uno nuovo. In questo esempio viene creato un nuovo gruppo dalla sezione Users > User groups > Create user group.
Assegnare un nome appropriato al gruppo. Nella sezione Multi-factor authentication, selezionare il metodo MFA precedentemente creato, denominato nell’esempio Zabbix-2FA. Aggiungere al gruppo gli utenti che dovranno utilizzare il secondo fattore di autenticazione.
La configurazione MFA è ora completa e può essere verificata effettuando l’accesso a Zabbix con le credenziali di un utente inserito nel gruppo. Dopo l’inserimento di nome utente e password, verrà visualizzata la richiesta di scansionare un codice QR tramite un’applicazione di autenticazione installata sullo smartphone, come Aegis Authenticator.
Abilitare le notifiche via e-mail
Per abilitare l’invio delle notifiche via e-mail, accedere alla sezione Alerts > Media types e configurare il metodo di notifica corrispondente.
Successivamente, per ogni utente, accedere alla sezione Users > Media e selezionare email come metodo di notifica.
Configurare le notifiche via ntfy
Scaricare il file ntfy.yaml sul proprio dispositivo. Importare il file in Zabbix dalla sezione Alerts > Media types > Import.
Configurazione del media type
Selezionare il media type importato e configurare l’URL della propria istanza e altri eventuali parametri di autenticazione.
Abilitazione delle notifiche per un utente
Accedere alla sezione Users > Users, selezionare un utente e recarsi nella scheda Media. Impostare i seguenti valori:
- Type:
ntfy - Send to: il topic ntfy da utilizzare
Test della notifica
Per verificare il corretto funzionamento della configurazione, spostarsi nella sezione Alerts > Media types. Nella riga relativa a ntfy, fare clic su Test e compilare i campi nel modo seguente:
- Message:
This is a disaster message! - Severity:
Disaster - Subject:
Danger - To: il topic ntfy da utilizzare
Infine, fare clic su Test per inviare una notifica di prova. Bisognerà aver configurato l’applicazione ntfy sullo smartphone.
Monitorare PVE tramite il template Proxmox VE by HTTP
Il template Proxmox VE by HTTP consente di monitorare in modo completo un ambiente Proxmox VE tramite l’API REST ufficiale. Non è necessario installare l’agente Zabbix sulle macchine virtuali o sull’host Proxmox, poiché il template si occupa di raccogliere diverse metriche relative a:
- macchine virtuali e container LXC;
- attività di backup;
- stato degli storage;
- task;
- interfacce di rete;
- stato di salute dei dischi;
- servizi Proxmox VE;
- pool ZFS
Creazione dell’utente
Creare un nuovo utente dalla sezione Datacenter > Permissions > Users.
Impostare i seguenti valori:
- User:
zabbix@pve - Password: definire una password per l’utente
Accedere a Datacenter > Permissions > User Permission.
Configurare i parametri come segue:
- Path:
/ - User:
zabbix@pve - Role:
PVEAuditor - Propagate: abilitato
Creazione del token API
Accedere a Datacenter > Permissions > API Tokens.
Utilizzare i seguenti valori:
- User:
zabbix@pve - Token ID:
zabbix - Privilege Separation: abilitata
Assegnare esplicitamente i privilegi al token accedendo a Datacenter > Permissions > API Token Permission.
Configurare:
- Path:
/ - Token:
zabbix@pve!Zabbix - Role:
PVEAuditor - Propagate: abilitato
Installazione del template
-
Creare un nuovo host da
Data collection > Hosts > Create host -
Configurare l’host, ad esempio, con i seguenti valori:
- Host name:
pve01 - Template:
Proxmox VE by HTTP - Host Groups:
Hypervisors,Linux ServersVirtual machines
- Host name:
Configurazione delle macro
Impostare sull’host le macro richieste dal template:
{$PVE.URL.HOST}:10.0.5.1{$PVE.URL.PORT}:8006{$PVE_NODE}:pve01{$PVE.TOKEN.ID}:zabbix@pve!zabbix{$PVE_API_TOKEN_ID}:zabbix{$PVE.TOKEN.SECRET}: Secret
Da Monitoring > Hosts si dovrebbe visualizzare una dashboard con i dati del nodo PVE.
Monitorare PBS
Per monitorare Proxmox Backup Server (o un qualsiasi altro host Linux) tramite Zabbix:
- Installare su PBS l’agent:
apt install zabbix-agent2 - Assicurarsi che il servizio sia abilitato:
systemctl enable --now zabbix-agent2.service - Configurare l’agent coi parametri richiesti, modificando il file
/etc/zabbix/zabbix_agent2.conf:
Server=zabbix.home.lan
ListenPort=10050
ServerActive=zabbix.home.lan
Hostname=pbs01.home.lan
HostMetadataItem=Linux
Timeout=10
-
Riavviare il servizio:
systemctl restart zabbix-agent2.service -
Accedere all’interfaccia web di Zabbix e creare un nuovo host da
Data collection > Hosts > Create host, impostando i seguenti valori:- Host name:
pbs01 - Host Groups:
Linux Servers - Interfaces: Agent IP, Port 10050
- Host name:
Dopo qualche secondo, Zabbix dovrebbe incominciare a ricevere i dati dall’host.
Per configurare l’autoregistrazione degli host con agent, seguire questa guida.
Riferimenti
- Get Zabbix
- Install Zabbix Server 7.0 on Debian
- Zabbix Quickstart
- Two-factor authentication (2FA) in Zabbix 7.0
- Proxmox VE by HTTP
- https://github.com/Garfieldttt/Zabbix-Template-Proxmox-VE-REST-API
- How to delete/disable Admin and Guest accounts?
- Zabbix Integration: Proxmox VE Backup Monitoring
- Zabbix: how to monitor servers and applications in real time
- How to configure ntfy notifications for Zabbix