

# 在 CloudWatch 中创建 Contributor Insights 规则
<a name="ContributorInsights-CreateRule"></a>

您可创建规则以分析日志数据。可以评估任何采用 JSON 或常用日志格式 (CLF) 的日志。这包括遵循这些格式之一的自定义日志以及来自 AWS 服务的日志，例如 Amazon VPC 流日志、Amazon Route 53 DNS 查询日志、Amazon ECS 容器日志以及来自 AWS CloudTrail、Amazon SageMaker AI、Amazon RDS、AWS AppSync 和 API Gateway 的日志。

在规则中指定字段名称或值时，所有匹配都区分大小写。

在创建规则时，您可以使用内置示例规则，也可以从 Scratch 创建自己的规则。Contributor Insights 包括以下日志类型的示例规则：
+ Amazon API Gateway 日志
+ Amazon Route 53 公有 DNS 查询日志
+ Amazon Route 53 resolver 查询日志
+ CloudWatch Container Insights 日志
+ VPC 流日志

如果您登录的账户在 CloudWatch 跨账户可观测性中设置为监控账户，则除了为该监控账户中的日志组创建规则外，您可以为与该监控账户关联的源账户中的日志组创建 Contributor Insights 规则。您还可以设置单个规则来监控不同账户中的日志组。有关更多信息，请参阅 [CloudWatch 跨账户可观测性](CloudWatch-Unified-Cross-Account.md)。

**重要**  
当您向用户授予 `cloudwatch:PutInsightRule` 权限时，默认情况下，该用户可以创建一个规则来评估 CloudWatch Logs 中的任何日志组。您可以添加 IAM 策略条件，以限制用户的这些权限，使其包含和排除特定的日志组。有关更多信息，请参阅 [使用条件键限制 Contributor Insights 用户对日志组的访问](iam-cw-condition-keys-contributor.md)。

**要使用内置示例规则创建规则，请执行以下操作：**

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 打开 CloudWatch 控制台。

1. 在导航窗格中，选择**日志**、**Contributor Insights**。

1. 选择 **Create rule**（创建规则）。

   

1.  对于 **Select log group(s)**（选择日志组），请选择您希望您的规则监控的日志组。您可以选择多达 20 个日志组。如果您登录的账户是为 CloudWatch 跨账户可观测性设置的监控账户，则可以选择源账户中的日志组，也可以设置单个规则来分析不同账户中的日志组。

   1.  （可选）要选择名称以特定字符串开头的所有日志组，请选择 **Select by prefix match**（按前缀匹配选择）下拉菜单，然后输入前缀。如果这是监控账户，则可以选择要在其中进行搜索的账户，否则将选择所有账户。
**注意**  
 您需要为与您的规则匹配的每个日志事件支付费用。如果您选择 **Select by prefix match**（按前缀匹配选择）下拉菜单，请注意前缀可以匹配多少个日志组。如果您搜索了超出预期数量的日志组，可能会产生意外费用。有关更多信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing)。

1. 对于 **Rule type**（规则类型），选择 **Sample rule**（示例规则）。然后选择 **Select sample rule**（选择示例规则），并选择相应的规则。

1. 对于**日志格式**，请选择规则会评估的日志格式。

1. 对于**转换器**，请选择**启用转换器 Contributor Insights**，以便在经 [CloudWatch Logs 日志转换](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Transformation.html.html)处理后，让规则对日志事件进行评估。如果选择启用此功能：
   + 如果规则会评估任何具有转换器的日志组，则该规则将应用于日志的转换版本。
   + 如果该规则会评估任何没有转换器的日志组，则该规则将应用于日志的原始版本。

   如果不选择此选项，则将对所有日志组中的原始日志事件进行评估，包括经日志转换功能转换的日志事件。
**注意**  
如果日志组具有转换器且某些日志事件转换失败，Contributor Insights 则不会评估这些日志事件。有关调查日志转换失败的信息，请参阅 [Transformation metrics and errors](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Transformation-Errors-Metrics.html)。

1.  所选示例规则已填写**日志格式**、**贡献**、**筛选条件**和**聚合**字段。您可以根据需要对这些值进行调整。

1. 选择**下一步**。

1. 为 **Rule name (规则名称)** 输入一个名称。有效字符包括 A-Z、a-z、0-9、（连字符）、（下划线）和（半角句点）。

1. 选择是创建处于已禁用状态还是已启用状态的规则。如果您选择启用规则，它将立即开始对您的数据进行分析。运行启用的规则时，您需要支付费用。有关更多信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/)。

   Contributor Insights 仅在创建规则后分析新的日志事件。规则无法处理之前已由 CloudWatch Logs 处理的日志事件。

1. （可选）对于 **Tags**（标签），请添加一个或多个键/值对作为此规则的标签。标签可帮助您识别和组织 AWS 资源并跟踪 AWS 成本。有关更多信息，请参阅 [标记 Amazon CloudWatch 资源](CloudWatch-Tagging.md)。

1. 选择**创建**。

**要从 Scratch 创建规则，请执行以下操作：**

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 打开 CloudWatch 控制台。

1. 在导航窗格中，选择**日志**、**Contributor Insights**。

1. 选择 **Create rule**（创建规则）。

   

1.  对于 **Select log group(s)**（选择日志组），请选择您希望您的规则监控的日志组。您可以选择多达 20 个日志组。如果您登录的账户是为 CloudWatch 跨账户可观测性设置的监控账户，则可以选择源账户中的日志组，也可以设置单个规则来分析不同账户中的日志组。

   1.  （可选）要选择名称以特定字符串开头的所有日志组，请选择 **Select by prefix match**（按前缀匹配选择）下拉菜单，然后输入前缀。
**注意**  
 您需要为与您的规则匹配的每个日志事件支付费用。如果您选择 **Select by prefix match**（按前缀匹配选择）下拉菜单，请注意前缀可以匹配多少个日志组。如果您搜索了超出预期数量的日志组，可能会产生意外费用。有关更多信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing)。

1. 对于 **Rule type**（规则类型），请选择 **Custom rule**（自定义规则）。

1. 对于 **Log format (日志格式)**，请选择 **JSON** 或 **CLF**。

1. 对于**转换器**，请选择**启用转换器 Contributor Insights**，以便在经 [CloudWatch Logs 日志转换](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CloudWatch-Logs-Transformation.html.html)处理后，让规则对日志事件进行评估。如果选择启用此功能：
   + 如果规则会评估任何具有转换器的日志组，则该规则将应用于日志的转换版本。
   + 如果该规则会评估任何没有转换器的日志组，则该规则将应用于日志的原始版本。

   如果不选择此选项，则将对所有日志组中的原始日志事件进行评估，包括经日志转换功能转换的日志事件。
**注意**  
如果日志组具有转换器且某些日志事件转换失败，Contributor Insights 则不会评估这些日志事件。有关调查日志转换失败的信息，请参阅 [Transformation metrics and errors](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Transformation-Errors-Metrics.html)。

1. 您可以通过以下方式完成规则的创建过程：使用向导，或选择 **Syntax (语法)** 选项卡并手动指定规则语法。

   要继续使用此向导，请执行以下操作：

   1. 对于 **Contribution (贡献)**、**Key (键)**，请输入要报告的贡献者类型。此报告将显示该贡献者类型的前 N 个值。

      有效条目为任何具有值的日志字段。示例包括 **requestId**、**sourceIPaddress** 和 **containerID**。

      有关查找特定日志组中日志的日志字段名称的信息，请参阅[查找日志字段](#finding_log_fields)。

      大于 1 KB 的键将被截断至 1KB。

   1. （可选）选择 **Add new key**（添加新键）以添加更多键。可以在规则中包含最多四个键。如果输入多个键，则报告中的贡献者将由键的唯一值组合定义。例如，如果您指定三个键，则三个键的每个唯一值组合将被计为一个独特贡献者。

   1. （可选）如果要添加筛选条件以缩小结果范围，请选择 **Add filter**（添加筛选条件）。对于 **Match**（匹配），输入要作为筛选条件的日志字段的名称。对于 **Condition**（条件），选择比较运算符，并输入要作为筛选条件的值。

      您可以在规则中最多添加 4 个筛选条件。多个筛选条件通过 AND 逻辑联接，因此，仅返回与所有筛选条件都匹配的日志事件。
**注意**  
遵循比较运算符的数组（例如 `In`、`NotIn` 或者 `StartsWith`）可以包含最多 10 个字符串值。有关 Contributor Insights 规则语法的更多信息，请参阅 [CloudWatch 中的 Contributor Insights 规则语法](ContributorInsights-RuleSyntax.md)。

   1. 对于 **Aggregate on（聚合）**，选择 **Count（计数）**或 **Sum（总计）**。选择 **Count（计数）**会使贡献者排名基于出现次数。选择 **Sum（总计）**会使排名基于您为 **Contribution（贡献）**、**Value（值）**指定的字段值的总和。

1. 要输入规则作为 JSON 对象而不是使用此向导，请执行以下操作：

   1. 选择 **Syntax (语法)** 选项卡。

   1. 在 **Rule body (规则正文)** 中，输入规则的 JSON 对象。有关规则语法的信息，请参阅 [CloudWatch 中的 Contributor Insights 规则语法](ContributorInsights-RuleSyntax.md)。

1. 选择**下一步**。

1. 为 **Rule name (规则名称)** 输入一个名称。有效字符为 A-Z、a-z、0-9、“-”、“\_”和“.”。

1. 选择是创建处于已禁用状态还是已启用状态的规则。如果您选择启用规则，它将立即开始对您的数据进行分析。运行启用的规则时，您需要支付费用。有关更多信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/)。

   Contributor Insights 仅在创建规则后分析新的日志事件。规则无法处理之前已由 CloudWatch Logs 处理的日志事件。

1. （可选）对于 **Tags**（标签），请添加一个或多个键/值对作为此规则的标签。标签可帮助您识别和组织 AWS 资源并跟踪 AWS 成本。有关更多信息，请参阅 [标记 Amazon CloudWatch 资源](CloudWatch-Tagging.md)。

1. 选择**下一步**。

1. 确认您输入的设置，然后选择 **Create rule**（创建规则）。

可以禁用、启用或删除已创建的规则。

**在 Contributor Insights 中启用、禁用或删除规则**

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 打开 CloudWatch 控制台。

1. 在导航窗格中，选择**日志**、**Contributor Insights**。

1. 在规则列表中，选中单个规则旁边的复选框。

   内置规则由 AWS 服务创建，无法编辑、禁用或删除这些规则。

1. 选择 **Actions (操作)**，然后选择所需选项。<a name="finding_log_fields"></a>

**查找日志字段**

创建规则时，您需要知道日志组的日志条目中的字段名称。

**查找日志组中的日志字段**

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 打开 CloudWatch 控制台。

1. 在导航窗格中的 **Logs (日志)** 下，选择 **Insights (见解)**。

1. 在查询编辑器上方，选择要查询的一个或多个日志组。

   当您选择日志组时，CloudWatch Logs Insights 会自动检测日志组数据中的字段，并将其显示在右侧窗格中的 **Discovered fields（发现的字段）**中。