Prerequisiti reali: Graylog non è un pacchetto singolo
Su Ubuntu 24.04, Graylog non si installa bene se lo si tratta come un normale servizio applicativo. La catena corretta è: MongoDB per i metadati, OpenSearch per l’indicizzazione, Graylog per l’ingestione e la ricerca, più una JVM adeguata. Se uno dei tre pezzi è fuori versione o configurato male, il risultato tipico è un login che non parte, stream vuoti, oppure code di ingestione che crescono senza motivo.
Prima di toccare il sistema, definisci l’obiettivo operativo: Graylog deve avviarsi, l’interfaccia web deve rispondere, il nodo OpenSearch deve essere green o almeno coerente con il numero di shard attesi, e l’ingestione deve accettare messaggi senza errori nel journal. Questa è la baseline da verificare dopo ogni step.
Versioni da allineare prima dell’installazione
La parte che crea più problemi è l’allineamento delle versioni. Graylog 6.x richiede una combinazione sensata di MongoDB e OpenSearch; non prendere per buono un tutorial vecchio o un repository terzo non verificato. Per questo articolo assumo un’installazione classica su singolo server, adatta a test, lab o piccoli ambienti. In produzione multi-nodo il flusso resta simile, ma cambiano sizing, rete e hardening.
Controlla subito che il server abbia risorse minime realistiche: almeno 4 GB di RAM per un test serio, meglio 8 GB o più se OpenSearch deve lavorare senza soffrire. Il disco deve avere IOPS decenti, perché Graylog non è CPU-bound nel setup base: spesso il collo di bottiglia è storage + heap + shard management.
Preparazione di Ubuntu 24.04
Parti da sistema aggiornato e con i pacchetti base installati. Non inventare ottimizzazioni prima di avere il servizio in piedi.
sudo apt update
sudo apt -y upgrade
sudo apt -y install curl gnupg apt-transport-https ca-certificates lsb-release pwgen uuid-runtime
Se il server è esposto su internet, verifica anche che il firewall non blocchi a caso le porte che userai: 9000/tcp per la web UI, 1514/tcp o 1514/udp per l’ingestione syslog, 12201/udp o 12201/tcp per GELF, e le porte interne dei servizi solo se davvero necessari. In un setup singolo nodo, MongoDB e OpenSearch restano in locale e non dovrebbero essere pubblicati.
Installare MongoDB per i metadati
Graylog usa MongoDB per configurazioni, utenti, stream, dashboard e oggetti applicativi. Non va confuso con il motore di ricerca. Per compatibilità e semplicità, usa una versione supportata dalla release di Graylog che hai scelto. Se non hai questa informazione a portata di mano, fermati e verifica la matrice ufficiale della versione prima di proseguire: è il punto in cui si evita di costruire un sistema già rotto.
Su Ubuntu 24.04 puoi installare MongoDB dal repository ufficiale del vendor, non dai pacchetti generici del sistema. La logica è sempre la stessa: aggiungi la chiave, definisci il repository, installa il server e verifica lo stato del servizio.
# Esempio generico: adatta il repository alla versione supportata dalla tua release Graylog
curl -fsSL https://pgp.mongodb.com/server-7.0.asc | sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-7.0.gpg
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list
sudo apt update
sudo apt -y install mongodb-org
sudo systemctl enable --now mongod
sudo systemctl status mongod --no-pager
Verifica che MongoDB ascolti solo in locale, almeno nel primo schema di installazione:
ss -ltnp | grep 27017
mongosh --eval 'db.runCommand({ ping: 1 })'
Atteso: `mongod` attivo e `ping: 1`. Se il servizio non sale, controlla `journalctl -u mongod -n 100 --no-pager` e il file `/var/log/mongodb/mongod.log`.
Installare OpenSearch e preparare il nodo di ricerca
OpenSearch è il motore che regge la ricerca e l’indicizzazione. Qui le due trappole classiche sono la memoria virtuale e la sicurezza del cluster. Su singolo nodo Graylog, il cluster deve essere coerente e semplice: niente discovery inutili, niente multi-node improvvisato, niente tuning copiato da Elasticsearch vecchi tutorial.
Prima di installare, imposta il kernel parameter richiesto per la memoria virtuale se serve, e disabilita il demone di swap se l’host è piccolo e il carico è prevedibile. Non è una ricetta universale, ma un nodo con poca RAM e swap aggressivo rende Graylog lento in modo poco leggibile.
sudo sysctl -w vm.max_map_count=262144
echo 'vm.max_map_count=262144' | sudo tee /etc/sysctl.d/99-graylog.conf
sudo sysctl --system
Installa OpenSearch dal repository ufficiale e abilita il servizio. La configurazione minima per un nodo singolo deve specificare il nome del cluster, il nome del nodo e l’interfaccia di binding. Per il laboratorio, tieni tutto in localhost; per ambienti distribuiti, separa rete di management e rete dati.
# Esempio: installazione tramite repository ufficiale OpenSearch
curl -fsSL https://artifacts.opensearch.org/publickeys/opensearch.pgp | sudo gpg --dearmor -o /usr/share/keyrings/opensearch.gpg
echo "deb [signed-by=/usr/share/keyrings/opensearch.gpg] https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt stable main" | sudo tee /etc/apt/sources.list.d/opensearch.list
sudo apt update
sudo apt -y install opensearch
sudo systemctl enable --now opensearch
Controlla il file di configurazione, tipicamente `/etc/opensearch/opensearch.yml`, e imposta almeno questi valori:
cluster.name: graylog
node.name: graylog-1
network.host: 127.0.0.1
http.port: 9200
discovery.type: single-node
Poi verifica che il motore risponda:
curl -s http://127.0.0.1:9200 | jq .
Se hai un errore di startup, i primi posti da guardare sono `journalctl -u opensearch -n 100 --no-pager` e i log in `/var/log/opensearch/`. In questo passaggio non forzare il tuning della JVM oltre il necessario: meglio un nodo piccolo ma stabile che uno “ottimizzato” e instabile.
Installare Graylog su Ubuntu 24.04
Graylog va installato dopo che MongoDB e OpenSearch rispondono correttamente. Se lo installi prima, rischi di confondere un errore di bootstrap con un problema di dipendenze. Il repository ufficiale di Graylog fornisce il pacchetto `.deb` e il servizio systemd.
curl -fsSL https://packages.graylog2.org/repo/packages/graylog-6.1-repository_latest.deb -o /tmp/graylog-repo.deb
sudo dpkg -i /tmp/graylog-repo.deb
sudo apt update
sudo apt -y install graylog-server
Durante l’installazione, prepara subito due valori fondamentali: la password seed e la secret per il cookie signing. La secret deve essere lunga e casuale; non riusarla tra ambienti. La password seed serve a creare l’hash dell’utente amministratore iniziale.
pwgen -N 1 -s 96
openssl rand -hex 32
Nel file `/etc/graylog/server/server.conf` imposta almeno questi campi:
password_secret = INCOLLA_QUI_UNA_STRINGA_LUNGA_RANDOM
root_password_sha2 = SHA256_DA_PASSWORD_ADMIN
http_bind_address = 0.0.0.0:9000
mongodb_uri = mongodb://127.0.0.1:27017/graylog
opensearch_hosts = http://127.0.0.1:9200
Per generare l’hash SHA-256 della password admin, usa un comando locale e non salvare password in chiaro nei file di lavoro. Esempio:
echo -n 'PasswordMoltoForte' | sha256sum | awk '{print $1}'
Avvia il servizio e verifica il bootstrap:
sudo systemctl enable --now graylog-server
sudo systemctl status graylog-server --no-pager
sudo journalctl -u graylog-server -n 100 --no-pager
Atteso: servizio attivo, nessun errore di connessione a MongoDB o OpenSearch, e log che indicano il completamento dell’inizializzazione. Se Graylog parte ma la web UI resta vuota o non loginna, il sospetto cade quasi sempre su `root_password_sha2`, `password_secret` o sulla connettività verso OpenSearch.
Prima verifica funzionale: UI, login e ingestione
Il test corretto non è “la pagina si apre”, ma “posso autenticarmi, creare uno stream e ricevere un messaggio”. Una volta avviato Graylog, apri `http://IP_DEL_SERVER:9000/` e accedi con `admin` e la password che hai impostato tramite hash. Se il reverse proxy non esiste ancora, esponi la porta 9000 solo verso la rete amministrativa.
Per testare l’ingestione, crea un input GELF o Syslog dalla UI. In molti casi il modo più rapido è un input GELF UDP su 12201, ma per ambienti dove la perdita pacchetti è un problema preferisci TCP o una pipeline più controllata. Dopo l’attivazione, invia un messaggio di prova.
logger -n 127.0.0.1 -P 1514 -T "test graylog syslog"
# oppure, per GELF, usa un client dedicato o curl se hai un endpoint HTTP di input
Nel pannello Graylog, controlla che il messaggio compaia nella ricerca. Se non arriva, il problema è quasi sempre a uno di questi livelli: porta sbagliata, protocollo sbagliato, firewall, input non attivo, oppure permessi di binding insufficienti sul servizio.
Tuning minimo che vale davvero la pena fare
Molti cercano tuning avanzato troppo presto. In pratica, le tre cose che aiutano di più sono: heap coerente, storage sano, retention ragionevole. Per Graylog e OpenSearch, la memoria va distribuita con criterio: non dare tutta la RAM a uno solo dei due servizi. Se il server ha 8 GB, non aspettarti miracoli con dashboard pesanti e retention lunga.
Graylog espone parametri JVM in `/etc/default/graylog-server` o file equivalente, a seconda del pacchetto. OpenSearch ha i suoi parametri in `/etc/opensearch/jvm.options` o configurazioni distribuite. Prima di cambiare, salva una copia dei file:
sudo cp /etc/graylog/server/server.conf /etc/graylog/server/server.conf.bak.$(date +%F)
sudo cp /etc/opensearch/opensearch.yml /etc/opensearch/opensearch.yml.bak.$(date +%F)
Per la retention, il punto non è solo lo spazio disco ma anche il numero di indici e shard. Un cluster piccolo con troppi shard è lento prima ancora di essere pieno. Tieni la retention corta finché non hai una misura reale del volume giornaliero di log. Se non hai questa metrica, la stai indovinando.
Esposizione sicura: reverse proxy, TLS e superficie d’attacco
Se Graylog deve essere usato fuori dalla LAN, non pubblicare la 9000 in chiaro. Metti davanti un reverse proxy con TLS, limita l’accesso con ACL o VPN e riduci la superficie d’attacco. Graylog gestisce dati operativi che spesso contengono IP, username, token applicativi e dettagli di errore: non è un servizio da lasciare aperto senza controllo.
Il proxy può essere Nginx o Apache, a seconda del tuo stack. L’importante è che il backend resti su localhost e che il certificato sia gestito in modo automatico o almeno con rotazione chiara. Se usi Let’s Encrypt, verifica che il rinnovo sia testato e che il proxy venga ricaricato senza interrompere il servizio.
Dal punto di vista sicurezza, controlla anche i permessi dei file di configurazione: `server.conf` contiene segreti e deve essere leggibile solo da root e dal gruppo del servizio, se previsto dal pacchetto. Una verifica rapida utile è:
sudo stat -c '%a %U %G %n' /etc/graylog/server/server.conf
Se il file è troppo permissivo, correggilo subito. Non lasciare password seed o segreti in shell history, ticket o note condivise: ruota il valore se pensi sia finito dove non doveva.
Come capire subito dove si è rotto qualcosa
Quando Graylog non sale, la diagnosi più veloce segue sempre lo stesso ordine: rete locale, database, motore di ricerca, poi applicazione. Non partire dalla UI. Parti dai servizi e dai log.
- Verifica che MongoDB risponda:
mongosh --eval 'db.runCommand({ ping: 1 })'. - Verifica che OpenSearch risponda:
curl -s http://127.0.0.1:9200. - Verifica Graylog:
systemctl status graylog-server --no-pagerejournalctl -u graylog-server -n 100 --no-pager. - Verifica porte in ascolto:
ss -ltnpe, se serve,ss -lunp.
Se il sintomo è “pagina bianca” o “login che non completa”, guarda anche il browser devtools e il log applicativo. Spesso il problema è un errore 500 sul backend causato da un host OpenSearch irraggiungibile o da una versione incompatibile. In quel caso il fix non è resettare la cache del browser, ma correggere la dipendenza rotta.
Rollback pratico se qualcosa va storto
Se hai seguito la procedura in modo lineare, il rollback è semplice: fermare Graylog, ripristinare i file di configurazione salvati, eventualmente disinstallare i pacchetti aggiunti e lasciare in piedi MongoDB/OpenSearch solo se servono ad altro. Prima di rimuovere dati o indici, valuta l’impatto: i log già ingeriti possono essere preziosi per troubleshooting o audit.
sudo systemctl stop graylog-server
sudo cp /etc/graylog/server/server.conf.bak.YYYY-MM-DD /etc/graylog/server/server.conf
sudo systemctl start graylog-server
Se il rollback riguarda OpenSearch, attenzione: cancellare indici o resettare il cluster ha impatto diretto sui dati storici. Fallo solo con backup, finestra di manutenzione e consapevolezza del blast radius. In un singolo nodo, il danno è immediato e totale per la ricerca storica.
Checklist finale di validazione
Un’installazione ben riuscita non è solo un servizio “active”. Deve rispettare questa checklist minima:
- Graylog risponde su `http://SERVER:9000` o tramite reverse proxy TLS.
- Login admin funzionante e password iniziale cambiata.
- MongoDB raggiungibile e senza errori in log.
- OpenSearch risponde e non mostra errori di bootstrap.
- Input di test riceve messaggi e li rende ricercabili.
- Le configurazioni con segreti non sono esposte in chiaro.
Se uno di questi punti fallisce, il problema è quasi sempre nel layer precedente, non nella UI. Questa è la regola che evita di perdere ore: osserva prima lo stato dei servizi, poi la rete, poi i dettagli applicativi.
Assunzione operativa: procedura pensata per un host Ubuntu 24.04 singolo nodo, con Graylog, MongoDB e OpenSearch locali; per un’architettura distribuita cambiano sizing, rete, TLS e gestione dei secret.
Commenti (0)
Nessun commento ancora.
Segnala contenuto
Elimina commento
Eliminare definitivamente questo commento?
L'azione non si può annullare.