![如何配置日志轮换以每周压缩和存档日志](https://linux22.com/image/765350/%E5%A6%82%E4%BD%95%E9%85%8D%E7%BD%AE%E6%97%A5%E5%BF%97%E8%BD%AE%E6%8D%A2%E4%BB%A5%E6%AF%8F%E5%91%A8%E5%8E%8B%E7%BC%A9%E5%92%8C%E5%AD%98%E6%A1%A3%E6%97%A5%E5%BF%97.png)
我们有 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?
答案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/
}
...