对日志分区以提升速度并降低成本
组织数据,使调查运行更快且成本更低。
对日志分区以提升速度并降低成本 是 CoddyKit 上的免费 AWS Security Academy 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AWS Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AWS Security Academy 课程共包含 4 节课。
扫描的成本
由于 Athena 按扫描的数据量收费,为查找某一天的事件而查询一整年的日志,会浪费金钱和时间。分区可以让 Athena 只读取相关的数据片段,从而使查询速度大幅提升、成本显著降低。这是 Athena 最重要的优化手段。
什么是分区
分区按照一个或多个列的值划分表中的数据,通常使用日期组成部分,并将其映射到 S3 前缀。CloudTrail 日志本来就按 region/year/month/day 的结构排列,因此按照这些字段分区可以匹配其物理结构,让 Athena 跳过不属于查询范围的文件夹。
分区裁剪
当查询按照分区列进行筛选时,Athena 会执行分区裁剪:只读取匹配的前缀,忽略其余部分。使用正确分区查询某一天的数据时,只需扫描存储桶中极小的一部分。如果没有裁剪,同一个查询就会扫描所有数据,包括那些不可能用到的数据。
手动添加分区
注册分区的一种方式是使用 ALTER TABLE ADD PARTITION,将分区值映射到其 S3 位置。这种方式可行,但对于每日产生的日志来说十分繁琐,因为您每天都要添加一个分区。它适合一次性的历史数据加载,却无法很好地扩展到持续产生的日志。
分区投影
分区投影是现代且推荐的方法:您告诉 Athena 分区模式,例如某个日期范围,Athena 就会在查询时计算前缀,而无需将每个分区存储在目录中。对于持续增长的 CloudTrail 和流日志数据,这种方法可以避免不断维护,并让分区裁剪自动完成。
TBLPROPERTIES (
'projection.enabled'='true',
'projection.dt.type'='date',
'projection.dt.range'='2023/01/01,NOW',
'projection.dt.format'='yyyy/MM/dd'
)使用 Glue 爬虫管理分区
Glue 爬虫也可以按计划发现新分区,并将其添加到目录中。这能自动化不断变化的数据的分区管理;不过,对于可预测的按日期排列的数据布局,分区投影通常更简单,而且不会产生爬虫成本。
列式格式叠加节省效果
分区限制读取哪些文件;Parquet 等列式格式则限制在这些文件中读取哪些列。将两者结合起来——把日志转换为 Parquet,并按日期分区——可以将扫描的数据量降低几个数量级。许多团队会运行转换任务,为高容量日志存储经过查询优化的副本。
压缩
使用 GZIP 或 Snappy 等格式压缩日志数据,可以进一步减少扫描字节数和存储成本。Athena 会透明地读取压缩文件。结合分区和列式存储后,压缩完善了这三项技术,使大规模日志分析变得经济可行。
为安全场景设计分区
对于安全日志,应主要按日期分区,因为调查通常有明确的时间范围;对于组织跟踪,还可以考虑按账户或区域分区,以便快速定位某个账户。正确的分区键应当反映调查实际使用的筛选条件,从而最大限度地提高真实查询中的分区裁剪效果。
关注扫描指标
Athena 会报告每个查询的扫描数据量。关注这个指标可以判断分区是否有效:经过良好分区且限定时间范围的查询应扫描兆字节,而不是太字节。如果查询扫描的数据远超预期,通常说明您的筛选条件没有与分区列对齐。
整合优化方法
优化方案包括:使用分区跳过无关数据,使用列式格式仅读取所需列,并使用压缩减少字节数。将这些方法应用于 CloudTrail 和流日志后,可以把原本缓慢且昂贵的扫描变成快速、低成本的调查,这正是大规模安全分析所需要的。
快速检查
测试您对分区的了解。
回顾
分区按照列(通常是日期)划分表数据,使 Athena 能够执行分区裁剪,只扫描相关前缀,从而降低成本并节省时间。对于不断增长的日志,优先使用分区投影,而不是手动使用 ADD PARTITION 或依赖爬虫。将分区与列式 Parquet及压缩结合起来,可以大幅节省资源;安全日志应按日期和账户分区,并关注扫描数据量指标。
常见问题解答
「对日志分区以提升速度并降低成本」课时是免费的吗?
是的 — 「对日志分区以提升速度并降低成本」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AWS Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 AWS Security Academy 课程共包含 4 节课。
「对日志分区以提升速度并降低成本」这节课中我会学到什么?
组织数据,使调查运行更快且成本更低。 你通过在浏览器中直接运行的动手代码来练习 AWS Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AWS Security Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AWS Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「对日志分区以提升速度并降低成本」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AWS Security Academy 课中编写并运行代码吗?
能。每节 AWS Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 使用 Athena 查询 S3 日志
- 基于 CloudTrail 数据构建表
- 使用 SQL 查询调查事件
- 对日志分区以提升速度并降低成本