在 Ubuntu 上使用 Logrotate 管理日誌

計算機或服務器環境的性能很大程度上取決於系統內存和磁盤使用情況。 如果某些東西正在消耗更多的磁盤空間,那麼它將導致系統錯誤。 同樣,必須控制增加日誌文件大小以降低此類風險。

Logrotate 是作為一個系統實用程序引入的,它可以旋轉、壓縮日誌文件並通過郵件發送系統日誌。 這種對日誌文件的管理減少了磁盤空間的使用並防止了系統錯誤。

在本文中,我們將討論在 Ubuntu 20.04 LTS 服務器上安裝 logrotate 的過程和配置。

在 Ubuntu 20.04 服務器上安裝 Logrotate

在 Ubuntu 上,logrotate 是默認安裝的,但如果沒有安裝,您可以使用如下所示的命令安裝它。

$ sudo apt update 
$ sudo apt install logrotate

您可以使用如下所示的命令確認安裝。

$ logrotate --version

Logrotate 配置文件

logrotate 的配置文件由 logrotate 守護進程創建。 這種配置有兩條路徑,如下所示。

/etc/logrotate.conf

它是通常為 logrotate 實用程序創建的配置文件

/etc/logrotate.d/

它是由應用程序的特定輪換組成的目錄。 默認情況下,使用 /etc/logrotate.conf,但對於每個應用程序有不同的配置,可以在 /etc/logrotate.d/ 上進行設置。

默認 Logrotate 配置文件

如您所知 /etc/logrotate.conf 是默認配置文件。 讓我們檢查配置文件,如下面的屏幕截圖所示。

使用如下所示的命令檢查配置文件。

$ cat /etc/logrotate.conf

輸出:

特定應用程序的配置

在上面的屏幕截圖中,有一個配置包括 /etc/logrotate.d 這意味著可以在此目錄上設置特定應用程序的配置。 在這裡,我們將顯示 dpkg 的配置,如下所示。

$ cd /etc/logrotate.d/
$ cat dpkg

要獲取每行配置的詳細信息,請檢查下面討論的要點。 這些配置將替換 /etc/logrotate.conf 的默認配置,用於特定應用程序(如 dpkg)。

  • 每月:每月輪換一次。 您可以根據您的要求將其替換為每天、每週。
  • rotate 12:將保留 12 個舊日誌文件。 它替換了 /etc/logrotate.conf 中的默認值 4
  • compress:此應用程序的日誌文件將使用 gzip 壓縮
  • delaycompress:將前一個日誌文件壓縮到下一個循環週期被推遲,因為它仍然被某些程序使用。
  • missingok:如果日誌文件丟失,不要寫任何錯誤信息
  • notifempty:如果日誌文件為空,則不要輪換日誌文件
  • create 644 root root:使用權限644創建日誌文件,用戶和組為root

創建 Logrotate 配置文件

假設您已經安裝了一個像 nginx 這樣的應用程序,並且它的日誌文件是在 /var/log/nginx/ 然後您可以使用如下所示的命令為此特定應用程序設置 logrotate 配置文件。

導航到 logrotate 目錄

$ cd /etc/logorate.d/

使用編輯器創建 logrotate 文件

$ vim nginx

/var/log/nginx/*.log {
   daily
   missingok
   rotate 14
   compress
   delaycompress
   notifempty
   create 0640 www-data adm
   sharedscripts
   prerotate
   if [ -d /etc/logrotate.d/httpd-prerotate ]; then 
      run-parts /etc/logrotate.d/httpd-prerotate; 
   fi 
   endscript
   postrotate
   invoke-rc.d nginx rotate >/dev/null 2>&1
   endscript
}

在上面的配置中,我們將輪換設置為 14,因此將保留 14 個舊日誌文件,並使用 gzip 壓縮日誌文件。 上述文件中使用的另一個配置幾乎在 logrotate 配置文件部分進行了說明。 您可以使用以下命令運行新創建的配置 sudo 特權用戶,如下所示。

$ sudo logrotate -d /etc/logrotate.d/nginx

在這裡,執行日誌文件,如下面的屏幕截圖所示。

使用 cron 進行日誌旋轉

在安裝logrotate包的同時,裡面的進程也會創建一個crontab文件 /etc/cron.daily 名稱為 logrotate。 檢查如下所示的屏幕截圖以獲取更多詳細信息。

$ cat /etc/cron.daily/logrotate

結論

在本文中,您學習瞭如何安裝 logrotate 包並使用 crontab 的實現檢查 logrotate 的默認和特定應用程序配置文件。 謝謝!