【问题标题】:process s3 access logs using AWS datapipeline使用 AWS 数据管道处理 s3 访问日志
【发布时间】:2015-07-09 12:08:18
【问题描述】:

我的用例是定期处理 S3 访问日志(具有这 18 个字段)并推送到 RDS 中的表。我正在使用 AWS 数据管道来执行此任务,每天运行以处理前一天的日志。

我决定把任务分成两个活动 1. Shell 命令活动:处理 s3 访问日志并创建 csv 文件 2. Hive Activity : 从 csv 文件中读取数据并插入到 RDS 表中。

我的输入 s3 存储桶有很多日志文件,因此第一个活动由于暂存时内存不足错误而失败。但是我不想暂存所有日志,暂存前一天的日志对我来说就足够了。我在互联网上搜索,但没有得到任何解决方案。我如何做到这一点?我的解决方案是最佳解决方案吗?是否存在比这更好的解决方案?任何建议都会有所帮助

提前致谢

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-rds amazon-data-pipeline


    【解决方案1】:

    您可以定义您的 S3 数据节点使用时间戳。例如你可以说目录路径是

    s3://yourbucket/ #{format(@scheduledStartTime, 'YYYY-MM-dd-HH-mm-ss')}

    因为您的日志文件的名称中应该有一个时间戳(或者它们可以按时间戳目录组织)。

    这只会暂存与该模式匹配的文件。

    【讨论】:

    • 这里是您可以使用的表达式列表:docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/…
    • 感谢您的回答..当我给出表达式时,它试图与确切的名称匹配,但日志文件在时间戳后附加了一些前缀..我尝试提供正则表达式和更多方法,但没有任何效果在 aws docs 中找不到任何信息。你知道一些方法可以实现我想要的吗??
    • 我知道AWS数据管道不支持正则表达式处理..当为存储桶启用日志记录时,是否可以每天创建文件夹并在S3中容纳当天的访问日志?如果可能的话,我该如何实现??
    【解决方案2】:

    您可能正在重新创建已由 Logstash(或更准确地说是 ELK 堆栈)完成的解决方案。

    http://logstash.net/docs/1.4.2/inputs/s3

    Logstash 可以使用 S3 文件。

    这是一个关于从 S3 读取访问日志的线程

    https://groups.google.com/forum/#!topic/logstash-users/HqHWklNfB9A

    我们通过其 AWS 插件使用具有相同功能的 Splunk(非免费)。

    【讨论】:

      【解决方案3】:

      请问您为什么要将访问日志推送到RDS? ELK 对您来说可能是一个很好的解决方案。您可以自己构建它或使用来自 Logz.io 的 ELK-as-a-service(我为 Logz.io 工作)。

      它使您能够轻松定义 S3 存储桶,定期从存储桶中读取您的所有日志并由 ELK 摄取,并在预配置的仪表板中查看它们。

      【讨论】:

      • 我推送到 RDS 有以下两个原因 1) 我想对存储的数据运行查询并在需要时执行一些分析 2) 我想要一个持久性存储 我实际上不知道 ELK。 . 会看看它谢谢
      猜你喜欢
      • 2018-11-02
      • 1970-01-01
      • 2020-01-01
      • 2020-06-19
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      相关资源
      最近更新 更多