我最近将一个应用程序移至 Elastic Beanstalk。我目前正在设置要存档的日志文件。业务需求之一是X日志保留天数,这当然非常合理。由于日志文件存储在实例上,并且终止/重新创建实例时实例数据不会保留,因此需要将日志存储在其他地方。
Elastic Beanstalk 提供了“S3 日志存储”选项,它似乎可以将轮换的日志文件上传到 S3,这可以满足我的大部分需求。唯一的例外是实例终止/重新创建时:我如何才能轻松确保在终止之前将尚未轮换的日志文件上传到 S3?
答案1
Elastic Beanstalk日志备份到 S3 时不时地作为批量上传正如logrotate
您正确指出的那样,当实例终止时,最新日志可能不在 S3 中。
您可以创建一个关机脚本(例如这里)将在实例被优雅地关闭。如果实例突然崩溃或失败,则可能无法执行,但这种情况非常罕见。
然而Elastic Beanstalk支持CloudWatch 日志流它会在日志生成后立即将日志实时提供给 CloudWatch Logs。这意味着,即使在关闭的情况下,您仍然可以在 CloudWatch Logs 中拥有代理awslogs
终止前的最新日志。
看一看这里如何设置。
搜索 CloudWatch Logs 也比搜索 S3 日志更容易,您可以监视特定的关键字(例如“错误”)并对其执行操作(例如发送电子邮件或运行 Lambda 函数)等。
你或许可以已启用 S3 和 CloudWatch Logs在您的 Elastic Beanstalk 应用程序中。
希望有帮助:)