指标筛选条件的筛选条件模式语法 - Amazon CloudWatch 日志

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

指标筛选条件的筛选条件模式语法

注意

指标筛选条件与 CloudWatch Logs Insights 查询有何不同

指标筛选条件与 CloudWatch Logs Insights 查询的不同之处在于,每次找到匹配的日志时,都会将指定的数值添加到指标筛选条件中。有关更多信息,请参阅 为指标筛选条件配置指标值

有关如何使用 Amazon CloudWatch Logs Insights 查询语言查询日志组的信息,请参阅 CloudWatch 日志见解查询语法

通用筛选条件模式示例

有关适用于指标筛选条件以及订阅筛选条件筛选日志事件的通用筛选条件模式语法的更多信息,请参阅指标筛选条件、订阅筛选条件和筛选日志事件的筛选条件模式语法,其中包括以下示例:

  • 支持的正则表达式(regex)语法

  • 匹配非结构化日志事件中的字词

  • 匹配 JSON 日志事件中的字词

  • 匹配以空格分隔的日志事件中的字词

指标筛选条件能帮助您搜索和筛选进入 CloudWatch Logs 的日志数据,从筛选的日志数据中提取指标观察结果,并将数据点转换为 CloudWatch Logs 指标。您定义在将日志数据发送到 CloudWatch Logs 时要在其中查找的字词和模式。指标筛选条件将分配给日志组,分配给日志组的所有筛选条件都将应用于其日志流。

指标筛选条件与字词匹配时,它会通过指定的数值来增加指标的计数。例如,您可以创建一个指标筛选条件以计算录入事件中单词 ERROR 出现的次数。

您可以为指标分配度量单位和维度。例如,如果您创建了一个指标筛选条件,该筛选条件计算了单词 ERROR 在您的录入事件中出现的次数,则可以指定名为 ErrorCode 的维度,以显示包含单词 ERROR 的录入事件总数,并按报告的错误代码筛选数据。

提示

为指标分配度量单位时,请确保指定正确的单位。如果稍后更改单位,则您的更改可能无法生效。有关 CloudWatch 支持的单位的完整列表,请参阅《Amazon CloudWatch API Reference》中的 MetricDatum

为指标筛选条件配置指标值

创建指标筛选条件时,您可以定义筛选条件模式并指定指标的值和原定设置值。您可以将指标值设置为数字、命名标识符或数字标识符。如果您没有指定原定设置值,则当指标筛选条件找不到匹配项时,CloudWatch 将不会报告数据。即使该值为 0,也建议您指定原定设置值。设置原定设置值有助于 CloudWatch 更准确地报告数据,并防止 CloudWatch 聚合断点指标。CloudWatch 每分钟聚合和报告指标值。

当您的指标筛选条件在录入事件中找到匹配项时,它会按指标值增加指标的计数。如果指标筛选条件找不到匹配项,则 CloudWatch 会报告该指标的原定设置值。例如,您的日志组每分钟发布两条记录,指标值为 1,原定设置值为 0。如果指标筛选条件在第一分钟内的两个日志记录中均找到了匹配项,则该分钟的指标值为 2。如果指标筛选条件在第二分钟内未找到任何记录中的匹配项,则该分钟的原定设置值为 0。如果将维度分配给指标筛选条件生成的指标,则无法为这些指标指定原定设置值。

您还可以设置指标筛选条件,使用从录入事件中提取的值而不是静态值来增加指标。有关更多信息,请参阅 使用录入事件中的值来增加指标的值

使用来自 JSON 或以空格分隔的录入事件的指标发布维度

您可以使用 CloudWatch 控制台或 AWS CLI 来创建指标筛选条件,该筛选条件使用 JSON 和以空格分隔的录入事件生成的指标来发布维度。维度是名称/值值对,仅适用于 JSON 和以空格分隔的筛选条件模式。您可以创建最多三个维度的 JSON 和以空格分隔的指标筛选条件。有关维度的更多信息以及有关如何将维度分配给指标的信息,请参阅以下各部分:

重要

维度包含收集费用的值,与自定义指标相同。为了防止意外费用,请不要将高基数字段(例如 IPAddressrequestID)指定为维度。

从录入事件中提取的指标按自定义指标收费。为了防止意外的高额费用,如果指标筛选条件为在一定时间内指定的维度生成 1000 个不同的名称/值对,则 Amazon 可能会禁用该指标筛选条件。

您可以创建账单告警,通知您预估费用。有关更多信息,请参阅创建账单告警以监控 AWS 预估费用

以下示例包含描述如何在 JSON 指标筛选条件中指定维度的代码段。

Example: JSON log event
{ "eventType": "UpdateTrail", "sourceIPAddress": "111.111.111.111", "arrayKey": [ "value", "another value" ], "objectList": [ {"name": "a", "id": 1 }, {"name": "b", "id": 2 } ] }
注意

如果您使用示例 JSON 录入事件测试示例指标筛选条件,则必须在单行中输入示例 JSON 日志。

Example: Metric filter

每当 JSON 录入事件包含属性 eventType"sourceIPAddress" 时,指标筛选条件都会增加指标。

{ $.eventType = "*" && $.sourceIPAddress != 123.123.* }

在创建 JSON 指标筛选条件时,您可以将指标筛选条件中的任何属性指定为维度。例如,要设置 eventType 为维度,请使用以下内容:

"eventType" : $.eventType

示例指标包含名为 "eventType" 的维度,并且示例录入事件中维度的值为 "UpdateTrail"

以下示例包含描述如何在以空格分隔的指标筛选条件中指定维度的代码段。

Example: Space-delimited log event
127.0.0.1 Prod frank [10/Oct/2000:13:25:15 -0700] "GET /index.html HTTP/1.0" 404 1534
Example: Metric filter
[ip, server, username, timestamp, request, status_code, bytes > 1000]

当以空格分隔的录入事件包含筛选条件中指定的任何字段时,指标筛选条件将增加指标。例如,指标筛选条件在以空格分隔的录入事件示例中查找以下字段和值。

{ "$bytes": "1534", "$status_code": "404", "$request": "GET /index.html HTTP/1.0", "$timestamp": "10/Oct/2000:13:25:15 -0700", "$username": "frank", "$server": "Prod", "$ip": "127.0.0.1" }

在创建以空格分隔的指标筛选条件时,您可以将指标筛选条件中的任何字段指定为维度。例如,要设置 server 为维度,请使用以下内容:

"server" : $server

示例指标筛选条件包含名为 server 的维度,并且示例录入事件中维度的值为 "Prod"

Example: Match terms with AND (&&) and OR (||)

您可以使用逻辑运算符 AND ("&&") 和 OR ("||") 创建包含条件的以空格分隔的指标筛选条件。以下指标筛选条件会返回日志事件,其中事件中的第一个单词是 ERROR 或 WARN 的任何超字符串。

[w1=ERROR || w1=%WARN%, w2]

使用录入事件中的值来增加指标的值

您可以创建指标筛选条件,该筛选条件会发布在录入事件中找到的数字值。本部分中的过程使用以下示例指标筛选条件来显示可以如何将 JSON 录入事件中的数字值发布到指标。

{ $.latency = * } metricValue: $.latency
创建在录入事件中发布值的指标筛选条件
  1. 访问 https://console.aws.amazon.com/cloudwatch/ 打开 CloudWatch 控制台。

  2. 在左侧导航窗格中,选择 Logs(日志),然后选择 Log groups(日志组)。

  3. 选择或创建日志组。

    有关如何建立日志组的更多信息,请参阅《Amazon CloudWatch Logs 用户指南》中的在 CloudWatch Logs 中创建日志组

  4. 选择 Actions(操作),然后选择 Create metric filter(创建指标筛选条件)。

  5. 对于 Filter Pattern(筛选条件模式),输入 { $.latency = * },然后选择 Next(下一步)。

  6. 对于 Metric Name(指标名称),输入 myMetric

  7. 对于 Metric Value(指标值),输入 $.latency

  8. (可选)对于 Default Value(原定设置值),输入 0,然后选择 Next(下一步)。

    即使该值为 0,也建议您指定原定设置值。设置原定设置值有助于 CloudWatch 更准确地报告数据,并防止 CloudWatch 聚合断点指标。CloudWatch 每分钟聚合和报告指标值。

  9. 选择 Create metric filter(创建指标筛选条件)

示例指标筛选条件与示例 JSON 录入事件中的字词 "latency" 匹配,并将 50 的数字值发布到指标 myMetric

{ "latency": 50, "requestType": "GET" }