Rsyslog
如何配置日誌輪換以每週壓縮和歸檔日誌
我們有 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 天的日誌。
問題:
- 有沒有辦法在單個/簡單的配置中實現這一點
- 我必須為日誌路徑創建一個新路徑嗎?
- 對於某些文件夾(安全事件),我們對歸檔日誌超過 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/ } ...