LNAV noto anche come Navigazione laterale è un visualizzatore di file di registro avanzato gratuito e open source che può essere utilizzato per trovare informazioni sui file visualizzati insieme ai timestamp e ai livelli di registro. LNAV è un visualizzatore di file di registro della riga di comando creato per soluzioni su piccola scala. È semplice, facile da usare e personalizzabile. LNAV è un'applicazione totalmente freeware che gira su sistemi operativi Linux e Mac. Consente all'utente di visualizzare i registri di più file in un'unica finestra e puoi anche vedere un aggiornamento in tempo reale di questi registri.
LNAV è dotato di molte funzionalità, alcune sono elencate di seguito:
- Consente di eseguire il log delle query tramite SQL.
- Capacità di rilevare e leggere i registri da più formati di registro.
- Ha funzioni di schiaritura della colorazione che aiutano gli utenti a identificare facilmente le differenze tra informazioni, avvisi ed errori.
- Estrarre automaticamente i dati da file compressi come, gzip e bzip2.
- Possibilità di cercare nei log durante la digitazione. Le nuove righe di registro vengono caricate automaticamente e cercate man mano che vengono aggiunte.
In questo tutorial spiegheremo come installare e utilizzare lnav sul server Ubuntu 16.04.
Requisiti
- Un server che esegue Ubuntu 16.04.
- Un utente non root con privilegi sudo.
Installa Lnav
Per impostazione predefinita, lnav è disponibile nel repository predefinito di Ubuntu 16.04. Quindi puoi installarlo semplicemente eseguendo il seguente comando:
sudo apt-get install lnav -y
Dopo aver installato lnav, puoi visualizzare la versione di lnav eseguendo il comando seguente:
lnav -V
Dovresti vedere il seguente output:
lnav 0.6.2
Lavorare con Lnav
Puoi visualizzare tutte le opzioni di lnav usando il seguente comando:
lnav -h
Dovresti vedere il seguente output:
usage: lnav [-hVsar] [logfile1 logfile2 ...] A curses-based log file viewer that indexes log messages by type and time to make it easier to navigate through files quickly. Key bindings: ? View/leave the online help text. q Quit the program. Options: -h Print this message, then exit. -C Check configuration and then exit. -d file Write debug messages to the given file. -V Print version information. -s Load the most recent syslog messages file. -a Load all of the most recent log file types. -r Load older rotated log files as well. -t Prepend timestamps to the lines of data being read in on the standard input. -w file Write the contents of the standard input to this file. Optional arguments: logfile1 The log files or directories to view. If a directory is given, all of the files in the directory will be loaded. Examples: To load and follow the syslog file: $ lnav -s To load all of the files in /var/log: $ lnav /var/log To watch the output of make with timestamps prepended: $ make 2>&1 | lnav -t Version: lnav 0.6.2
Ora, iniziamo a eseguire il comando lnav per vedere le informazioni in tempo reale sulla base dei timestamp più recenti da tutti i file di registro. Questo comando raccoglierà il registro da tutti i file all'interno della directory /var/log.
sudo lnav
Dovresti vedere il seguente output:
Jan 28 16:56:01 icingaclient wpa_supplicant[926]: wlan0: CTRL-EVENT-SCAN-STARTED Jan 28 16:59:46 icingaclient dhclient: DHCPREQUEST of 192.168.137.101 on wlan0 to 192.168.137.1 port 67 (xid=0xcd468e) Jan 28 16:59:46 icingaclient dhclient: DHCPACK of 192.168.137.101 from 192.168.137.1 Jan 28 16:59:46 icingaclient dhclient: bound to 192.168.137.101 -- renewal in 273 seconds. Jan 28 16:59:46 icingaclient NetworkManager[865]:(wlan0): DHCPv4 state changed reboot -> renew Jan 28 16:59:46 icingaclient NetworkManager[865]: address 192.168.137.101 Jan 28 16:59:46 icingaclient NetworkManager[865]: prefix 24 (255.255.255.0) Jan 28 16:59:46 icingaclient NetworkManager[865]: gateway 192.168.137.1 Jan 28 16:59:46 icingaclient NetworkManager[865]: nameserver '192.168.137.1' Jan 28 16:59:46 icingaclient NetworkManager[865]: domain name 'mshome.net' Jan 28 16:59:46 icingaclient dbus[779]: [system] Activating service name='org.freedesktop.nm_dispatcher' (using servicehelper) Jan 28 16:59:46 icingaclient dbus[779]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher' Jan 28 17:04:19 icingaclient dhclient: DHCPREQUEST of 192.168.137.101 on wlan0 to 192.168.137.1 port 67 (xid=0xcd468e) Jan 28 17:04:19 icingaclient dhclient: DHCPACK of 192.168.137.101 from 192.168.137.1 Jan 28 17:04:20 icingaclient dhclient: bound to 192.168.137.101 -- renewal in 226 seconds. Jan 28 17:04:20 icingaclient NetworkManager[865]: (wlan0): DHCPv4 state changed renew -> renew Jan 28 17:04:20 icingaclient NetworkManager[865]: address 192.168.137.101 Jan 28 17:04:20 icingaclient NetworkManager[865]: prefix 24 (255.255.255.0) Jan 28 17:04:20 icingaclient NetworkManager[865]: gateway 192.168.137.1 Jan 28 17:04:20 icingaclient NetworkManager[865]: nameserver '192.168.137.1' Jan 28 17:04:20 icingaclient NetworkManager[865]: domain name 'mshome.net' Jan 28 17:04:20 icingaclient dbus[779]: [system] Activating service name='org.freedesktop.nm_dispatcher' (using servicehelper) Jan 28 17:04:20 icingaclient dbus[779]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher' Jan 28 17:05:01 icingaclient CRON[3964]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1) Jan 28 17:08:06 icingaclient dhclient: DHCPREQUEST of 192.168.137.101 on wlan0 to 192.168.137.1 port 67 (xid=0xcd468e) Jan 28 17:08:06 icingaclient dhclient: DHCPACK of 192.168.137.101 from 192.168.137.1 Jan 28 17:08:06 icingaclient dhclient: bound to 192.168.137.101 -- renewal in 297 seconds. Jan 28 17:08:06 icingaclient NetworkManager[865]: (wlan0): DHCPv4 state changed renew -> renew Jan 28 17:08:06 icingaclient NetworkManager[865]: address 192.168.137.101 Jan 28 17:08:06 icingaclient NetworkManager[865]: prefix 24 (255.255.255.0) Jan 28 17:08:06 icingaclient NetworkManager[865]: gateway 192.168.137.1 Jan 28 17:08:06 icingaclient NetworkManager[865]: nameserver '192.168.137.1' Jan 28 17:08:06 icingaclient NetworkManager[865]: domain name 'mshome.net' Jan 28 17:08:06 icingaclient dbus[779]: [system] Activating service name='org.freedesktop.nm_dispatcher' (using servicehelper) Jan 28 17:08:06 icingaclient dbus[779]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
Se vuoi vedere il registro dalla directory /var/log/apache2, esegui il seguente comando:
sudo lnav /var/log/apache2
A volte, le informazioni più recenti non sono disponibili nei file più recenti. Quindi puoi visualizzare le informazioni dai vecchi file di registro utilizzando -r opzione:
sudo lnav -r
Dovresti vedere il seguente output:
Jan 28 17:04:20 icingaclient dhclient: bound to 192.168.137.101 -- renewal in 226 seconds. Jan 28 17:04:20 icingaclient NetworkManager[865]:(wlan0): DHCPv4 state changed renew -> renew Jan 28 17:04:20 icingaclient NetworkManager[865]: address 192.168.137.101 Jan 28 17:04:20 icingaclient NetworkManager[865]: prefix 24 (255.255.255.0) Jan 28 17:04:20 icingaclient NetworkManager[865]: gateway 192.168.137.1 Jan 28 17:04:20 icingaclient NetworkManager[865]: nameserver '192.168.137.1' Jan 28 17:04:20 icingaclient NetworkManager[865]: domain name 'mshome.net' Jan 28 17:04:20 icingaclient dbus[779]: [system] Activating service name='org.freedesktop.nm_dispatcher' (using servicehelper) Jan 28 17:04:20 icingaclient dbus[779]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher' Jan 28 17:05:01 icingaclient CRON[3964]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1) Jan 28 17:08:06 icingaclient dhclient: DHCPREQUEST of 192.168.137.101 on wlan0 to 192.168.137.1 port 67 (xid=0xcd468e) Jan 28 17:08:06 icingaclient dhclient: DHCPACK of 192.168.137.101 from 192.168.137.1 Jan 28 17:08:06 icingaclient dhclient: bound to 192.168.137.101 -- renewal in 297 seconds. Jan 28 17:08:06 icingaclient NetworkManager[865]: (wlan0): DHCPv4 state changed renew -> renew Jan 28 17:08:06 icingaclient NetworkManager[865]: address 192.168.137.101 Jan 28 17:08:06 icingaclient NetworkManager[865]: prefix 24 (255.255.255.0) Jan 28 17:08:06 icingaclient NetworkManager[865]: gateway 192.168.137.1 Jan 28 17:08:06 icingaclient NetworkManager[865]: nameserver '192.168.137.1' Jan 28 17:08:06 icingaclient NetworkManager[865]: domain name 'mshome.net' Jan 28 17:08:06 icingaclient dbus[779]: [system] Activating service name='org.freedesktop.nm_dispatcher' (using servicehelper) Jan 28 17:08:06 icingaclient dbus[779]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher' Jan 28 17:12:47 icingaclient dnsmasq[1174]: nameserver 192.168.137.1 refused to do a recursive query Jan 28 17:13:03 icingaclient dhclient: DHCPREQUEST of 192.168.137.101 on wlan0 to 192.168.137.1 port 67 (xid=0xcd468e) Jan 28 17:13:03 icingaclient dhclient: DHCPACK of 192.168.137.101 from 192.168.137.1 Jan 28 17:13:03 icingaclient dhclient: bound to 192.168.137.101 -- renewal in 291 seconds.
Puoi anche visualizzare il file di registro con le opzioni di timestamp usando il -t
opzione:
sudo lnav -t
Dovresti vedere il seguente output:
Jan 28 17:08:06 icingaclient dhclient: DHCPACK of 192.168.137.101 from 192.168.137.1 Jan 28 17:08:06 icingaclient dhclient: bound to 192.168.137.101 -- renewal in 297 seconds. Jan 28 17:08:06 icingaclient NetworkManager[865]:(wlan0): DHCPv4 state changed renew -> renew Jan 28 17:08:06 icingaclient NetworkManager[865]: address 192.168.137.101 Jan 28 17:08:06 icingaclient NetworkManager[865]: prefix 24 (255.255.255.0) Jan 28 17:08:06 icingaclient NetworkManager[865]: gateway 192.168.137.1 Jan 28 17:08:06 icingaclient NetworkManager[865]: nameserver '192.168.137.1' Jan 28 17:08:06 icingaclient NetworkManager[865]: domain name 'mshome.net' Jan 28 17:08:06 icingaclient dbus[779]: [system] Activating service name='org.freedesktop.nm_dispatcher' (using servicehelper) Jan 28 17:08:06 icingaclient dbus[779]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher' Jan 28 17:12:47 icingaclient dnsmasq[1174]: nameserver 192.168.137.1 refused to do a recursive query Jan 28 17:13:03 icingaclient dhclient: DHCPREQUEST of 192.168.137.101 on wlan0 to 192.168.137.1 port 67 (xid=0xcd468e) Jan 28 17:13:03 icingaclient dhclient: DHCPACK of 192.168.137.101 from 192.168.137.1 Jan 28 17:13:03 icingaclient dhclient: bound to 192.168.137.101 -- renewal in 291 seconds. Jan 28 17:13:03 icingaclient NetworkManager[865]: (wlan0): DHCPv4 state changed renew -> renew Jan 28 17:13:03 icingaclient NetworkManager[865]: address 192.168.137.101 Jan 28 17:13:03 icingaclient NetworkManager[865]: prefix 24 (255.255.255.0) Jan 28 17:13:03 icingaclient NetworkManager[865]: gateway 192.168.137.1 Jan 28 17:13:03 icingaclient NetworkManager[865]: nameserver '192.168.137.1' Jan 28 17:13:03 icingaclient NetworkManager[865]: domain name 'mshome.net' Jan 28 17:13:03 icingaclient dbus[779]: [system] Activating service name='org.freedesktop.nm_dispatcher' (using servicehelper) Jan 28 17:13:03 icingaclient dbus[779]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
Per caricare tutti i tipi di file di registro più recenti, eseguire il comando seguente:
sudo lnav -a
Usa Hotkey con Lnav
Puoi anche navigare nell'output del comando lnav usando varie opzioni di tasti di scelta rapida.
Innanzitutto, esegui il comando lnav:
sudo lnav
Dovresti vedere il seguente output:
Ora usa i
tasto dalla tastiera per passare l'output lnav alla visualizzazione dell'istogramma come mostrato di seguito:
Quindi, usa p
chiave per visualizzare il risultato del parser di log come mostrato di seguito:
Quindi, usa m
per contrassegnare i file di registro in alto come mostrato di seguito:
Conclusione
Spero che ora tu possa identificare facilmente i problemi usando lnav. Puoi anche fare riferimento al suo sito ufficiale per maggiori dettagli. Sentiti libero di commentare se hai domande.