找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

937

积分

0

好友

120

主题
发表于 6 天前 | 查看: 21| 回复: 0

Yelp 工程团队近期发布了一篇详细的技术博客,分享了他们如何构建一套可扩展且成本高效的 Amazon S3 服务器访问日志(Server-Access Logs,简称 SAL)处理管道。该方案成功应对了大规模日志存储和查询的挑战,使对象级日志记录在海量数据场景下变得切实可行。

面临的核心挑战

Yelp 每天产生数 TB 级别的访问日志,直接存储原始日志文件会带来三大痛点:日志量激增、存储成本飙升以及查询性能低下。为了解决这些问题,Yelp 设计了一套创新的日志压缩与转换架构。

技术方案详解

该系统将原始的纯文本日志对象定期合并转换为紧凑的 Parquet 格式文件,并通过 Amazon Athena 等工具实现高效查询。这一"压缩(Compaction)"过程将多个小文件合并为更少、更大的 Parquet 文件,最终实现了约 85% 的存储空间节省,对象数量减少超过 99.99%。这种转换不仅大幅降低了成本,还使得日志分析变得快速且经济。

在架构层面,Yelp 利用 AWS Glue Data Catalog 跨多个 AWS 账户管理数据模式,并结合定时批处理任务、Lambda 函数以及基于分区投影的表结构,实现了稳健的自动化日志摄取。系统设计充分考虑了 SAL 固有的延迟和重复投递特性,通过幂等插入和对旧日志对象打标签进行生命周期过期管理,确保数据一致性和可靠性。

实际应用场景

该系统支持多种关键运维场景:

  • 权限调试:工程师可以快速查询特定对象在某个时间点的访问或拒绝记录
  • 成本分析:按 IAM 角色聚合 API 使用情况,识别流量最大的服务或团队
  • 数据清理:结合 S3 清单数据,识别并安全删除长期未访问的对象

行业参考价值

Yelp 的实践具有双重意义:一方面证明了 S3 对象级日志记录在大规模场景下的可行性,另一方面为其他企业提供了可复用的参考架构。随着云存储环境中对数据治理、审计和成本可见性需求的增长,这套方案为实现访问日志的规模化管理提供了切实可行的路径。

相似方案对比

业界还有其他类似的实现方案:

Upsolver 是一个数据湖/ETL 平台,内置了对 S3 访问日志的摄取支持,能够将日志转换为分析就绪的格式,并针对 Amazon Athena 等查询引擎进行优化。这与 Yelp 的方案异曲同工:摄取日志、转换格式、通过 SQL 引擎查询,让团队无需编写自定义日志处理管道即可获得可扩展的日志分析能力。

AWS 官方也发布了一套使用 Glue 作业(特别是结合 Ray 进行基于 Python 的可扩展处理)处理 S3 服务器访问日志的示例架构。该管道对日志进行分区、格式化(转为 Parquet)、编目,然后使用 Athena(或在某些情况下使用 QuickSight 等可视化工具)进行大规模查询或分析。这本质上与 Yelp 采用的"压缩 + 表 + 目录 + 查询"模式一致,但以 AWS 托管方案的形式提供。

此外,像 Druid(用于分析工作负载/时间序列或事件数据)和 Presto/Trino(用于对包括 S3 对象存储在内的大型数据集进行 SQL 查询)这样的项目,通常被用作大规模日志或事件数据湖的底层查询引擎。将日志转换为列式格式(如 Parquet、ORC,或通过 Apache Iceberg 等湖表格式管理),这些引擎可以作为可扩展、低延迟的查询层,成为访问日志、审计日志或事件日志架构的有力支撑。

对于需要近实时搜索/告警(例如用于安全或异常检测)的组织,AWS 博客还描述了一种将服务器访问日志从 S3 摄取到 OpenSearch(使用 Lambda + 摄取管道)并通过 Kibana 进行可视化的模式。虽然这种方式在长期存储效率上不如 Parquet + Athena,但它提供了更高的即时性和实时调查能力,在安全、合规或 运维监控 场景中非常有用。




上一篇:Azure HorizonDB发布:兼容PostgreSQL的存算分离AI数据库
下一篇:React Compiler 1.0上线:自动记忆化优化生产性能
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2025-12-24 23:13 , Processed in 0.246886 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表