Installare Zabbix su Linux non è complicato, ma conviene farlo con un ordine preciso: prima il database, poi il server, poi il frontend web e infine l’agent. Se salti questo ordine, finisci quasi sempre a rincorrere errori banali come credenziali errate, timezone non allineata o servizi avviati con configurazioni incomplete.
Qui sotto trovi una procedura lineare, pensata per un’installazione classica su una distro recente con systemd. I nomi dei pacchetti cambiano un po’ tra Debian/Ubuntu e RHEL/Alma/Rocky, ma la logica resta identica. Dove serve, ti indico i punti da verificare per chiudere i gap senza andare a tentativi.
1. Scegliere l’architettura: tutto in uno o componenti separati
Prima di toccare i pacchetti, decidi se Zabbix vivrà tutto sulla stessa macchina o se database e frontend saranno separati. Per un lab o un piccolo ambiente, una singola VM va bene. In produzione, invece, conviene almeno separare il database dal resto se prevedi crescita, retention lunga o molti host monitorati.
La catena minima è questa: database relazionale supportato da Zabbix, servizio server Zabbix, frontend PHP su web server e agent sui nodi da monitorare. Se manca uno di questi pezzi, l’installazione non è completa: il server può partire, ma il frontend non si autentica al database, oppure l’agent resta installato ma non comunica con il server.
2. Prerequisiti pratici da controllare subito
Controlla spazio disco, RAM e sincronizzazione oraria. Zabbix non è assetato di risorse in un’installazione piccola, ma il database e il frontend diventano sensibili se il disco è quasi pieno o l’orologio di sistema è fuori sync.
Verifiche rapide:
df -hper vedere se hai margine sul filesystem che ospita database e log.timedatectlper confermare ora e timezone.free -hper capire se la macchina ha abbastanza memoria per database e server Zabbix.
Se il filesystem è già sopra l’80-85% prima di partire, fermati: Zabbix scrive log, cache e database, quindi il rischio di saturazione arriva in fretta. In quel caso la correzione non è “installare e sperare”, ma liberare spazio o spostare i dati su volumi più adatti.
3. Installare il repository corretto
Il modo più pulito è usare il repository ufficiale Zabbix della tua major release. Non mescolare pacchetti della distro con pacchetti presi a caso da versioni diverse: è il modo più veloce per creare dipendenze spezzate o moduli PHP non compatibili.
Su Debian/Ubuntu il flusso tipico è scaricare il pacchetto repository e poi aggiornare l’indice. Su RHEL-like conviene installare il repository RPM corrispondente alla versione della distribuzione.
Esempio generico di verifica del repository attivo:
apt-cache policy zabbix-server-mysqloppure:
dnf repolist | grep -i zabbixSe il repository non compare, non andare avanti: senza quello rischi di installare versioni vecchie dai mirror della distro, spesso non allineate con il frontend o con i pacchetti del database supportati.
4. Preparare il database
Zabbix ha bisogno di un database relazionale. Nelle installazioni moderne si usa quasi sempre MariaDB o MySQL; PostgreSQL è altrettanto valido, ma qui tengo l’esempio su MySQL/MariaDB perché è il caso più comune nelle community Linux.
Installa il motore database, avvialo e crea un database dedicato con un utente dedicato. Non usare l’account root applicativo per Zabbix: è una scelta comoda solo all’inizio e pessima appena l’ambiente cresce.
Esempio di creazione database:
mysql -u root -pCREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'PASSWORD_FORTE';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;Il punto delicato è la password: non scriverla in chiaro nei ticket, nei documenti condivisi o nei file lasciati in giro. Se devi automatizzare, usa un vault o almeno un file di configurazione con permessi stretti e ruota le credenziali se sospetti esposizione.
Importa poi lo schema iniziale di Zabbix. Il path cambia in base alla versione e alla distribuzione, ma di solito i file sono sotto /usr/share/doc/ o un percorso simile del pacchetto. Se non sai dov’è, il modo pulito per trovarlo è interrogare il pacchetto installato:
rpm -ql zabbix-server-mysql | grep -E 'create|schema|images'oppure:
dpkg -L zabbix-server-mysql | grep -E 'create|schema|images'Se l’import fallisce, le cause più probabili sono: charset non coerente, utente senza privilegi, file schema sbagliato o database già inizializzato con dati parziali. In quel caso non forzare un secondo import alla cieca: prima verifica i log del database e l’output del comando di import.
5. Installare Zabbix server e frontend web
Con database pronto, installa il server Zabbix, il frontend e il supporto PHP richiesto dal pacchetto web. Qui è facile sbagliare una dipendenza e ritrovarsi con la pagina di setup che carica male o con errori di compatibilità PHP.
Su una distribuzione Debian-like il pacchetto del frontend include spesso il necessario per Apache o Nginx con PHP-FPM; su RHEL-like potresti dover abilitare moduli PHP specifici. Il controllo più utile non è “il pacchetto si è installato”, ma “il backend web riesce a eseguire PHP con i moduli richiesti”.
Pacchetti da cercare, a livello concettuale:
zabbix-server-mysqlo equivalente del backend database scelto.zabbix-frontend-phpo pacchetto frontend equivalente.zabbix-apache-confoppure configurazione per Nginx + PHP-FPM, a seconda del web server.
Una volta installato il server, il file che di solito va toccato è /etc/zabbix/zabbix_server.conf. I parametri davvero importanti all’inizio sono il nome del database, l’utente e la password. Se il server non si autentica al DB, il servizio può partire ma poi fallire sui primi accessi ai dati.
DBName=zabbix
DBUser=zabbix
DBPassword=PASSWORD_FORTESubito dopo, controlla che il servizio web punti al frontend corretto e che il PHP abbia timezone coerente. Il frontend Zabbix è molto sensibile a questo dettaglio: se il timezone PHP non è impostato, l’installazione può proseguire ma compariranno avvisi o comportamenti strani nei grafici e negli orari degli eventi.
6. Configurare PHP e il web server
Il frontend di Zabbix non vive bene con un PHP troppo vecchio o troppo “minimal”. Devi verificare versione PHP, timezone, limiti di memoria e upload. I valori esatti dipendono dalla release di Zabbix, quindi il punto non è copiare numeri a caso ma confermare i requisiti della versione che stai installando.
Controlli utili:
php -v
php -i | grep -E 'date.timezone|memory_limit|max_execution_time'Se usi Apache, verifica che il virtual host del frontend sia attivo e che il modulo PHP corretto sia caricato. Se usi Nginx, controlla il socket PHP-FPM e i permessi sul docroot. Gli errori più frequenti qui sono banali: socket sbagliato, service PHP-FPM fermo, o document root non allineata alla configurazione del pacchetto.
Un controllo rapido lato web server è questo:
systemctl status apache2
systemctl status nginx
systemctl status php-fpmNon serve avviare tutto insieme alla cieca: prima verifica quale servizio web stai davvero usando. Se ne controlli due ma ne hai uno solo installato, perdi tempo e rischi di inseguire falsi negativi.
7. Avviare i servizi e leggere i log giusti
A questo punto avvia i servizi in ordine: database, server Zabbix, web server e PHP-FPM se separato. Poi guarda i log, non solo lo stato del systemd. Lo stato ti dice se il demone è “running”, ma non ti spiega perché il frontend non completa il wizard o perché il server non apre la connessione al database.
Comandi utili:
systemctl enable --now mariadb
systemctl enable --now zabbix-server
systemctl enable --now apache2oppure, su sistemi con Nginx/PHP-FPM:
systemctl enable --now nginx
systemctl enable --now php-fpmPer i log, i riferimenti più utili sono il journal di systemd e il log specifico di Zabbix server. Un controllo pratico:
journalctl -u zabbix-server -n 100 --no-pagerSe il server non parte, cerca errori del tipo “cannot connect to database”, “permission denied” o “unsupported charset”. Se invece il servizio parte ma il frontend resta in errore, il problema di solito è lato PHP o configurazione web, non lato server Zabbix.
8. Completare il wizard web
Apri il browser e vai all’URL del frontend. Il wizard ti chiederà parametri del database, nome del server, utente amministrativo iniziale e timezone. Qui conviene non improvvisare: inserisci i dati del database creato prima e conserva le credenziali iniziali in un vault o in un gestore sicuro, non in un file di testo lasciato sul desktop.
Se il wizard non supera un passaggio, il messaggio è quasi sempre abbastanza esplicito: database non raggiungibile, parametri errati o PHP non conforme. In quel caso non rifare tutta l’installazione. Correggi solo il punto che fallisce e ricarica la pagina.
Dopo il completamento, accedi con l’utente amministratore creato dal wizard e cambia subito la password iniziale. È un passaggio piccolo ma importante: lasciare l’admin predefinito con credenziali note è una superficie d’attacco inutile, soprattutto se il frontend è esposto oltre la LAN.
9. Installare e registrare l’agent sui nodi monitorati
L’agent serve a raccogliere metriche dal sistema monitorato. Puoi usare l’agent classico o l’agent2, a seconda della versione e delle esigenze. La scelta pratica è semplice: se vuoi compatibilità tradizionale e configurazione minimale, vai con l’agent; se ti servono plugin e una gestione più moderna, valuta agent2.
La configurazione chiave è il server Zabbix autorizzato a interrogare l’agent e, se usi active checks, il nome del server a cui l’agent deve collegarsi. Un esempio di file è /etc/zabbix/zabbix_agentd.conf o equivalente:
Server=IP_DEL_SERVER_ZABBIX
ServerActive=IP_DEL_SERVER_ZABBIX
Hostname=nome-host-univocoDopo il riavvio dell’agent, verifica la porta 10050 in ascolto e il dialogo dal server. Un test rapido:
systemctl status zabbix-agent
ss -lntp | grep 10050Dal server puoi testare con gli strumenti Zabbix se presenti, oppure almeno con una connessione TCP verso la porta dell’agent. Se la porta è chiusa, il problema è locale al nodo. Se la porta è aperta ma Zabbix non vede i dati, controlla hostname, firewall e autorizzazione del server nel file di configurazione.
10. Hardening minimo prima di considerarlo pronto
Una volta che l’installazione funziona, non lasciarla nella configurazione più permissiva possibile. Zabbix è un sistema sensibile perché vede infrastruttura, host, template, credenziali di integrazione e spesso anche notifiche esterne. La protezione minima non è un optional.
Le cose da fare subito sono semplici:
limitare l’accesso al frontend con firewall o reverse proxy;
usare HTTPS con certificato valido;
tenere il database non esposto su rete pubblica;
verificare i permessi dei file di configurazione;
ruotare password e segreti se sono stati usati in fase di test.
Se il database ascolta su rete, controlla che l’accesso sia ristretto solo agli host necessari. Se il frontend è dietro un proxy, verifica gli header corretti e il redirect verso HTTPS. Sono dettagli che sembrano secondari finché non devi inseguire login falliti o sessioni che saltano in modo intermittente.
11. Verifiche finali che evitano i falsi “installato ma non funzionante”
Prima di chiudere il lavoro, fai una checklist breve ma concreta. Non basta che la home del frontend si apra: devi confermare che server, database, frontend e agent siano allineati.
Controlli minimi:
il servizio Zabbix server è attivo:
systemctl is-active zabbix-serverdeve rispondereactive;il frontend mostra lo stato del server come disponibile;
il database contiene le tabelle di Zabbix e non solo uno schema vuoto;
l’agent risponde al server o al test locale;
i log non mostrano errori ricorrenti dopo alcuni minuti di esercizio.
Se vuoi un controllo rapido del database, basta verificare che le tabelle esistano:
mysql -u zabbix -p -e "USE zabbix; SHOW TABLES;"Se invece il frontend segnala che il server non è raggiungibile, il problema è spesso nel file di configurazione del server Zabbix, nel firewall locale o in un database che accetta connessioni ma non risponde correttamente alle query iniziali.
Assunzione: i pacchetti della distribuzione e la versione di Zabbix sono coerenti tra loro; se non lo sono, va verificata la matrice di compatibilità della release prima di procedere oltre.
Commenti (0)
Nessun commento ancora.
Segnala contenuto
Elimina commento
Eliminare definitivamente questo commento?
L'azione non si può annullare.