如何在 Linux 中管理日誌

Sandra Henry-stocker發表於2019-09-13

Linux 系統上的日誌檔案包含了很多資訊——比你有時間檢視的還要多。以下是一些建議,告訴你如何正確的使用它們……而不是淹沒在其中。

Greg Lobinski \(CC BY 2.0\)

在 Linux 系統上管理日誌檔案可能非常容易,也可能非常痛苦。這完全取決於你所認為的日誌管理是什麼。

如果你認為是如何確保日誌檔案不會耗盡你的 Linux 伺服器上的所有磁碟空間,那麼這個問題通常很簡單。Linux 系統上的日誌檔案會自動翻轉,系統將只維護固定數量的翻轉日誌。即便如此,一眼看去一組上百個檔案可能會讓人不知所措。在這篇文章中,我們將看看日誌輪換是如何工作的,以及一些最相關的日誌檔案。

自動日誌輪換

日誌檔案是經常輪轉的。當前的日誌會獲得稍微不同的檔名,並建立一個新的日誌檔案。以系統日誌檔案為例。對於許多正常的系統 messages 檔案來說,這個檔案是一個包羅永珍的東西。如果你 cd 轉到 /var/log 並檢視一下,你可能會看到一系列系統日誌檔案,如下所示:

$ ls -l syslog*
-rw-r----- 1 syslog adm 28996 Jul 30 07:40 syslog
-rw-r----- 1 syslog adm 71212 Jul 30 00:00 syslog.1
-rw-r----- 1 syslog adm  5449 Jul 29 00:00 syslog.2.gz
-rw-r----- 1 syslog adm  6152 Jul 28 00:00 syslog.3.gz
-rw-r----- 1 syslog adm  7031 Jul 27 00:00 syslog.4.gz
-rw-r----- 1 syslog adm  5602 Jul 26 00:00 syslog.5.gz
-rw-r----- 1 syslog adm  5995 Jul 25 00:00 syslog.6.gz
-rw-r----- 1 syslog adm 32924 Jul 24 00:00 syslog.7.gz

輪換髮生在每天午夜,舊的日誌檔案會保留一週,然後刪除最早的系統日誌檔案。syslog.7.gz 檔案將被從系統中刪除,syslog.6.gz 將被重新命名為 syslog.7.gz。日誌檔案的其餘部分將依次改名,直到 syslog 變成 syslog.1 並建立一個新的 syslog 檔案。有些系統日誌檔案會比其他檔案大,但是一般來說,沒有一個檔案可能會變得非常大,並且你永遠不會看到超過八個的檔案。這給了你一個多星期的時間來回顧它們收集的任何資料。

某種特定日誌檔案維護的檔案數量取決於日誌檔案本身。有些檔案可能有 13 個。請注意 syslogdpkg 的舊檔案是如何壓縮以節省空間的。這裡的考慮是你對最近的日誌最感興趣,而更舊的日誌可以根據需要用 gunzip 解壓。

# ls -t dpkg*
dpkg.log       dpkg.log.3.gz  dpkg.log.6.gz  dpkg.log.9.gz   dpkg.log.12.gz
dpkg.log.1     dpkg.log.4.gz  dpkg.log.7.gz  dpkg.log.10.gz
dpkg.log.2.gz  dpkg.log.5.gz  dpkg.log.8.gz  dpkg.log.11.gz

日誌檔案可以根據時間和大小進行輪換。檢查日誌檔案時請記住這一點。

儘管預設值適用於大多數 Linux 系統管理員,但如果你願意,可以對日誌檔案輪換進行不同的配置。檢視這些檔案,如 /etc/rsyslog.conf/etc/logrotate.conf

使用日誌檔案

對日誌檔案的管理也包括時不時的使用它們。使用日誌檔案的第一步可能包括:習慣每個日誌檔案可以告訴你有關係統如何工作以及系統可能會遇到哪些問題。從頭到尾讀取日誌檔案幾乎不是一個好的選擇,但是當你想了解你的系統執行的情況或者需要跟蹤一個問題時,知道如何從日誌檔案中獲取資訊會是有很大的好處。這也表明你對每個檔案中儲存的資訊有一個大致的瞭解了。例如:

$ who wtmp | tail -10           顯示最近的登入資訊
$ who wtmp | grep shark         顯示特定使用者的最近登入資訊
$ grep "sudo:" auth.log         檢視誰在使用 sudo
$ tail dmesg                    檢視(最近的)核心日誌
$ tail dpkg.log                 檢視最近安裝和更新的軟體包
$ more ufw.log                  檢視防火牆活動(假如你使用 ufw)

你執行的一些命令也會從日誌檔案中提取資訊。例如,如果你想檢視系統重新啟動的列表,可以使用如下命令:

$ last reboot
reboot   system boot  5.0.0-20-generic Tue Jul 16 13:19   still running
reboot   system boot  5.0.0-15-generic Sat May 18 17:26 - 15:19 (21+21:52)
reboot   system boot  5.0.0-13-generic Mon Apr 29 10:55 - 15:34 (18+04:39)

使用更高階的日誌管理器

雖然你可以編寫指令碼來更容易地在日誌檔案中找到感興趣的資訊,但是你也應該知道有一些非常複雜的工具可用於日誌檔案分析。一些可以把來自多個來源的資訊聯絡起來,以便更全面地瞭解你的網路上發生了什麼。它們也可以提供實時監控。這些工具,如 Solarwinds Log & Event ManagerPRTG 網路監視器(包括日誌監視)浮現在腦海中。

還有一些免費工具可以幫助分析日誌檔案。其中包括:

  • Logwatch — 用於掃描系統日誌中感興趣的日誌行的程式
  • Logcheck — 系統日誌分析器和報告器

在接下來的文章中,我將提供一些關於這些工具的見解和幫助。


via: https://www.networkworld.com/article/3428361/how-to-manage-logs-in-linux.html

作者:Sandra Henry-Stocker 選題:lujun9972 譯者:heguangzhi 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

相關文章