本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建字段索引以提高查询性能并减少扫描量
您可以为日志事件中的字段创建字段索引,以便高效地进行基于等式的搜索。然后,当您在 L CloudWatch ogs Insights 查询中使用字段索引时,该查询会尝试跳过处理已知不包含索引字段的日志事件。这样可以减少使用字段索引的查询的扫描量,从而更快地返回结果。这可以帮助您快速搜索数千个日志组中 PB 级的总日志,并更快地找到相关日志。适合编制索引的字段是您经常需要查询的字段。具有高基数值的字段也是字段索引的良好候选对象,因为使用这些字段索引的查询限制了与目标值匹配的日志事件,因此会更快完成。
例如,假设您为 requestId 创建了一个字段索引。然后,针对该日志组的任何 CloudWatch Logs Insights 查询,该查询包含requestId =
或valuerequestId IN
[将尝试仅处理已知包含该索引字段和查询值的 CloudWatch 日志事件,而且 Logs 过去已检测到该字段的值。value, value, ...]
您还可以利用字段索引来创建对大量日志组的高效查询。当您在查询中使用 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 日志还为某些数据源名称和类型组合提供默认字段索引。默认字段索引自动适用于以下数据源名称和类型组合:
| 数据源名称和类型 | 默认字段索引 |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
默认字段索引是对您在策略中定义的任何自定义字段索引的补充。默认字段索引不计入字段索引配额。
CloudWatch 仅记录创建索引策略后提取的日志事件的索引。它不会对创建策略之前摄取的日志事件编制索引。创建字段索引后,每个匹配的日志事件将从日志事件的摄取时间起保留编制索引 30 天。
注意
如果您在监控账户中创建了一个字段索引策略,则该策略不会用于关联源账户中的日志组。字段索引策略仅适用于创建该策略的账户。
本节的其余主题介绍了如何创建字段索引。有关如何在查询中引用字段索引的信息,请参阅 filterIndex 和 筛选。