

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

# 範例：計算詞彙的出現次數
<a name="CountOccurrencesExample"></a>

日誌事件經常包含您想要計數，或是有關操作成功或失敗操作的重要訊息。例如，若指定的操作失敗，錯誤可能會發生且系統會將該錯誤記錄到日誌檔。您可能想要監控這些項目，以了解錯誤的趨勢。

在下例中，建立指標篩選條件來監控「Error」詞彙。政策已建立並新增到日誌群組 **MyApp/message.log**。CloudWatch Logs 會將資料點發佈至 **MyApp/message.log** 命名空間中的 CloudWatch 自訂指標 ErrorCount，針對每個包含 Error 的事件，值為 "1"。如果事件不包含單字「Error」，則會發佈值 0。在 CloudWatch 主控台中製作此資料的圖表時，請務必使用總和統計。

建立指標篩選條件後，您可以在 CloudWatch 主控台中檢視指標。選取要檢視的指標時，請選取符合日誌群組名稱的指標命名空間。如需詳細資訊，請參閱[檢視可用的指標](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html)。

**使用 CloudWatch 主控台建立指標篩選條件**

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

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

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
```

您可以透過張貼在訊息中包含「錯誤」單字的事件來測試這個新政策。

**使用 發佈事件 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"
```