lnav:Linux下一個基于控制臺的高級日志文件查看器
服務器日志是一個由服務器創(chuàng)建并經(jīng)常更新、用于抓取特定服務和應用的所有活動信息的日志文件。當你的應用或者服務出現(xiàn)問題時這個文件就會非常有用。從日志文件中你可以獲取所有關(guān)于該問題的信息,例如基于警告或者錯誤信息它什么時候開始表現(xiàn)不正常。
LNAV(Log file Navigator)是 Linux 下一個基于控制臺的高級日志文件查看器。它和其它文件查看器,例如 cat、more、tail 等,完成相同的任務,但有很多普通文件查看器沒有的增強功能(尤其是它自帶多種顏色和易于閱讀的格式)。
它能在解壓多個壓縮日志文件(zip、gzip、bzip)的同時把它們合并到一起進行導航?;谙⒌臅r間戳,lnav 能把多個日志文件合并到一個視圖(Single Log Review),從而避免打開多個窗口。左邊的顏色欄幫助顯示消息所屬的文件。
警告和錯誤的數(shù)量以(黃色和紅色)高亮顯示,因此我們能夠很輕易地看到問題出現(xiàn)在哪里。它會自動加載新的日志行。
它按照消息時間戳排序顯示所有文件的日志消息。頂部和底部的狀態(tài)欄會告訴你位于哪個日志文件。如果你想按特定的模式查找,只需要在搜索彈窗中輸入就會即時顯示。
內(nèi)建的日志消息解析器會自動從每一行中發(fā)現(xiàn)和提取詳細信息。
當你用一個普通文件查看器打開一個日志文件時,它會用純文本格式顯示所有信息(如果用更直白的話說的話:純白——黑底白字),這樣很難去發(fā)現(xiàn)和理解哪里有警告或錯誤信息。為了克服這種情況,快速找到警告和錯誤信息來解決問題, lnav 是一個入手可用的更好的解決方案。
大部分常見的 Linux 日志文件都放在 /var/log/。
lnav 自動檢測以下日志格式
- Common Web Access Log format(普通 web 訪問日志格式)
- CUPS page_log
- Syslog
- Glog
- VMware ESXi/vCenter 日志
- dpkg.log
- uwsgi
- “Generic” – 以時間戳開始的任何消息
- Strace
- sudo
- gzib & bizp
lnav 高級功能
- 單一日志視圖 - 基于消息時間戳,所有日志文件內(nèi)容都會被合并到一個單一視圖
- 自動日志格式檢測 - lnav 支持大部分日志格式
- 過濾器 - 能進行基于正則表達式的過濾
- 時間線視圖
- 適宜打印視圖(Pretty-Print)
- 使用 SQL 查詢?nèi)罩?/li>
- 自動數(shù)據(jù)抽取
- 實時操作
- 語法高亮
- Tab 補全
- 當你查看相同文件集時可以自動保存和恢復會話信息。
- Headless 模式
如何在 Linux 中安裝 lnav
大部分發(fā)行版(Debian、Ubuntu、Mint、Fedora、suse、openSUSE、Arch Linux、Manjaro、Mageia 等等)默認都有 lnav 軟件包,在軟件包管理器的幫助下,我們可以很輕易地從發(fā)行版官方倉庫中安裝它。對于 CentOS/RHEL 我們需要啟用 EPEL 倉庫。
- [在 Debian/Ubuntu/LinuxMint 上安裝 lnav]
- $ sudo apt-get install lnav
- [在 RHEL/CentOS 上安裝 lnav]
- $ sudo yum install lnav
- [在 Fedora 上安裝 lnav]
- $ sudo dnf install lnav
- [在 openSUSE 上安裝 lnav]
- $ sudo zypper install lnav
- [在 Mageia 上安裝 lnav]
- $ sudo urpmi lnav
- [在基于 Arch Linux 的系統(tǒng)上安裝 lnav]
- $ yaourt -S lnav
如果你的發(fā)行版沒有 lnav 軟件包,別擔心,開發(fā)者提供了 .rpm 和 .deb 安裝包,因此我們可以輕易安裝。確保你從 開發(fā)者 github 頁面 下載最新版本的安裝包。
- [在 Debian/Ubuntu/LinuxMint 上安裝 lnav]
- $ sudo wget https://github.com/tstack/lnav/releases/download/v0.8.1/lnav_0.8.1_amd64.deb
- $ sudo dpkg -i lnav_0.8.1_amd64.deb
- [在 RHEL/CentOS 上安裝 lnav]
- $ sudo yum install https://github.com/tstack/lnav/releases/download/v0.8.1/lnav-0.8.1-1.x86_64.rpm
- [在 Fedora 上安裝 lnav]
- $ sudo dnf install https://github.com/tstack/lnav/releases/download/v0.8.1/lnav-0.8.1-1.x86_64.rpm
- [在 openSUSE 上安裝 lnav]
- $ sudo zypper install https://github.com/tstack/lnav/releases/download/v0.8.1/lnav-0.8.1-1.x86_64.rpm
- [在 Mageia 上安裝 lnav]
- $ sudo rpm -ivh https://github.com/tstack/lnav/releases/download/v0.8.1/lnav-0.8.1-1.x86_64.rpm
不帶參數(shù)運行 lnav
默認情況下你不帶參數(shù)運行 lnav 時它會打開 syslog 文件。
- # lnav
使用 lnav 查看特定日志文件
要用 lnav 查看特定的日志文件,在 lnav 命令后面添加日志文件路徑。例如我們想看 /var/log/dpkg.log 日志文件。
- # lnav /var/log/dpkg.log
用 lnav 查看多個日志文件
要用 lnav 查看多個日志文件,在 lnav 命令后面逐個添加日志文件路徑,用一個空格隔開。例如我們想查看 /var/log/dpkg.log 和 /var/log/kern.log 日志文件。
左邊的顏色欄幫助顯示消息所屬的文件。另外頂部狀態(tài)欄還會顯示當前日志文件的名稱。為了顯示多個日志文件,大部分應用經(jīng)常會打開多個窗口、或者在窗口中水平或豎直切分,但 lnav 使用不同的方式(它基于日期組合在同一個窗口顯示多個日志文件)。
- # lnav /var/log/dpkg.log /var/log/kern.log
使用 lnav 查看壓縮的日志文件
要查看并同時解壓被壓縮的日志文件(zip、gzip、bzip),在 lnav 命令后面添加 -r 選項。
- # lnav -r /var/log/Xorg.0.log.old.gz
直方圖視圖
首先運行 lnav 然后按 i 鍵切換到/出直方圖視圖。
查看日志解析器結(jié)果
首先運行 lnav 然后按 p 鍵打開顯示日志解析器結(jié)果。
語法高亮
你可以搜索任何給定的字符串,它會在屏幕上高亮顯示。首先運行 lnav 然后按 / 鍵并輸入你想查找的字符串。為了測試,我搜索字符串 Default,看下面的截圖。
Tab 補全
命令窗口支持大部分操作的 tab 補全。例如,在進行搜索時,你可以使用 tab 補全屏幕上顯示的單詞,而不需要復制粘貼。為了測試,我搜索字符串 /var/log/Xorg,看下面的截圖。