

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 指標篩選條件的篩選條件模式語法
<a name="FilterAndPatternSyntaxForMetricFilters"></a>

**注意**  
**指標篩選條件與 CloudWatch Logs Insights 查詢有何不同**  
指標篩選條件與 CloudWatch Logs Insights 查詢的不同之處在於，每次找到相符的日誌時，都會將指定的數值新增至指標篩選條件。如需詳細資訊，請參閱[配置指標篩選條件的指標值](#changing-default-increment-value)。  
如需有關如何使用 Amazon CloudWatch Logs Insights 查詢語言查詢日誌群組的資訊，請參閱 [CloudWatch Logs Insights 語言查詢語法](CWL_QuerySyntax.md)。  
**一般篩選條件模式範例**  
如需適用於指標篩選條件以及[訂閱篩選條件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SubscriptionFilters.html)和[篩選條件日誌事件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SearchDataFilterPattern.html)的一般篩選條件模式語法，請參閱[適用於指標篩選條件、訂閱篩選條件和篩選條件日誌事件的篩選條件模式語法](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html)，其中包括下列範例：  
支援的規則運算式 (regex) 語法
在非結構化日誌事件中比對詞彙
在 JSON 日誌事件中比對詞彙
比對以空格分隔的日誌事件中的詞彙

*指標篩選條件*可讓您搜尋和篩選進入 CloudWatch Logs 的日誌資料、從篩選的日誌資料中擷取指標觀測項目，以及將資料點轉換為 CloudWatch Logs 指標。定義要在傳送至 CloudWatch Logs 的日誌資料中尋找的詞彙和模式。指標篩選條件指派給日誌群組，並且指派給日誌群組的所有篩選條件都會套用於其日誌串流。

當指標篩選條件與某個詞彙相符時，便會以指定的數值增加指標的計數。例如：您可以建立指標篩選條件來搜尋與計算日誌事件中單字 ***ERROR*** (錯誤) 的出現次數。

您可以對指標指派度量單位和維度。例如：如果您建立了一個指標篩選條件，以計算單字 ***ERROR*** (錯誤) 在日誌事件中出現的次數，則可以指定一個名為 `ErrorCode` 的維度，以顯示包含 ***ERROR*** (錯誤) 這個單字的日誌事件總數，並根據回報的錯誤代碼篩選資料。

**提示**  
指派度量單位給指標時，務必指定正確的單位。如果隨後再更改單位，則更改可能無法生效。如需 CloudWatch 支援的單位完整清單，請參閱 Amazon CloudWatch API 參考 中的 [MetricDatum](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_MetricDatum.html)。

**Topics**
+ [配置指標篩選條件的指標值](#changing-default-increment-value)
+ [從 JSON 或空格分隔日誌事件的值中將維度連同指標一起發佈](#logs-metric-filters-dimensions)
+ [使用日誌事件中的值來增加指標的值](#publishing-values-found-in-logs)

## 配置指標篩選條件的指標值
<a name="changing-default-increment-value"></a>

建立指標篩選條件時，您可以定義篩選條件模式，並指定指標的值和預設值。您可以將指標值設置為數字、名稱標識符或數字識別碼。如果您未指定預設值，指標篩選條件找不到相符項目時，CloudWatch 將不會回報資料。我們建議您指定預設值，即使該值為 0。設定預設值有助於 CloudWatch 更準確地回報資料，防止 CloudWatch 彙總起伏不定的指標。CloudWatch 每分鐘彙總並報告指標值。

 指標篩選條件在日誌事件中找到相符項目時，會根據指標值增加指標的計數。如果指標篩選條件未找到相符項目，CloudWatch 會回報指標的預設值。例如：假設有一個日誌群組，每分鐘發佈兩個記錄且指標值為 1，預設值為 0。如果指標篩選條件第一分鐘內，在兩個日誌記錄中找到相符項目，則該分鐘的指標值為 2。如果指標篩選條件第二分鐘內，未在任何一筆記錄中找到相符項目，則該分鐘的預設值為 0。如果將維度分配給指標篩選條件產生的指標，則無法為這些指標指定預設值。

您也可以設置指標篩選條件，使用從日誌事件中擷取的值 (而非靜態值) 來增加指標。如需詳細資訊，請參閱[使用日誌事件中的值來增加指標的值](#publishing-values-found-in-logs)。

## 從 JSON 或空格分隔日誌事件的值中將維度連同指標一起發佈
<a name="logs-metric-filters-dimensions"></a>

您可以使用 CloudWatch 主控台或 AWS CLI 建立指標篩選條件，以使用 JSON 和空格分隔日誌事件產生的指標來發佈維度。維度是名稱/數值配對，僅適用於 JSON 和空格分隔的篩選條件模式。您可以建立最多包含三個維度的 JSON 和空格分隔的指標篩選條件。如需維度以及如何將維度指派給指標的詳細資訊，請參閱下列各節：
+ 《*Amazon CloudWatch 使用者指南*》中的[維度](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Dimension)
+ 《Amazon CloudWatch Logs 使用者指南》**中的[範例：從 Apache 日誌中擷取欄位並指派維度](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/ExtractBytesExample.html)

**重要**  
維度包含與自訂指標相同收費的值。為了避免費用出乎意料，請勿將高基數欄位指定為維度，例如 `IPAddress` 或 `requestID`。  
從日誌事件擷取的指標會以自訂指標收費。為了避免費用意外過高，如果指標篩選條件針對您已指定的維度，在一定時間內產生 1000 個不同的名稱/值組，Amazon 可能會停用該指標篩選條件。  
您可以建立帳單警示，通知您預估的費用。如需詳細資訊，請參閱[建立帳單警示來監控預估的 AWS 費用](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/monitor_estimated_charges_with_cloudwatch.html)。

### 從 JSON 日誌事件將維度連同指標一起發佈
<a name="logs-metric-filters-JSON"></a>

下列範例程式碼片段描述如何在 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"`。

------

### 從空格分隔日誌事件將維度連同指標一起發佈
<a name="logs-metric-filters-dimensions-space-delimited"></a>

下列範例程式碼片段，描述如何在空格分隔的指標篩選條件中指定維度。

------
#### [ 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 (\$1\$1) ]

您可以使用邏輯運算子邏輯與 ("&&") 和邏輯或 ("\$1\$1") 建立包含條件的空格分隔的指標篩條件。下列指標篩選條件會傳回第一個單字為 ERROR 或 WARN 超級字串的日誌事件。

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

------

## 使用日誌事件中的值來增加指標的值
<a name="publishing-values-found-in-logs"></a>

您可以建立指標篩選條件來發佈日誌事件中找到的數值。本節中的過程中使用下列範例指標篩選條件，來示範如何將 JSON 日誌事件中的數值發佈到指標。

```
{ $.latency = * } metricValue: $.latency
```

**建立在日誌事件中發佈的值的指標篩選條件**

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中，選擇 **Logs** (日誌)，然後選擇 **Log groups** (日誌群組)。

1. 選擇或建立日誌群組。

   如需詳細資訊，請參閱*《Amazon CloudWatch Logs 使用者指南》*中的[在 CloudWatch Logs 中建立日誌群組](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)。

1. 選擇 **Actions **(動作)，然後選擇 **Create metric filter **(建立指標篩選條件)。

1. 針對 **Filter Pattern** (篩選條件模式)，輸入 **\$1 \$1.latency = \$1 \$1**，然後選擇 **Next** (下一步)。

1. 針對 **Metric Name** (指標名稱)，輸入 **myMetric**。

1. 針對 **Metric Value (指標值)**，輸入 **\$1.latency**。

1. (選用) 針對 **Default Value** (預設值)，輸入 **0**，然後選擇 **Next** (下一步)。

   我們建議您指定預設值，即使該值為 0。設定預設值有助於 CloudWatch 更準確地回報資料，防止 CloudWatch 彙總起伏不定的指標。CloudWatch 每分鐘彙總並報告指標值。

1. 選擇 **Create metric filter (建立指標篩選條件)**。

指標篩選條件的範例與 JSON 日誌事件範例中的詞彙 `"latency"` 相符，並將數值 50 發佈到指標 **myMetric**。

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