Introduzione
Chi lavora come sviluppatore o amministratore di sistema sa bene quanto sia importante utilizzare i file di log per individuare e risolvere errori sui sistemi Linux e Unix. Strumenti come grep, tail, cat o journalctl sono spesso utilizzati per visualizzare questi file, ma con l’aumentare del numero di log, gestirli può diventare complicato. Ecco dove entra in gioco lnav, un avanzato visualizzatore di file di log che va oltre le funzionalità di base. Questo strumento non solo riconosce i log, ma identifica anche timestamp, livelli di log e altri dettagli cruciali. Inoltre, consente di eseguire query SQL sui file di log standard e creare report personalizzati. Vediamo come installare e utilizzare lnav.
Caratteristiche distintive di lnav
- Decompressione dei file di log in tempo reale, similmente alle utilità z* su Linux e Unix.
- Riconoscimento del formato dei file di log.
- Unione dei file di log in una vista unica ordinata per tempo.
- Supporto ai colori nel terminale per evidenziare errori e avvisi.
- Supporto SSH (SFTP) per visualizzare file di log su macchine Linux e Unix remote.
- Seguire i file durante la rinomina e trovare nuovi file in directory specificate.
- Creazione di un indice di errori e avvisi.
- Stampa formattata di JSON.
- Navigazione rapida tra errori e avvisi.
- Ricerca con espressioni regolari.
- Evidenziazione e filtraggio di messaggi utilizzando espressioni regolari o SQLite.
- Visualizzazione di un istogramma dei messaggi nel tempo.
- Query dei messaggi usando SQLite.
Installazione
Ecco come installare lnav sulle diverse distribuzioni Linux e Unix:
Debian/Ubuntu Linux:
sudo apt install lnav
CentOS/RHEL/Fedora/Rocky/Alma/Oracle Linux Prima, abilita il repository EPEL, poi:
sudo dnf install lnav
Arch Linux:
sudo pacman -S lnav
Alpine Linux:
apk add lnav
OpenSUSE / SUSE Linux
sudo zypper install lnav
macOS Prima, abilita e installa Homebrew, poi:
brew install lnav
Oppure usa:
sudo port install lnav
FreeBSD Unix:
pkg install lnav
Utilizzo di lnav
La sintassi per usare lnav è semplice:
# File di log
lnav /percorso/del/file.log
lnav /percorso/del/file1.log /percorso/del/file2.log
# Directory
lnav /percorso/della/app/log/dir1/
lnav /percorso/della/app/log/dir1/ /var/log/
# Wildcard
lnav /var/log/nginx/app_*_error*log
lnav /var/log/nginx/app_*_error*log /var/log/*.err
Utilizzo di SSH per host remoti
lnav utente@nome-server:/var/log/file.log
lnav utente@server1:/var/log/
lnav utente@server1:/var/log/*.err
Uso con systemd-journald su sistemi Linux
journalctl | lnav
journalctl -f | lnav
journalctl -u ssh.service | lnav
Per trovare errori, premi e
per andare al prossimo errore o Shift+E
per tornare al precedente. Usa w
e Shift+W
per passare ai successivi o precedenti avvisi. Premi q
o CTRL+c
per uscire. Per cercare testo nei file, premi /
per aprire il prompt di ricerca e TAB
per completare automaticamente la stringa di ricerca.
Visualizzazione dei log dei container Docker
docker logs container-id | lnav
docker logs -f container-id | lnav
Se l'ID del container è 611ac85cc97d
o si chiama "app":
docker logs 611ac85cc97d | lnav
docker logs -f app | lnav
Puoi anche usare:
lnav docker://{container_id_or_name}/path/to/log/file
lnav docker://{container_id_or_name}/var/dir1
lnav docker://app/var/log/
lnav docker://app/var/log/nginx/nginx.app.log
Monitoraggio dell'output di qualsiasi comando
Molti comandi generano output e log durante l'esecuzione. Ad esempio, per monitorare l'output del comando make
durante la compilazione:
lnav -e 'make -j8'
Interfaccia SQLite
lnav permette di eseguire analisi dei log tramite SQLite, una funzionalità molto potente. Ogni formato di log è accessibile tramite tabelle virtuali, permettendo di eseguire query SQL sui log. Ad esempio:
lnav /var/log/nginx/www.example.com_https_access.log
Puoi attivare il prompt SQL premendo il tasto ;
e scrivere una query semplice come:
SELECT * FROM logline LIMIT 10;
Otterrai i risultati direttamente nel terminale.
Conclusione
lnav è uno strumento avanzato per visualizzare i file di log, con funzionalità che permettono di eseguire query SQL, creare report e molto altro. Offre un'interfaccia utente semplice e intuitiva e supporta numerosi formati di log, container Linux e visualizzazione remota tramite SSH. Questo strumento è altamente raccomandato per sysadmin e sviluppatori Linux/Unix. Puoi iniziare a usare lnav con questi semplici comandi o visitare la pagina del progetto per ulteriori informazioni.