

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

# 示例：对字词的出现次数进行计数
<a name="CountOccurrencesExample"></a>

日志事件经常包含您需要计数的重要消息，可能是关于操作的成功或失败的消息。例如，如果给定操作失败，可能发生错误，且错误记录到日志文件中。您可能需要监控这些日志条目以了解错误发生趋势。

在以下示例中，创建了一个指标筛选条件来监控“Error”这个词。策略已创建并添加到日志组 **MyApp/message.log**。 CloudWatch 对于每个包含 Error 的事件，Logs 会 ErrorCount 在 **MyApp/message.log** 命名空间中向 CloudWatch自定义指标发布一个数据点，其值为 “1”。如果没有任何事件包含“Error”这个单词，则发布值 0。在 CloudWatch 控制台中绘制这些数据时，请务必使用总和统计数据。

创建指标筛选条件后，可以在 CloudWatch 控制台中查看该指标。选择要查看的指标时，请选择与日志组名称匹配的指标命名空间。有关更多信息，请参阅[查看可用指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html)。

**使用 CloudWatch 控制台创建指标筛选器**

1. 打开 CloudWatch 控制台，网址为[https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)。

1. 在导航窗格中，选择**日志组**。

1. 选择日志组的名称。

1. 选择 **Actions（操作）**、**Create metric filter（创建指标筛选条件）**。

1. 对于 **Filter pattern（筛选条件模式）**，输入 **Error**。
**注意**  
**Filter Pattern（筛选条件模式）**中的所有条目都区分大小写。

1. （可选）要测试您的筛选条件模式，请在 **Test Pattern（测试模式）**下，输入一个或多个用于测试模式的日志事件。每个日志事件必须位于一行内，因为换行符用于在 **Log event messages（日志事件消息）**框中分隔日志事件。

1. 选择 **Next（下一步）**，然后在 **Assign metric（分配指标）**页上，对于 **Filter Name（筛选条件名称）**，键入 **MyAppErrorCount**。

1. 在 **Metric Details（指标详细信息）**下，为 **Metric Namespace（指标命名空间）**键入 **MyNameSpace**。

1. 对于 **Metric Name（指标名称）**，键入 **ErrorCount**。

1. 确认 **Metric Value（指标值）** 为 1。这指定对于每个包含“Error”的日志事件，计数以 1 累加。

1. 对于 **Default Value（默认值）**，键入 0，然后选择 **Next（下一步）**。

1. 选择 **Create metric filter（创建指标筛选条件）**。

**要使用创建指标筛选器 AWS CLI**  
在命令提示符处，运行以下命令：

```
aws logs put-metric-filter \
  --log-group-name MyApp/message.log \
  --filter-name MyAppErrorCount \
  --filter-pattern 'Error' \
  --metric-transformations \
      metricName=ErrorCount,metricNamespace=MyNamespace,metricValue=1,defaultValue=0
```

您可以通过在消息中发布包含“Error”这个词的事件来测试此新策略。

**要使用发布活动 AWS CLI**  
在命令提示符处，运行以下 命令。注意，模式区分大小写。

```
aws logs put-log-events \
  --log-group-name MyApp/access.log --log-stream-name TestStream1 \
  --log-events \
    timestamp=1394793518000,message="This message contains an Error" \
    timestamp=1394793528000,message="This message also contains an Error"
```