创建字段索引以提高查询性能并减少扫描量 - Amazon CloudWatch 日志

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

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

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

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

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

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

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

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

  • @logStream

  • @aws.region

  • @aws.account

  • @source.log

  • @data_source_name

  • @data_source_type

  • @data_format

  • traceId

  • severityText

  • attributes.session.id

CloudWatch 日志还为某些数据源名称和类型组合提供默认字段索引。默认字段索引自动适用于以下数据源名称和类型组合:

数据源名称和类型 默认字段索引

amazon_vpc.flow

action

logStatus

region

flowDirection

type

amazon_route53.resolver_query

query_type

transport

rcode

aws_waf.access

action

httpRequest.country

aws_cloudtrail.data

aws_cloudtrail.management

eventSource

eventName

awsRegion

userAgent

errorCode

eventType

managementEvent

readOnly

eventCategory

requestId

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

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

注意

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

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