CloudWatch - 传输后删除日志

CloudWatch - Delete logs after transfered

我在我的 EC2 实例上设置了一个 CloudWatch,用于将日志传输到特定的日志组。

随着时间的推移,这些日志的大小会变得非常大,所以我想删除它们,例如,每周删除一次。

我想知道是否有任何选项可以从 EC2 实例设置自动清理使用 Cloudwatch 传输的日志?

实现该目标的最佳方法是什么?

要从 EC2 运行ning Linux 中删除日志文件,您有两个选择:

  1. 如果您使用的日志文件已经根据时间或其他值轮换,您可以使用 auto_removal 选项在日志代理完成后删除它们。参见 docs

  2. 如果您使用的是不断更新的文件,则需要使用 logrotate,这是一个由 CRON 调用的程序,可以重命名、压缩和删除旧文件.有一个很好的介绍文档 here.

如果您使用 logrotate,这里有一个示例配置,我发现它对大量日志源很有用。如果文件达到 100 兆字节,它会执行轮换,而不是每天都轮换(您需要从 运行 到 cron.hourly 才能发挥作用)。最重要的是,它启用 copytruncate,这将 运行 就地分类文件,允许程序继续写入它。

/var/log/filename.log {
  rotate 7
  daily
  maxsize 100M
  nodateext
  missingok
  notifempty
  copytruncate
  compress
  delaycompress
}