在最初迁移到AWS CloudWatch日志记录期间,我还希望同步遗留日志文件。但是,似乎只有当前活动文件(即仍在更新中(将被同步。即使是与文件名格式匹配的旧文件也将被忽略。
那么,有什么简单的方法可以上传遗留文件吗?
参考:https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html
简单回答:您应该能够通过合并上传所有文件。或者为每个文件创建一个新的[logstream]
节。
/var/log
中的日志文件通常定期归档,例如由logrotate
归档。如果当前活动文件名为abcd.log
,那么几天后将自动创建名称为abcd.log.1
、abcd.log.2
。。。根据您的确切系统和配置,它们也可以自动压缩(abcd.log.1.gz
、abcd.log.1.gz
…(
CloudWatch日志文档定义file
配置参数如下:
文件
指定要推送到CloudWatch日志的日志文件。文件可以指向一个特定文件或多个文件(使用通配符,如/var/log/system.log*(。根据文件修改时间,只有最新的文件才会推送到CloudWatch日志。
注意:因此,使用带有星号(*
(的glob路径不足以上传历史文件。
假设您已经配置了glob路径,那么可以在每个历史文件上依次使用touch
命令来触发它们的上载。问题:
- 在继续下一个文件之前,您需要猜测CloudWatch代理何时注意到每个文件
- 您需要暂时暂停当前活动文件
- 不支持压缩文件,但可以手动解压缩
或者,您可以解压缩,然后将所有历史文件聚合到一个合并文件中。在第一个示例的上下文中,可以运行cat abcd.log.* > abcd.log.merged
。这个新创建的文件将由CloudWatch代理检测到(与glob模式匹配(,该代理将其视为活动文件。问题:以前的活动文件可能会同时更新,并在CloudWatch注意到合并文件之前占据主导地位。如果这是一个问题,您可以简单地创建一个新的[logstream]
配置部分,专门用于历史文件。
或者,只需解压缩历史文件,然后为每个文件创建一个新的[logstream]
配置部分。
请纠正我对你的系统做出的任何错误假设。