適用於Linux的開源日誌記錄工具
如果您是Linux系統管理員,那麼您將要使用的第一個工具是日誌檔案。 這些檔案包含重要資訊,可以幫助您解決影響桌面和伺服器的問題。 對於許多系統管理員(特別是那些舊式的系統管理員),沒有什麼比檢查日誌檔案更好的命令列。 但對於那些寧願採用更有效(也可能是現代)方法進行故障排除的人來說,有很多選擇。
在本文中,我將重點介紹Linux平臺可用的一些此類工具。 我不會涉及可能特定於某個服務(例如Kubernetes或Apache)的日誌記錄工具,而是將重點放在可以挖掘寫入/var/log的所有魔法資訊深度的工具上。
說到哪......
什麼是/var/log?
如果您是Linux新手,可能不知道/var/log目錄包含什麼。 但是,這個名字非常有說服力。 在該目錄中包含來自系統的所有日誌檔案以及安裝在作業系統上的任何主要服務(例如Apache,MySQL,MariaDB等)。 開啟終端視窗併發出命令cd /var/log。 按照命令ls進行操作,您將看到所有可以檢視日誌檔案的系統(圖1)。
在/var/log/
圖1:我們的ls命令顯示/var/log/中可用的日誌。
例如,假設您要檢視syslog日誌檔案。 發出命令less syslog,您可以滾動瀏覽該特定日誌的所有血腥細節。 但是如果標準終端不適合你呢? 你有什麼選擇? 我們來看看幾個這樣的選擇。
日誌工具Logs
如果您使用GNOME桌面(或其他,因為Logs可以安裝在不僅僅是GNOME上),您可以輕鬆獲得日誌檢視器,主要只是在日誌檔案上新增一點點GUI優點,建立一些簡單的內容 它很有效。 一旦安裝(從標準儲存庫),從桌面選單開啟日誌,您將被視為一個介面(圖2),允許您從各種型別的日誌(重要,所有,系統,安全和硬體)中進行選擇 ),以及選擇啟動週期(從頂部中心下拉列表),甚至搜尋所有可用的日誌。
記錄工具
圖2:GNOME Logs工具是您可以在Linux中找到的最簡單的GUI日誌檢視器之一。
Logs是一個很好的工具,特別是如果你不是在尋找太多的花裡胡哨,妨礙你檢視關鍵的日誌條目,這樣你就可以排除系統故障。
KSystemLog
KSystemLog是KDE對GNOME的日誌,但還有一些功能可以新增到組合中。雖然兩者都使得檢視系統日誌檔案非常簡單,但只有KSystemLog包括彩色日誌行,選項卡式檢視,將日誌行復制到桌面剪貼簿,內建功能,可以直接向系統傳送日誌訊息,讀取每個日誌的詳細資訊線,等等。 KSystemLog檢視在GNOME日誌中找到的所有相同日誌,只有不同的佈局。
在主視窗(圖3)中,您可以檢視任何不同的日誌(來自系統日誌,身份驗證日誌,X.org日誌,日誌日誌),搜尋日誌,按日期過濾,主機,程序,訊息,然後選擇記錄優先順序。
KSystemLog
圖3:KSystemLog主視窗。
使用KSystemLog建立手動日誌條目。
如果單擊“視窗”選單,則可以開啟一個新選項卡,您可以在其中選擇要檢視的其他日誌/過濾器組合。從同一選單中,您甚至可以複製當前選項卡。如果要手動將日誌新增到檔案,請執行以下操作:
1.開啟KSystemLog。
2.單擊檔案>新增日誌條目。
3.建立日誌條目。
4.單擊“OK”
KSystemLog使在KDE中檢視日誌成為一項非常容易的任務。
Logwatch
Logwatch不是一個奇特的GUI工具。相反,logwatch允許您設定一個日誌系統,通過電子郵件向您傳送重要警報。您可以通過SMTP伺服器通過電子郵件傳送這些警報,也可以在本地計算機上檢視它們。幾乎每個發行版都可以在標準儲存庫中找到Logwatch,因此可以使用單個命令完成安裝,如下所示:
sudo apt-get install logwatch
要麼:
sudo dnf install logwatch
在安裝過程中,您需要選擇警報的交付方式(圖5)。如果您選擇僅使用本地郵件傳遞,則需要安裝mailutils應用程式(這樣您就可以通過mail命令在本地檢視郵件)。
Logwatch
圖5:配置Logwatch警報傳送方法。
配置完成後,您可以使用以下命令傳送第一封郵件:
logwatch --detail Med --mailto ADDRESS --service all --range today
Where ADDRESS is either the local user or an email address.
有關使用Logwatch的更多資訊,請發出命令man logwatch。閱讀手冊頁以檢視可與該工具一起使用的不同選項。
Rsyslog
Rsyslog是將遠端客戶端日誌傳送到集中式伺服器的便捷方式。 假設您有一臺Linux伺服器要用於從資料中心的其他Linux伺服器收集日誌。 使用Rsyslog,這很容易完成。 必須在所有客戶端和集中式伺服器上安裝Rsyslog(通過發出sudo apt-get install rsyslog之類的命令)。
安裝後,在集中式伺服器上建立/etc/rsyslog.d/server.conf檔案,其中包含以下內容:
# Provide UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provide TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
# Use custom filenaming scheme
$template FILENAME,"/var/log/remote/%HOSTNAME%.log"
*.* ?FILENAME
$PreserveFQDN on
儲存並關閉該檔案。 現在,在每臺客戶機上,使用以下內容建立檔案/etc/rsyslog.d/client.conf:
$PreserveFQDN on
$ActionQueueType LinkedList
$ActionQueueFileName srvrfwd
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on
*.* @@SERVER_IP:514
SERVER_IP是中央伺服器的IP地址。 儲存並關閉該檔案。 使用以下命令在所有計算機上重新啟動rsyslog:
sudo systemctl restart rsyslog
您現在可以使用命令檢視集中式日誌檔案(在集中式伺服器上執行):
tail -f /var/log/remote/*.log
tail命令允許您實時檢視這些檔案。 您應該看到包含客戶端主機名的日誌條目(圖6)。
Rsyslog
圖6:顯示已連線客戶端條目的Rsyslog。
Rsyslog是一個很棒的工具,用於建立單個入口點以檢視所有Linux伺服器的日誌。
總結
本文僅涉及在Linux平臺上找到的日誌工具的表面。 並且上述每個工具都能夠勝過此處概述的內容。 但是,此概述應該為您提供一個開始漫長一天的Linux日誌檔案之旅的地方。