AWS CloudWatch代理未上传旧文件



在最初迁移到AWS CloudWatch日志记录期间,我还希望同步遗留日志文件。但是,似乎只有当前活动文件(即仍在更新中(将被同步。即使是与文件名格式匹配的旧文件也将被忽略。

那么,有什么简单的方法可以上传遗留文件吗?

参考:https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AgentReference.html

简单回答:您应该能够通过合并上传所有文件。或者为每个文件创建一个新的[logstream]节。

/var/log中的日志文件通常定期归档,例如由logrotate归档。如果当前活动文件名为abcd.log,那么几天后将自动创建名称为abcd.log.1abcd.log.2。。。根据您的确切系统和配置,它们也可以自动压缩(abcd.log.1.gzabcd.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]配置部分。

请纠正我对你的系统做出的任何错误假设。

最新更新