首页 > 解决方案 > CloudWatch - 传输后删除日志

问题描述

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

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

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

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

标签: amazon-web-servicesamazon-ec2amazon-cloudwatchamazon-cloudwatchlogs

解决方案


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

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

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

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

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

推荐阅读