如何配置日志轮换以每周压缩和存档日志

如何配置日志轮换以每周压缩和存档日志

我们有 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?

答案1

您可以编写一个包含不同节的单个配置文件,每个要旋转的文件一个,并使用指令 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/
}

...

相关内容