

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

# 示例：从 Apache 日志中提取字段并分配维度
<a name="ExtractBytesExample"></a>

有时，使用各个日志事件中的值而不是使用计数作为指标值非常有用。此示例介绍如何创建提取规则，以创建衡量 Apache Web 服务器传输的字节数的指标。

此示例还展示了如何将维度分配给您正在创建的指标。

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

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

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

1. 选择 Apache 服务器的日志组的名称。

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

1. 对于 **Filter pattern（筛选条件模式）**，输入 **[ip, id, user, timestamp, request, status\$1code, size]**。

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

1. 选择 **Next（下一步）**，然后对于 **Filter name（筛选条件名称）**，键入 **size**。

1. 在 **Metric Details（指标详细信息）**下，对于 **Metric namespace（指标命名空间）**，输入 **MyNameSpace**。因为这是一个新的命名空间，请确保已选中**新建**。

1. 对于 **Metric name（指标名称）**，输入 **BytesTransferred**

1. 对于 **Metric value（指标值）**，输入 **\$1size**。

1. 对于 **Unit（单位）**，选择 **Bytes（字节）**。

1. 对于 **Dimension Name（维度名称）**，键入 **IP**。

1. 对于 **Dimension Value（维度值）**，键入 **\$1ip**，然后选择 **Next（下一步）**。

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

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

```
aws logs put-metric-filter \
--log-group-name MyApp/access.log \
 --filter-name BytesTransferred \
 --filter-pattern '[ip, id, user, timestamp, request, status_code, size]' \
 --metric-transformations  \
 metricName=BytesTransferred,metricNamespace=MyNamespace,metricValue='$size'
```

```
aws logs put-metric-filter \
--log-group-name MyApp/access.log \
--filter-name BytesTransferred \
--filter-pattern '[ip, id, user, timestamp, request, status_code, size]' \
--metric-transformations  \
metricName=BytesTransferred,metricNamespace=MyNamespace,metricValue='$size',unit=Bytes,dimensions='{{IP=$ip}}'
```

**注意**  
在此命令中，使用此格式指定多个维度。  

```
aws logs put-metric-filter \
--log-group-name my-log-group-name \
--filter-name my-filter-name \
--filter-pattern 'my-filter-pattern' \
--metric-transformations  \
metricName=my-metric-name,metricNamespace=my-metric-namespace,metricValue=my-token,unit=unit,dimensions='{dimension1=$dim,dimension2=$dim2,dim3=$dim3}'
```

您可以在 put-log-event通话中使用以下数据来测试此规则。如果不删除前例中的监控规则，则会生成两个不同的指标。

```
127.0.0.1 - - [24/Sep/2013:11:49:52 -0700] "GET /index.html HTTP/1.1" 404 287
127.0.0.1 - - [24/Sep/2013:11:49:52 -0700] "GET /index.html HTTP/1.1" 404 287
127.0.0.1 - - [24/Sep/2013:11:50:51 -0700] "GET /~test/ HTTP/1.1" 200 3
127.0.0.1 - - [24/Sep/2013:11:50:51 -0700] "GET /favicon.ico HTTP/1.1" 404 308
127.0.0.1 - - [24/Sep/2013:11:50:51 -0700] "GET /favicon.ico HTTP/1.1" 404 308
127.0.0.1 - - [24/Sep/2013:11:51:34 -0700] "GET /~test/index.html HTTP/1.1" 200 3
```