Rsyslog

如何配置日誌輪換以每週壓縮和歸檔日誌

  • April 2, 2021

我們有 rsyslog,可以根據需要將日誌保存到各種目錄:

/opt/logs/stats/dc1/stats_YYYY-MM-DD_%somename%.log
/opt/logs/stats/dc2/stats_YYYY-MM-DD_%somename%.log
/opt/logs/events/dc1/events_YYYY-MM-DD_%somename%.log
/opt/logs/events/dc2/events_YYYY-MM-DD_%somename%.log
/opt/logs/security/dc1/security_YYYY-MM-DD_%somename%.log
/opt/logs/security/dc2/security_YYYY-MM-DD_%somename%.log

如何每週歸檔這些日誌?

我希望它們被壓縮並移動到不同的文件夾:

/mnt/logs_archive/stats/dc1/stats_<YYYY-MM-DD>.tar.gz
/mnt/logs_archive/events/dc1/events_<YYYY-MM-DD>.tar.gz
/mnt/logs_archive/security/dc1/security_<YYYY-MM-DD>.tar.gz
/mnt/logs_archive/stats/dc2/stats_<YYYY-MM-DD>.tar.gz
/mnt/logs_archive/events/dc2/events_<YYYY-MM-DD>.tar.gz
/mnt/logs_archive/security/dc2/security_<YYYY-MM-DD>.tar.gz

其中 YYYY-MM-DD 是移動日期,我們知道它應包括自該日期起最近 7 天的日誌。

問題:

  1. 有沒有辦法在單個/簡單的配置中實現這一點
  2. 我必須為日誌路徑創建一個新路徑嗎?
  3. 對於某些文件夾(安全事件),我們對歸檔日誌超過 120 天不感興趣。這也可以實現嗎?

我目前的副本:

copytruncate
compress
dateformat _%Y-%m-%d.
dateext
extension log
olddir /mnt/archive_logs/

/opt/logs/stats/gw_stats*.log {
   rotate 48
   hourly
}

這給了我多個壓縮文件

ll /mnt/archive_logs/


stats_YYYY-MM-DD_f2._2021-04-02.log.gz
stats_YYYY-MM-DD_asdas3._2021-04-02.log.gz

我可以將其合併為一個 stats_YYYY-MM-DD.gz 嗎?

另外我如何使用 tar.gz ?

您可以編寫具有不同節的單個配置文件,每個要旋轉的文件一個,並使用指令 dateext、dateformat、olddir,但要小心 olddir(您的 /mnt 目錄表明物理設備不同,所以您可能應該利用 postrotate 移動旋轉的文件)

olddir 目錄

日誌被移動到目錄進行輪換。該目錄必須與正在旋轉的日誌文件位於同一物理設備上,並且假定與保存日誌文件的目錄相關,除非指定了絕對路徑名。使用此選項時,所有舊版本的日誌都將在目錄中結束。此選項可能會被 noolddir 選項覆蓋。

您的配置文件將看起來(假設名稱 stats.log 和 events.log 作為日誌文件的名稱)。

compress
weekly
rotate 120
dateext
dateformat _%Y-%m-%d

/opt/logs/stats/dc1/stats.log {
  olddir /mnt/logs/archive/stats/dc1/
}

/opt/logs/events/dc1/events.log {
  olddir /mnt/logs/archive/events/dc1/
}

...

引用自:https://serverfault.com/questions/1059184