知識庫 使用 Profitserver 服務的簡單說明
主要 知識庫 如何閱讀 Linux 日誌以及在哪裡找到它

如何閱讀 Linux 日誌以及在哪裡找到它


當您的伺服器效能出現任何問題時,首先應該檢查 Linux 日誌。在系統日誌中,您可以找到來自作業系統不同元件(例如核心或各種服務)的一些有用的診斷訊息,因此您很可能在那裡找到故障原因。

日誌中的每個訊息都是作業系統中某些事件的結果:來自使用者、授權、服務關閉或應用程式故障。這些事件根據其重要程度有不同的優先順序。 Linux中有以下類型的事件:

  1. emerg - 失敗,最高優先權;
  2. alert - 緊急警告;
  3. crit - 關鍵事件;
  4. err - 一般錯誤;
  5. warn - 普通警告;
  6. notice - 通知;
  7. info - 訊息訊息;
  8. debug - 調試資訊;

目前,Linux 系統中主要的日誌擷取服務是rsyslog和systemd-journald。它們與大多數現代發行版軟體包集成,並且可以獨立運行。

系統日誌

此服務的日誌以普通文字檔案的形式儲存在「/var/log/ 」資料夾中。日誌訊息會根據事件類型被放入不同的檔案中。例如,「 /var/log/ auth.log 」包含有關使用者在系統中的授權訊息,「/var/log/kern.log」包含核心訊息。由於不同發行版軟體包的檔案名稱可能有所不同,因此讓我們查看一下設定檔「/etc/rsyslog.d/50-default.conf」來了解各個檔案的位置。

Linux 上的 rsyslog

這些規則顯示了每種類型的日誌訊息對應的檔案。左側以「[來源].[優先權]」的格式顯示訊息類型,右側顯示日誌檔案名稱。在填寫訊息類型時,可以新增「*」字元。它表示空值或“無”,會將其從清單中刪除。讓我們仔細看看前兩條規則。

“auth,authpriv.* /var/log/auth.log”
“*.*;auth,authpriv.none -/var/log/syslog”

第一條規則表示,所有從授權機制收到的訊息都將被記錄到「/var/log/auth.log」檔案中。所有授權嘗試(無論成功與否)都會被記錄到此文件中。第二條規則表示,除與授權相關的訊息外,所有訊息都會被記錄到「/var/log/syslog 」檔案中。這兩個文件通常是最常用的。以下規則定義了核心日誌「 kern.*」和郵件服務日誌「mail.*」的儲存路徑。

可以使用任何文字編輯器開啟日誌文件,例如less、cat或tail。我們來開啟「/var/log/auth.log」檔案。

less /var/log/auth.log
Запись в лог-файле Линукс о неудачной попытке авторизации SSHSH

文件的每一行都是從應用程式或服務接收的單獨的訊息。所有訊息無論其來源為何都具有一種格式並由 5 個部分組成。讓我們以螢幕截圖中突出顯示的訊息為例。

  1. 訊息時間戳記 - “12 月 06 日 18:33:XNUMX”
  2. 發送訊息的電腦的名稱 - “vds”
  3. 發送訊息的應用程式或服務的名稱 - “sshd”
  4. 進程 ID — [653]
  5. 訊息文字 - “已接受來自 188.19.42.165 埠 2849 ssh2 的 mihail 密碼”

這是成功連接 SSH 的範例。

失敗的登入嘗試如下所示:

Linux 邏輯

此文件還記錄具有高級權限的命令

Linux 上的應用程式

讓我們打開/var/log/syslog文件

螢幕截圖上突出顯示的消息是關於網路介面關閉的消息。

Утилита logorotate

要從長文本文件中查找信息,請使用grep工具。您可以在「 /var/log/syslog 」檔案中找到從pptpd服務接收的所有訊息。

grep 'pptpd' /var/log/syslog
файл “/etc/logrotate.d/rsyslog”

在診斷過程中,您可以使用tail工具來顯示文件的最後幾行。命令「tail -f /var/log/syslog」可讓您即時查看日誌記錄。

rsyslog服務非常靈活且功能強大。它既可用於本機系統日誌採集,也可用於企業級日誌採集。您可以在官方網站https://www.rsyslog.com/上找到完整的文件。

Linux 中的日誌輪換

日誌記錄持續進行,因此檔案大小不斷增長。輪換機制確保舊日誌自動歸檔,並建立新檔案。根據設定的規則,輪換可以按日、週、月或大小限制進行。建立新日誌後,舊日誌可以直接刪除或透過電子郵件發送。日誌輪替由logrotate工具執行。您可以在「 /etc/logrotate.conf 」檔案中找到主要設定。文件內容也會在「/etc/logrotate.d/」資料夾中處理。

新規則可以記錄到主設定檔。不過,最好在「/etc/logrotate.d/」目錄下建立一個單獨的檔案。預設情況下,該目錄下有一些檔案。

Настраиваем ротацию логов в Линукс

讓我們來看一下「/etc/logrotate.d/rsyslog 」文件,其中包含rsyslog服務日誌的輪替規則。

Пример вывода всех ошибок pptpd в лог-файлах

首先,規則應該包含日誌檔案的路徑,然後包含所有在括號中的指導方針。

  • 旋轉7 - 要保留的文件數量 - 7
  • 每天 - 每天建立一個新文件
  • 壓縮 - 壓縮並存檔舊文件
Учимся читать логи Линукс

從截圖中可以看到,「/var/log/」資料夾中有主日誌「syslog」和7個歸​​檔文件,這與設定檔中的規則相符。

您可以透過執行「 man logrotate」指令,在手冊中找到關於 logrotate 的更詳細描述。

收集 Linux 日誌 - journald

日誌採集服務systemd-journald是初始化系統systemd的一部份。 Linux 日誌檔案以特殊格式儲存在「/var/log/journal/」目錄下,可以使用journalctl工具開啟。記錄格式與rsyslog完全相同。

不帶任何參數的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 - 即時顯示訊息

為了獲得更大的靈活性,您可以組合使用這些選項。讓我們顯示pptpd服務的所有錯誤。

journalctl -u pptpd -p err
上次

如果將可執行檔的路徑指定為屬性,則該公用程式將顯示該檔案所傳送的所有訊息。例如,讓我們顯示自 2020 年 2 月 18 日 04:15 以來文件「/usr/bin/sudo」發送的所有訊息。實際上,它將顯示所有以更高權限執行的命令。

journalctl -S "2020-02-18 04:15" /usr/bin/sudo
柯曼多伊 lastb

若要了解日誌檔案佔用了多少磁碟空間,請執行下列命令

journalctl --disk-usage

為了將日誌檔案限制為 1Gb,請執行下列命令

journalctl --vacuum-size=1G

開啟二進位文件

現在我們來看看「/var/log/」資料夾中的一些特殊文件,所有登入嘗試都儲存在這些文件中。這些文件是二進位文件,只能用特定的程式開啟。

/var/log/wtmp檔案包含成功登入嘗試的資訊。請使用 last 工具打開它。

使用 lastlog

/var/log/btmp檔案包含所有登入失敗的嘗試。可以使用 lastb 命令以高級權限開啟它。參數-n定義了從文件末尾開始顯示的行數。

/var/log/lastlog檔案包含每個帳戶記錄的最後登入操作時間。可以使用lastlog 命令打開它。

❮ 上一篇文章 Linux 文本編輯器
下一篇文章❯ 如何在 CentOS 中設定網路介面

向我們諮詢有關 VPS 的問題

無論白天或黑夜,我們隨時準備好解答您的問題。