如何将日志从 Amazon S3 存储桶导入到 cloudwatch

Posted

技术标签:

【中文标题】如何将日志从 Amazon S3 存储桶导入到 cloudwatch【英文标题】:How to Import Logs From An Amazon S3 Bucket to cloudwatch 【发布时间】:2019-11-01 04:13:11 【问题描述】:

我已使用 AWS CLI 将 aws cloudwatch 日志数据导出到 Amazon S3。关注kb:https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/S3ExportTasks.html.

知道如何导入保存在 s3 中的日志来分析数据吗?

【问题讨论】:

您究竟为什么需要将日志从 S3 移动到 CloudWatch?用于分析?可以直接对存储在 S3 上的数据进行操作的 Athena 或 Redshift Spectrum 有什么问题?或者您为什么不将您的数据移动到 Redshift 或 ES 或 RDS 或任何其他适合您需要的数据库?老实说,我认为将数据从 S3 移动到 CloudWatch 没有任何价值,这通常是反过来的,主要是因为 CloudWatch 不适合复杂的分析(尽管我们现在有 Insights)。 其实我正在创建一个DR(灾难恢复),所以我需要将新集群中生成的cloudwatch日志在它启动时移动到原始集群。 【参考方案1】:

嗯,对于数据分析,我建议使用 Athena,

关于您的 cmets,快速搜索无法提供有关如何导入日志的答案。

日志附加到您启动的资源,因此在新生成的集群启动时将日志从新生成的集群附加到旧集群听起来有点不可能,因为它们是具有不同唯一 ID 等的两个独立资源。

即使资源被删除,存储在 cloudwatch 中的日志也没有到期日期。因此,当新生成的集群不再在线(已销毁)时,您仍然可以检查其日志,将日志导出到 s3 并使用 Athena 进行分析。

【讨论】:

【参考方案2】:

执行此操作的唯一方法是使用某种形式的脚本从 S3 中提取文件,并将它们放入 CloudWatch Logs。 Lambda 将是一个不错的选择,如果您想自动化它,可以使用 S3 触发器。

但是,更好的方法是归档日志。在 DR 场景中,只要您的日志条目是安全的,就可以了。尝试将这些日志重播到新的集群中对我来说是个坏主意。

【讨论】:

以上是关于如何将日志从 Amazon S3 存储桶导入到 cloudwatch的主要内容,如果未能解决你的问题,请参考以下文章

将所有文件从 Amazon S3 存储桶复制到 Microsoft Azure 容器的最佳方法

Android Amazon s3 存储桶

Amazon AWS Athena S3 和 Glacier 混合存储桶

如何(批量)删除Amazon S3存储桶中几百个文件的列表

Amazon S3,如何将 JSON 文件复制到另一个在更新原始文件时更新的存储桶?

正则表达式拆分 Amazon S3 存储桶日志的列?