如何将键值格式的日志文件放入 redshift(从 S3 或直接应用服务器)

How to put log files in key-value format into redshift ( from S3 or directly app servers )

我有键值格式的日志。这些键值对可以针对不同的日志进行更改。想对其进行分析。由于它是非结构化的,我认为我应该放入 dynamodb,但对于分析,redshift 更好。我也可能不必将所有键值保存到 redshift 中,但这是可选的。我考虑的选项很少:

  1. 将日志放入 S3。然后使用复制命令;但我找不到在 COPY 命令中将键值转换为 JSON 格式的方法,因为复制只需要 json 或 csv !
  2. 使用 Kinesis Stream 在流中获取日志文件。但是,使用这些日志文件的最佳方式是什么?通过 Lambda 或 Kinesis Client Library!我考虑的一种选择是使用运动代理格式化程序将文件格式化为 JSON,但这不是很灵活。之后是什么!
  3. 将日志文件放入cloudwatch日志!但是如何消费它

如果您在 S3 中有数据,请尝试在 AWS Data Pipeline 中使用 "Loading data from S3 to Redshift" 的模板。此模板负责将数据从 S3 加载到 redshift

注意:它可能会使用 EMR,因此可能会启动 EC2 来处理数据,直到将它们加载到红移。

亚马逊 AWS 发布了一个非常有趣的关于它的博客。看看这是否满足您的要求。

ETL Processing of Web Server Logs using AWS EMR and DataPipeline

对于实时,您还可以查看反向工程的 Kinesis Firehose Stream。它将您的数据直接带到 S3 或 Redshift。您可以修改您的 Kinesis 生产者或发布者以在 json 或 csv 中转换日志以执行您的加载操作。

请在下方评论以获取更多帮助。