【问题标题】:Aws Vpc flow logs to athena from s3从 s3 到 athena 的 Aws Vpc 流日志
【发布时间】:2020-09-08 10:45:52
【问题描述】:

我正计划将我当前在 s3 中的 vpc 流日志推送到 athena 中。 每当 vpc 流日志将日志文件推送到 s3 时,将触发事件将数据发送到 athena 并检查是否有超过 30 天的数据将其删除。

有什么建议吗??

我的意见:使用复制命令将日志放入 redshift。

使用的查询: 如果不存在则创建外部表 vpc_flow_logs ( 版本 int, 帐户字符串, interfaceid 字符串, 源地址字符串, 目标地址字符串, 源端口整数, 目的港 int, 协议整数, numpackets int, numbytes bigint, 开始时间整数, 结束时间整数, 动作字符串, 日志状态字符串 ) 分区者(date 日期) 行格式分隔 由“ ”终止的字段 位置's' TBLPROPERTIES ("skip.header.line.count"="1");

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-athena amazon-vpc


    【解决方案1】:

    数据并未“存储”在 Amazon Athena 中。 相反,在 Amazon Athena 中配置了一个表指向位于 Amazon S3 中的数据

    当查询在 Amazon Athena 中运行时,它会自动查看该位置的所有文件

    因此,无需移动或复制日志文件。只需将 Athena 表指向当前存储日志文件的位置。

    如果您想删除旧日志(只有 30 天的数据),请将 Amazon S3 Object lifecycle management 配置为在 30 天后删除文件。

    见:Querying Amazon VPC Flow Logs - Amazon Athena

    如果您希望经常分析数据,则可能值得将数据加载到 Amazon Redshift。这是因为 Amazon Athena 根据从磁盘读取的数据量收费。因此,跨数据运行许多查询可能会更昂贵。或者,您可以将日志文件转换为压缩的 Parquet 格式,这使得 Athena 的查询效率更高,从而降低了从磁盘读取的数据量,从而降低了使用 Athena 的成本。但是,请从上述建议开始,然后在进行更改之前查看您最终使用 Athena 的程度。

    【讨论】:

    • 谢谢,这是否意味着我每次要分析日志时都必须手动运行查询并创建表??
    • 您只需要创建一次表。它指向存储 VPC 流日志的文件夹,包括所有子目录。每当新日志出现在该位置时,它们将自动包含在下一个 Athena 查询中。类似地,如果数据文件被删除(例如通过生命周期规则),则数据将包含在下一个查询中。 Athena 只是在查询运行时查询该位置中的任何文件。
    • 谢谢,我已经创建了表格,但是每当我预览表格时,它并不指向数据
    • 查询表时会发生什么?确保创建表时LOCATION 正确无误。
    • 我是这个查询:ALTER TABLE vpc_flow_logs ADD PARTITION (date='2020-05-25') location 's3://test1234cm/logs';然后填充数据。如果我明天添加数据会发生什么我需要再次更改吗?我必须使用什么自动化?此查询仅针对您指定的日期创建单个分区。要使该过程自动化,请使用运行此查询并以这种方式为年/月/日创建分区的脚本。任何建议
    猜你喜欢
    • 1970-01-01
    • 2019-04-10
    • 2021-09-08
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多