當你遇到伺服器效能問題時,你要做的第一件事就是 檢查你的 Linux 日誌。在系統日誌中,您可以找到來自作業系統不同元件(如核心或各種服務)的一些有用的診斷訊息,因此您很可能會在那裡找到故障原因。
日誌中的每個訊息都是作業系統中某些事件的結果:來自使用者、授權、服務關閉或應用程式故障。這些事件根據其重要程度有不同的優先順序。 Linux中有以下類型的事件:
emerg- 失敗,最高優先權;alert- 緊急警告;crit- 關鍵事件;err- 一般錯誤;warn- 普通警告;notice- 通知;info- 訊息訊息;debug- 調試資訊;
目前,Linux 中主要的日誌收集服務有 系統日誌 以及 系統日誌。它們與大多數現代發行版軟體包相容並且獨立運作。
系統日誌
該服務的日誌位於“/ var / log /”資料夾中以普通文字檔案的形式保存日誌資訊。日誌資訊根據事件類型保存在不同文件中。例如,“/var/log/auth.log”包含用戶在系統中的授權信息,“/var/log/kern.log” 包含內核訊息。文件名在不同的發行包中可能有所不同,因此我們來看一下配置文件,了解其中的內容。/etc/rsyslog.d/50-default.conf“。
這些規則顯示哪個檔案包含每種類型的日誌訊息。左側部分以以下形式顯示訊息類型“[來源].[優先]”右側顯示日誌檔案的名稱。在寫入訊息類型時“*”字元可以添加。它表示空值或“沒有” 將其從清單中刪除。讓我們仔細看看前兩個規則。
“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”
第一條規則意味著從授權機制收到的所有訊息都將被記錄到“/var/log/auth.log」文件。所有授權嘗試(無論成功與否)都將記錄在此文件中。第二條規則表示,除與授權相關的訊息外,所有訊息都將記錄到「在/ var / log / syslog的」檔案。這兩個檔案通常是最受歡迎的。以下規則定義了儲存核心日誌的路徑“字距。 *”和郵件服務日誌“郵件。 *“
日誌檔案可以藉助任何文字編輯器打開,例如 少, 貓, 尾巴。讓我們打開“/var/log/auth.log“ 文件
less /var/log/auth.log
文件的每一行都是從應用程式或服務接收的單獨的訊息。所有訊息無論其來源為何都具有一種格式並由 5 個部分組成。讓我們以螢幕截圖中突出顯示的訊息為例。
- 訊息時間戳記 - “12 月 06 日 18:33:XNUMX”
- 發送訊息的電腦的名稱 - “vds”
- 發送訊息的應用程式或服務的名稱 - “sshd”
- 進程 ID — [653]
- 訊息文字 - “已接受來自 188.19.42.165 埠 2849 ssh2 的 mihail 密碼”
這是成功連接 SSH 的範例。
失敗的登入嘗試如下所示:
此文件還記錄具有高級權限的命令
讓我們打開 在/ var / log / syslog的 文件
螢幕截圖上突出顯示的消息是關於網路介面關閉的消息。
要透過長文本文件搜尋訊息,請使用 grep的 公用事業。您可以查找來自以下地址的所有訊息 PPTP 服務於“在/ var / log / syslog的“檔案。
grep 'pptpd' /var/log/syslog
在診斷過程中,您可以使用 尾巴 可以顯示文件最後幾行的實用程式。命令 ”tail -f / var / log / syslog”將讓您即時觀看日誌記錄。
該服務 系統日誌 非常靈活和強大。它可用於收集本機系統以及企業級的日誌。您可以在官方網站上找到完整文檔 https://www.rsyslog.com/
Linux 中的日誌輪換
日誌記錄會不斷進行,因此檔案的大小不斷增加。輪換機制確保自動歸檔舊日誌並建立新檔案。根據規則,它可以每天、每週、每月發生或按大小限制發生。當建立新日誌時,舊日誌可以被刪除或透過電子郵件發送。日誌輪換由 日誌輪播 公用事業。您可以在「/etc/logrotate.conf”文件中。文件內容也在“/etc/logrotate.d/“ 文件夾
新規則可以登入主設定檔。不過,最好在「/etc/logrotate.d/”預設情況下,此目錄中有幾個文件
讓我們看一下文件“/etc/logrotate.d/rsyslog「包含日誌輪替規則 系統日誌 服務。
首先,規則應該包含日誌檔案的路徑,然後包含所有在括號中的指導方針。
- 旋轉7 - 要保留的文件數量 - 7
- 每天 - 每天建立一個新文件
- 壓縮 - 壓縮並存檔舊文件
您可以在螢幕截圖中看到“/ var / log /”資料夾中有主日誌“系統日誌」等7個檔案,與設定檔中的規則相對應。
您可以在手冊中找到有關 logrotate 的更詳細描述,執行“手動旋轉”命令
收集 Linux 日誌 - journald
原木採伐服務 系統日誌 是初始化系統的一部分 systemd。 Linux 日誌檔案儲存在“/var/log/日誌/” 以特殊格式儲存,可使用 journalctl 公用事業。記錄格式與 系統日誌.
命令 journalctl 沒有屬性顯示所有記錄但它不適合較大的日誌。讓我們來看看這個實用程式的一些選項。
journalctl -b- 顯示自上次啟動以來的所有記錄journalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10"- 顯示特定時間內的記錄journalctl -u pptpd- 顯示特定服務的記錄journalctl -k- 顯示內核訊息journalctl -p err- 顯示特定優先順序的訊息,在這種情況下顯示更高優先順序的訊息(crit、alert、emerg)journalctl -f- 即時顯示訊息
為了獲得更好的靈活性,您可以組合這些選項。讓我們顯示所有錯誤 PPTP 服務
journalctl -u pptpd -p err
如果將可執行檔的路徑指定為屬性,則該公用程式將顯示此檔案傳送的所有訊息。讓我們顯示文件“/usr/bin/sudo” 自04年15月18日2020:XNUMX起。實際上,它會顯示所有以更高權限執行的命令。
journalctl -S "2020-02-18 04:15" /usr/bin/sudo
若要了解日誌檔案佔用了多少磁碟空間,請執行下列命令
journalctl --disk-usage
為了將日誌檔案限制為 1Gb,請執行下列命令
journalctl --vacuum-size=1G
開啟二進位文件
現在讓我們看看“/ var / log /」資料夾,其中儲存了所有登入嘗試。這些文件是二進位文件,只能使用特殊程式開啟。
/var/log/wtmp 包含有關成功登入嘗試的資訊。使用最後一個實用程式來打開它。
/var/日誌/btmp - 包含所有失敗的登入嘗試。可以使用具有高級權限的 lastb 開啟。屬性 -n 定義從文件末尾顯示的行數。
/var/log/上次日誌 - 包含每個帳戶記錄的最後一次登入操作的時間。可以使用 最新日誌