【问题标题】:Are there any notifications in AWS CloudFront Access Logs?AWS CloudFront 访问日志中是否有任何通知?
【发布时间】:2017-08-27 15:41:49
【问题描述】:

我想使用 AWS AccessLogs 使用现有面向批处理的 ETL 管道来处理网站印象,该管道可以抓取最后一小时的印象并对其进行大量进一步的转换。

AccessLog 的问题在于:

但是请注意,一段时间内的部分或全部日志文件条目可以 有时最多延迟 24 小时

所以我永远不会知道特定小时的所有日志何时完成。 不幸的是,我不能使用任何流式解决方案,我需要使用现有的管道来抓取每小时批次的数据。

所以我的问题是,有什么方法可以通知 所有 日志已在特定小时内传送到 s3?

【问题讨论】:

  • 您指的是 Amazon S3 Server Access Logging 还是 Amazon CloudFront Access Logs
  • @JohnRotenstein 抱歉,我说的是 CloudFront AccessLogs 存储到 s3,然后由我在 ETL 管道中处理。

标签: amazon-web-services amazon-s3 amazon-cloudfront access-log


【解决方案1】:

您曾询问过 S3,但您的引述来自 CloudFront 的文档。

不过,不管怎样,都无所谓。这只是一个警告,表示日志传递可能有时会延迟,如果延迟,这不是错误——它是大规模分布式系统的副作用。

这两种服务的运行规模都令人难以理解,因此系统的小部分会定期出现问题,最终可能会找到并交付一些搁浅的日志或积压的日志。很少,他们甚至可以在几天或几周后到达。

没有任何事件表明所有日志都已完成,因为在这样的系统中没有任何一个点知道这一点。

但这里有一个要点:大部分日志将在 分钟内到达,但这并不能保证。一旦你开始运行流量并观察日志记录是如何工作的,你就会明白我指的是什么。延迟的日志是一个例外,您应该能够相当快地了解在给定的挂钟小时处理日志之前需要等待多长时间。只要您跟踪您处理的内容,您就可以稍后根据存储桶对其进行审核,以确保您的进程正在捕获足够比例的日志。


自从 CloudFront 支持 SNI 之前,我一直在使用与存储桶相同区域的 EC2 中的 HAProxy 将流量路由到我的一些 S3 存储桶。这使我能够使用自定义主机名和 SNI,但也让我使用 HAProxy 实时记录所有存储桶流量,HAProxy 可以将其日志副本流式传输到日志收集器,以便通过 UDP 进行实时分析将其写入系统日志。该方案在性能上没有明显的差异,HAProxy 在 t2 级服务器上运行得非常好,因此具有成本效益。当然,您确实会引入更多成本和更多维护,但您甚至可以在 CloudFront 和 S3 之间部署 HAProxy,只要您不使用源访问身份。我的一项大型服务正是这样做的,它是 Lambda@Edge 之前的保留。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多