创建字段索引以提高查询性能并减少扫描量 - Amazon CloudWatch Logs
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

创建字段索引以提高查询性能并减少扫描量

您可以为日志事件中的字段创建字段索引,以便高效地进行基于等式的搜索。然后,当您在 CloudWatch Logs Insights 查询中使用字段索引时,查询会尝试跳过处理已知不包含索引字段的日志事件。这样可以减少使用字段索引的查询的扫描量,从而更快地返回结果。这可以帮助您快速搜索数千个日志组中 PB 级的总日志,并更快地找到相关日志。适合编制索引的字段是您经常需要查询的字段。具有高基数值的字段也是字段索引的良好候选对象,因为使用这些字段索引的查询限制了与目标值匹配的日志事件,因此会更快完成。

例如,假设您为 requestId 创建了一个字段索引。然后,包含 requestId = valuerequestId IN [value, value, ...] 的针对该日志组的任何 CloudWatch Logs Insights 查询将尝试仅处理已知包含该索引字段和查询值的日志事件,并且 CloudWatch Logs 过去已检测到该字段的值。

您还可以利用字段索引来创建对大量日志组的高效查询。当您在查询中使用 filterIndex 命令而不是 filter 命令时,查询将针对具有字段索引的日志事件的选定日志组运行。这些查询最多可以扫描 10,000 个日志组,您可以通过指定最多五个日志组名称前缀进行选择。如果这是 CloudWatch 跨账户可观测性中的监控账户,您可以选择所有源账户或指定单个源账户来选择日志组。

索引字段区分大小写。例如,字段索引 RequestId 将无法匹配包含 requestId 的日志事件。

仅 JSON 和服务日志的结构化日志格式支持字段索引。

CloudWatch Logs 会为标准日志类中的所有日志组提供默认字段索引。默认字段索引可自动用于以下字段:

  • @logStream

  • @aws.region

  • @aws.account

  • @source.log

  • traceId

默认字段索引是对您在策略中定义的任何自定义字段索引的补充。默认字段索引不计入字段索引配额

CloudWatch Logs 仅对创建索引策略后摄取的日志事件编制索引。它不会对创建策略之前摄取的日志事件编制索引。创建字段索引后,每个匹配的日志事件将从日志事件的摄取时间起保留编制索引 30 天。

注意

如果您在监控账户中创建了一个字段索引策略,则该策略不会用于关联源账户中的日志组。字段索引策略仅适用于创建该策略的账户。

本节的其余主题介绍了如何创建字段索引。有关如何在查询中引用字段索引的信息,请参阅 filterIndex筛选