SOURCE - Amazon CloudWatch Logs

SOURCE

在使用 AWS CLI 或 API 创建查询时,在查询中包含 SOURCE 是指定要包含在查询中的日志组的一种有效方法。SOURCE 命令仅在 AWS CLI 和 API 中受支持,CloudWatch 控制台不支持。使用 CloudWatch 控制台启动查询时,您可以通过控制台界面指定日志组。

要使用 SOURCE 指定要查询的日志组,可以使用以下关键字:

  • namePrefix 会针对名称以您指定的字符串开头的日志组运行查询。如果省略它,则会查询所有日志组。

    列表中最多可以包含五个前缀。

  • accountIdentifiers 会针对指定 AWS 账户中的日志组运行查询。仅当您在监控账户中运行查询时,这才有效。如果省略此项,则默认为查询所有关联的源账户和当前的监控账户。有关跨账户可观测性的更多信息,请参阅 CloudWatch 跨账户可观测性

    列表中最多可以包含 20 个账户标识符。

  • logGroupClass 会针对指定日志类(标准或不频繁访问)中的日志组运行查询。如果省略此项,则默认使用标准日志类。有关日志类的更多信息,请参阅 日志类

由于您可以通过这种方式指定大量日志组进行查询,因此我们建议您仅在利用已创建的字段索引的查询中使用 SOURCE。有关为日志组中的字段编制索引的更多信息,请参阅创建字段索引以提高查询性能并减少扫描量

以下示例选择了账户中的所有日志组。如果这是一个监控账户,则会选择监控账户及其所有源账户中的所有日志组。如果日志组总数超过 10,000 个,则会显示一条错误消息,提示您使用其他日志组选择方法来减少日志组的数量。

SOURCE logGroups()

以下示例选择了 111122223333 源账户中的日志组。如果在 CloudWatch 跨账户可观测性中的监控账户中启动查询,则默认情况下会选择所有源账户和监控账户中的日志组。

SOURCE logGroups(accountIdentifiers:['111122223333'])

下一个示例根据名称前缀选择日志组。

SOURCE logGroups(namePrefix: ['namePrefix1', 'namePrefix2'])

以下示例选择了不频繁访问日志类中的所有日志组。如果不包含 class 标识符,则默认情况下,查询仅适用于标准日志类中的日志组。

SOURCE logGroups(class: ['INFREQUENT_ACCESS'])

下一个示例选择 111122223333 账户中以特定名称前缀开头且属于标准日志类的日志组。命令中未提及日志类,因为“标准”是默认的日志类值。

SOURCE logGroups(accountIdentifiers:['111122223333'], namePrefix: ['namePrefix1', 'namePrefix2']

最后一个示例展示了如何将 SOURCE 命令与 start-query AWS CLI 命令结合使用。

aws logs start-query --region us-east-1 --start-time 1729728200 --end-time 1729728215 --query-string "SOURCE logGroups(namePrefix: ['Query']) | fields @message | limit 5"