如何在 Linux 中管理紀錄檔

2019-09-13 16:17:00

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

在 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.gzdpkg.log.1     dpkg.log.4.gz  dpkg.log.7.gz  dpkg.log.10.gzdpkg.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 rebootreboot   system boot  5.0.0-20-generic Tue Jul 16 13:19   still runningreboot   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 — 系統紀錄檔分析器和報告器

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