天天看點

使用Logrotate管理日志

Linux使用某些軟體的時候會産生日志檔案,而這些軟體本身對日志不進行分割或者壓縮處理,久而久之會導緻日志檔案異常巨大,影響機器性能,配置不高的機器上尤為嚴重。而logrotate就是管理這些日志檔案的神器。

Logrotate功能

logrotate會周期性的讀,壓縮,備份,建立新的日志檔案。你想對日志檔案做的操作,它基本上可以做到。

  • 防止單個日志檔案過于龐大
  • 删除舊的日志檔案,以防舊日志檔案填滿你的磁盤。
  • 對單個日志檔案或者某個目錄下的檔案按

    時間

    /

    大小

    進行

    切割

    壓縮

    操作;指定日志儲存

    數量

    ;還可以在切割之後運作自定義指令。

許多Linux軟體都已經内置了logrotate了,例如httpd預設就使用logrotated來幫你管理日志檔案。

使用Logrotate管理日志

httpd logrotate

Logrotate配置

  1. 首先看logrotate軟體包的内容
    使用Logrotate管理日志
    logrotate包目錄

一般第三方軟體包的日志檔案管理都放在

/etc/logrotate.d

目錄下。

httpd

[root@250 nginx]# cat /etc/logrotate.d/httpd
/var/log/httpd/*log {
    daily
    missingok
    notifempty
    sharedscripts
    delaycompress
    postrotate
        /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
    endscript
}
           

這份配置會處理

/var/log/httpd/

目錄下字尾為log的檔案。

  • monthly: 日志檔案将按月輪循。其它可用值為‘daily’,‘weekly’或者‘yearly’。
  • missingok: 在日志輪循期間,任何錯誤将被忽略,例如“檔案無法找到”之類的錯誤。
  • notifempty: 如果日志檔案為空,輪循不會進行。
  • sharedscripts: 在所有的日志檔案都輪詢之後運作postrotate腳本,如果沒設定預設會在每個比對的檔案輪詢之後運作一次postrotate腳本。
  • compress: 在輪循任務完成後,已輪循的歸檔将使用gzip進行壓縮。
  • delaycompress: 總是與compress選項一起用,delaycompress選項訓示logrotate不要将最近的歸檔壓縮,壓縮将在下一次輪循周期進行。這在你或任何軟體仍然需要讀取最新歸檔時很有用。
  • postrotate/endscript: 在所有其它指令完成後,postrotate和endscript裡面指定的指令将被執行。在這種情況下,rsyslogd 程序将立即再次讀取其配置并繼續運作。

這裡解釋僅做參考,logrotate中的每個參數可單獨進行搜尋,明确具體的含義,man手冊中也有詳細說明。

排障

logrotate [-dv] [-f|--force] [-s|--state file] config_file
[root@250 nginx]# logrotate --help
用法: logrotate [OPTION...] <configfile>
  -d, --debug               Don't do anything, just test (implies -v)
  -f, --force               Force file rotation
  -m, --mail=command        Command to send mail (instead of `/bin/mail')
  -s, --state=statefile     Path of state file
  -v, --verbose             Display messages during rotation
  -l, --log=STRING          Log file
  --version                 Display version information
           
  1. 以debug模式運作某個logrotate配置檔案
    使用Logrotate管理日志
    logrotate debug模式
  2. 強制使用logrotate近輪詢日志檔案
    使用Logrotate管理日志
    logrotate 強制輪詢
  3. logrotate記錄輪詢狀态的檔案
    使用Logrotate管理日志

    logrotate狀态檔案格式

    記錄某輪詢日志到logrotate狀态檔案中

logrotate -vf -s /var/lib/logrotate/logrotate.status  /etc/logrotate.d/httpd
           

最後

logrotate在日志處理上功能十分強大,但卻十分容易上手,本文隻是作為抛磚引玉的作用。在使用logrotate的時候,根據man手冊可查尋找想要了解的各種配置資訊。

希望能幫助到大家。