

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# フィルターを使用したログイベントからのメトリクスの作成
<a name="MonitoringLogData"></a>

1 つまたは複数の*メトリクスフィルター*を作成することで、CloudWatch Logs で受信するログデータを検索およびフィルタリングできます。メトリクスフィルタは CloudWatch Logs に送信されたログデータを検索するための語句とパターンを定義します。CloudWatch Logs は、これらのメトリクスフィルタを使用して、ログデータを数値の CloudWatch メトリクスに変換し、グラフを作成したり、アラームを設定したりできます。

ログフィルターからメトリクスを作成するときに、ディメンションと単位をメトリクスに割り当てることもできます。単位を指定する場合は、フィルターの作成時に必ず正しい単位を指定してください。フィルターの単位を後で変更しても何も起こりません。

メンバーアカウントを設定 AWS Organizations して操作している場合は、ログの一元化を使用して、ソースアカウントから中央モニタリングアカウントにログデータを収集できます。

一元化されたロググループを使用する場合は、メトリクスフィルターを作成する際にこれらのシステムフィールドのディメンションを使用できます。
+ `@aws.account` - このディメンションは、ログイベントの発生元の AWS アカウント ID を表します。
+ `@aws.region` - このディメンションは、ログイベントが生成された AWS リージョンを表します。

これらのディメンションはログデータのソースを特定するのに役立ちます。これにより、一元化されたログから派生したメトリクスのフィルタリングと分析をさらに細かく行えるようになります。詳細については、「[クロスアカウントクロスリージョンログの一元化](CloudWatchLogs_Centralization.md)」を参照してください。

サブスクリプションを持つロググループがログ変換を使用する場合、フィルターパターンは変換されたバージョンのログイベントに適用されます。詳細については、「[取り込み中のログの変換](CloudWatch-Logs-Transformation.md)」を参照してください。

**注記**  
メトリクスフィルターは、標準ログクラスのロググループでのみサポートされます。ログクラスの詳細については、「[ログクラス](CloudWatch_Logs_Log_Classes.md)」を参照してください。

これらのメトリクスを表示する、またはアラームを設定するときは、パーセンタイル統計など、任意のタイプの CloudWatch 統計を使用できます。

**注記**  
パーセンタイル統計は、メトリクスの値がいずれも負でない場合にのみメトリクスでサポートされます。負の数を報告できるようにメトリクスフィルタを設定した場合、値に負の数があると、パーセンタイル統計はそのメトリクスで使用できません。詳細については、[パーセンタイル](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Percentiles)を参照してください。

フィルターは、遡及的にデータをフィルターしません。フィルターは、フィルターが作成された後に発生したイベントのメトリクスのデータポイントをパブリッシュするだけです。フィルターパターンをテストすると、検証を目的として一致するログ行が **[フィルター結果]** のプレビューに最初の 50 行まで表示されます。フィルターされた結果のタイムスタンプがメトリクスの作成時刻より前の場合、ログは表示されません。

**Topics**
+ [概念](#search-filter-concepts)
+ [メトリクスフィルターのフィルターパターン構文](FilterAndPatternSyntaxForMetricFilters.md)
+ [メトリクスフィルターの作成](MonitoringPolicyExamples.md)
+ [メトリクスフィルターの一覧表示](ListingMetricFilters.md)
+ [メトリクスフィルターの削除](DeletingMetricFilter.md)

## 概念
<a name="search-filter-concepts"></a>

各メトリクスフィルターは以下のキー要素で構成されています。

**デフォルト値**  
ログが取り込まれたものの一致するログが見つからなかった期間中にメトリクスフィルターに報告された値。この値を 0 に設定することで、データはこのような各期間の間にも報告されるため、一致するデータがない期間がある「むらがある」メトリクスを回避できます。1 分間の期間内に取り込まれたログがない場合は、値は報告されません。  
メトリクスフィルターによって作成されたメトリクスにディメンションを割り当てると、そのメトリクスにデフォルト値を割り当てることはできません。

**ディメンション**  
ディメンションは、メトリクスをさらに定義するキーと値のペアです。メトリクスフィルターから作成されたメトリクスにディメンションを割り当てることができます。ディメンションはメトリクスの一意の識別子の一部であるため、ログから一意の名前/値のペアが抽出されるたびに、そのメトリクスの新しいバリエーションが作成されます。

**フィルタパターン**  
各ログイベントのデータを CloudWatch Logs がどのように解釈するかについての記号による説明です。例えば、ログエントリにはタイムスタンプ、IP アドレス、文字列などが含まれる可能性があります。パターンを使用して、ログファイルの検索対象を指定します。

**メトリクス名**  
モニタリングされたログ情報が発行される CloudWatch メトリクスの名前です。例えば、ErrorCount というメトリクスに発行できます。

**メトリクス名前空間**  
新しい CloudWatch メトリクスの送信先名前空間です。

**メトリクス値**  
一致するログが見つかるたびにメトリクスに発行する数値。例えば、「Error」など特定の語句の発生回数をカウントする場合、その値は発生するごとに「1」になります。転送されたバイト数をカウントする場合は、ログイベントに見つかった実際のバイト数で増分できます。

# メトリクスフィルターのフィルターパターン構文
<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 ログに入力されるログデータを検索およびフィルタリングし、フィルタリングされたログデータからメトリクス観測データを抽出し、データポイントを CloudWatch ログメトリクスに変換できます。ユーザーは、CloudWatch ログに送信されるログデータを検索するための語句とパターンを定義します。メトリクスフィルターはロググループに割り当てられ、ロググループに割り当てられたすべてのフィルターはそのログストリームに適用されます。

メトリクスフィルターが語句と一致するとき、メトリクスの数を特定の数値で増えます。例えば、ログイベントの中で ***ERROR*** という単語の出現回数を数えるメトリクスフィルターを作成します。

メトリクスに測定の単位と寸法を割り当てることができます。例えば、ログイベント内で **[*ERROR]*** という単語の出現回数を数えるメトリクスフィルターを作成する場合、**[*ERROR*]** という単語が含まれるログイベントの合計数を示す `ErrorCode` というディメンションを指定し、レポートされたエラーコードでデータをフィルタリングすることができます。

**ヒント**  
測定の単位をメトリクスに割り当てるとき、必ず正しい単位を指定してください。後で単位を変更すると、変更が有効にならない場合があります。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 は、1 分ごとにメトリクス値を集計してレポートします。

 メトリクスフィルターがログイベント内で一致するものを見つけたら、メトリクスの数がメトリクスの値だけ増加します。メトリクスフィルターで一致が見つからない場合、CloudWatch はメトリクスのデフォルト値をレポートします。例えば、ロググループが毎分 2 つのレコードを公開し、メトリクス値は 1 で、デフォルト値は 0 であるとします。最初の 1 分で両方のログレコードに一致が見つかった場合、その分のメトリクス値は 2 になります。次の 1 分間にどちらのレコードでも一致が見つからなかった場合、その分のデフォルト値は 0 となります。メトリクスフィルターが生成するメトリクスにディメンションを割り当てると、それらのメトリクスのデフォルト値を指定することはできません。

また、静的値ではなく、ログイベントから抽出された値でメトリクスを増分するようにメトリクスフィルターを設定することもできます。詳細については、「[ログイベントの値を使用してメトリクスの値を増分する](#publishing-values-found-in-logs)」を参照してください。

## JSON の値またはスペース区切りログイベントからメトリクスとともにディメンションを発行する
<a name="logs-metric-filters-dimensions"></a>

CloudWatch コンソールまたは AWS CLI を使用して、JSON およびスペース区切りのログイベントが生成するメトリクスを使用してディメンションを発行するメトリクスフィルターを作成できます。ディメンションとは名前と値のペアであり、JSON およびスペース区切りフィルターパターンでのみ使用できます。最大 3 つのディメンションを持つ JSON およびスペース区切りメトリクスフィルターを作成できます。ディメンションの詳細とディメンションをメトリクスに割り当てる方法の詳細については、以下のセクションを参照してください。
+ 「Amazon CloudWatch ユーザーガイド**」の「[Dimensions](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Dimension)」
+ 「Amazon CloudWatch Logs ユーザーガイド[https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/ExtractBytesExample.html](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/ExtractBytesExample.html)」の「*例: Apache ログからフィールドを抽出してディメンションを割り当てる*」

**重要**  
ディメンションには、カスタムメトリクスと同じ請求を収集する値が含まれています。不測の請求を防ぐため、`IPAddress` または `requestID` などをディメンションとするなど、高カーディナリティフィールドを指定しないでください。  
メトリクスをログイベントから抽出すると、カスタムメトリクスとして料金が発生します。意図しない高額請求の徴収を防ぐため、Amazon は、特定の時間内に指定したディメンションのために 1000 の異なる名前と値のペアを生成した場合、メトリクスフィルターを無効化することがあります。  
見積費用を通知する請求アラームを作成できます。詳細については、「[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 ログを 1 行で入力する必要があります。

------
#### [ 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) ]

論理演算子 AND (「&&」) および OR (「\$1\$1」) を使用して、条件を含むスペース区切りメトリクスフィルターを作成できます。次のメトリクスフィルターでは、イベントの最初の単語が ERROR (エラー)または WARN (警告)の超文字列としてログイベントが返されます。

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

------

## ログイベントの値を使用してメトリクスの値を増分する
<a name="publishing-values-found-in-logs"></a>

ログイベントで見つかった数値を公開するメトリクスフィルターを作成できます。このセクションの手順では、次のサンプルメトリクスフィルターを使用して、JSON ログイベントの数値をメトリクスに公開する方法を示します。

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

**ログイベントの値を発行するメトリクスフィルターを作成するには**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. ナビゲーションペインで、**[ログ]**、**[ロググループ]** の順に選択します。

1. ロググループを選択または作成します。

   ロググループの作成手順については、「Amazon CloudWatch Logs ユーザーガイド**」の「[CloudWatch Logs にロググループを作成する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)」を参照してください。

1. [**アクション**]、[**メトリクスフィルターの作成**] の順に選択します。

1. [**Filter Pattern**] (フィルターパターン) に **\$1 \$1.latency = \$1 \$1** と入力し、[**Next**] (次へ) を選択します。

1. [**Metric Name**] (メトリクス名) に、「**myMetric**」と入力します。

1. [**メトリクス値**] に「**\$1.latency**」と入力します。

1. [**Default Value**] (デフォルト値) に **0** と入力し、[**Next**] (次へ) を選択します。

   値が 0 であっても、デフォルト値を指定することをお勧めします。デフォルト値を設定すると、CloudWatch がデータをより正確にレポートし、CloudWatch がむらがあるメトリクスを集計するのを防ぐことができます。CloudWatch は、1 分ごとにメトリクス値を集計してレポートします。

1. **[Create metric filter]** (メトリクスフィルターの作成) を選択します。

サンプルメトリクスフィルターは、語句 `"latency"` をサンプル JSON ログイベントで照合し、数値 50 をメトリクスの **[myMetric]** に発行します。

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

# メトリクスフィルターの作成
<a name="MonitoringPolicyExamples"></a>

以下の手順は、メトリクスフィルターの作成方法を示しています。

**Topics**
+ [ロググループのメトリクスフィルターの作成](CreateMetricFilterProcedure.md)
+ [例: ログイベントのカウント](CountingLogEventsExample.md)
+ [例: 語句の出現回数をカウントする](CountOccurrencesExample.md)
+ [例: HTTP 404 コードをカウントする](Counting404Responses.md)
+ [例: HTTP 4xx コードをカウントする](FindCountMetric.md)
+ [例: Apache ログからフィールドを抽出してディメンションを割り当てる](ExtractBytesExample.md)

# ロググループのメトリクスフィルターの作成
<a name="CreateMetricFilterProcedure"></a>

ロググループのメトリクスフィルターを作成するには、次の手順に従います。メトリクスは、データポイントがいくつか見つかるまで表示されません。

**CloudWatch コンソールを使用してメトリクスフィルターを作成するには**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1.  ナビゲーションペインで、**[ログ]**、**[ロググループ]** の順に選択します。

1.  ロググループの名前を選択します。

1.  [`Actions`]、[**メトリクスフィルターの作成**] の順に選択します。

1.  [**フィルターパターン**] に、フィルターパターンを入力します。詳細については、「[メトリクスフィルター、サブスクリプションフィルター、フィルターログイベント、およびライブテールのフィルターパターン構文](FilterAndPatternSyntax.md)」を参照してください。

1.  (オプション) 一元化されたロググループを使用している場合は、[**フィルター選択基準**] で、ソースアカウント (`@aws.account`)、ソースリージョン (`@aws.region`)、またはその両方の条件に基づいてフィルターを指定できます。

1.  (オプション) フィルターパターンをテストするには、[**テストパターン**] に、パターンをテストする 1 つまたは複数のログイベントを入力します。各ログイベントは 1 行にフォーマットする必要があります。改行は、[**ログイベントメッセージ**] ボックスのログイベントを区切るために使用されます。

1.  [**次へ**] を選択し、メトリクスフィルターの名前を入力します。

1.  [**Metric details (メトリクスの詳細)**] の [**Metric namespace (メトリクス名前空間)**] で、メトリクスを発行する CloudWatch 名前空間の名前を入力します。名前空間がまだ存在しない場合は、[**新規作成**] が選択されていることを確認します。

1.  [**メトリクス名**] に、新しいメトリクスの名前を入力します。

1.  メトリクスフィルターでフィルター内のキーワードの出現回数をカウントする場合は、[**メトリクス値**] に「1」と入力します。これにより、キーワードの 1 つを含むログイベントごとに、メトリクスが 1 ずつ増加します。

    または、**\$1size** などのトークンを入力します。これにより、`size` フィールドを含むすべてのログイベントについて、`size` フィールド内の数値だけメトリクスが増加します。

1.  (オプション) [**Unit**] (単位) で、メトリクスに割り当てる単位を選択します。単位を指定しない場合、単位は `None` に設定されます。

1.  (オプション) メトリクスの 3 つのディメンションの名前とトークンを入力します。メトリクスフィルターが生成するメトリクスにディメンションを割り当てると、それらのメトリクスのデフォルト値を指定することはできません。
**注記**  
 ディメンションは、JSON またはスペース区切りメトリクスフィルターでのみサポートされます。

1.  **[Create metric filter]** (メトリクスフィルターの作成) を選択します。ナビゲーションペインから作成したメトリクスフィルターを見つけることができます。[**Logs**] を選択し、**ロググループ**を選択します。メトリクスフィルターを作成したロググループの名前を選択し、[**メトリクスフィルター**] タブを選択します。

# 例: ログイベントのカウント
<a name="CountingLogEventsExample"></a>

ログイベントのモニタリングで最もシンプルなタイプは、発生したログのイベント数のカウントです。目的はすべてのイベントのカウントや、「ハートビート」形式のモニタリングの作成、あるいは単にメトリクスフィルターの作成練習の場合もあります。

次の CLI の例では、MyAppAccessCount というメトリクスフィルタをロググループ MyApp/access.log に適用して、CloudWatch の名前空間 MyNamespace にメトリクス EventCount を生成します。フィルタは、すべてのログイベントコンテンツに一致し、メトリクスを 1 ずつ増加させるように設定されています。

**CloudWatch コンソールを使用してメトリクスフィルタを作成するには**

1. CloudWatch コンソール ([https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)) を開きます。

1. ナビゲーションペインで、[**Log groups**] (ロググループ) を選択します。

1. ロググループの名前を選択します。

1. `Actions`、[**メトリクスフィルターの作成**] を選択します。

1. [**フィルターパターン**] および [**テストするログデータの選択**] は空白のままにします。

1. [**次へ**] を選択し、[**フィルター名**] に **EventCount** と入力します。

1. [**メトリクスの詳細**] の [**メトリクス名前空間**] に、「**MyNameSpace**」と入力します。

1. [**メトリクス名**] に「**MyAppEventCount**」と入力します。

1. [**メトリクス値**] が 1 であることを確認します。これにより、各ログイベントのカウントは 1 ずつ増分されます。

1. [**デフォルト値**] に 0 と入力し、[**次へ**] を選択します。デフォルト値を指定すると、ログイベントが発生しない期間でもデータが報告され、データが存在しないことがある、むらのあるメトリクスを回避できます。

1. [**メトリクスフィルターの作成**] を選択します。

**を使用してメトリクスフィルターを作成するには AWS CLI**  
コマンドプロンプトで、次のコマンドを実行します。

```
aws logs put-metric-filter \
  --log-group-name MyApp/access.log \
  --filter-name EventCount \
  --filter-pattern " " \
  --metric-transformations \
  metricName=MyAppEventCount,metricNamespace=MyNamespace,metricValue=1,defaultValue=0
```

イベントデータを投稿することで、この新しいポリシーをテストできます。メトリクス MyAppAccessEventCount に発行されたデータポイントを参照する必要があります。

**を使用してイベントデータを投稿するには AWS CLI**  
コマンドプロンプトで、次のコマンドを実行します。

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

# 例: 語句の出現回数をカウントする
<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. CloudWatch コンソール ([https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)) を開きます。

1. ナビゲーションペインで、[**Log groups**] (ロググループ) を選択します。

1. ロググループの名前を選択します。

1. [**アクション**]、[**メトリクスフィルターの作成**] の順に選択します。

1. [**フィルターパターン**] に **Error** と入力します。
**注記**  
[**フィルターパターン**] のすべての項目は大文字と小文字が区別されます。

1. (オプション) フィルターパターンをテストするには、[**テストパターン**] に、パターンのテストに使用する 1 つまたは複数のログイベントを入力します。[**ログイベントメッセージ**] ボックスのログイベントを区切るために改行が使用されるため、各ログイベントは 1 行以内である必要があります。

1. [**次へ**] を選択し、[**メトリクスの割り当て**] ページの [**フィルター名**] に **MyAppErrorCount** と入力します。

1. [**メトリクスの詳細**] の [**メトリクス名前空間**] に、「**MyNameSpace**」と入力します。

1. [**メトリクス名**] に「**ErrorCount**」と入力します。

1. [**メトリクス値**] が 1 であることを確認します。これにより、「Error」を含む各ログイベントのカウントは 1 ずつ増分されます。

1. [**デフォルト値**] に 0 と入力し、[**次へ**] を選択します。

1. [**メトリクスフィルターの作成**] を選択します。

**を使用してメトリクスフィルターを作成するには 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"
```

# 例: HTTP 404 コードをカウントする
<a name="Counting404Responses"></a>

CloudWatch Logs を使用して、Apache サーバーが HTTP 404 レスポンス（ページが見つからない場合のレスポンスコード）を返した数をモニタリングできます。サイトの訪問者が目的のリソースを見つけられなかった頻度を理解するためにモニタリングする場合があります。ログレコードが各ログイベント (サイト訪問) に関する次の情報を含むように設定されている前提です。
+ 要求者の IP アドレス
+ RFC 1413 ID
+ Username
+ タイムスタンプ
+ リクエスト方法およびリクエストされたリソースとプロトコル
+ リクエストに対する HTTP レスポンスコード
+ リクエストで転送されたバイト数

例は次のようになります。

```
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 404 2326
```

以下の例に示すように、HTTP 404 エラーの構造にイベントが一致するようにルールを指定できます。

**CloudWatch コンソールを使用してメトリクスフィルタを作成するには**

1. CloudWatch コンソール ([https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)) を開きます。

1. ナビゲーションペインで、[**Log groups**] (ロググループ) を選択します。

1. `Actions`、[**メトリクスフィルターの作成**] を選択します。

1. [**フィルターパターン**] には **[IP, UserInfo, User, Timestamp, RequestInfo, StatusCode=404, Bytes]** と入力します。

1. (オプション) フィルターパターンをテストするには、[**テストパターン**] に、パターンのテストに使用する 1 つまたは複数のログイベントを入力します。[**ログイベントメッセージ**] ボックスのログイベントを区切るために改行が使用されるため、各ログイベントは 1 行以内である必要があります。

1. [**次へ**] を選択し、[**フィルター名**] に **HTTP404Errors** と入力します。

1. [**メトリクスの詳細**] の [**メトリクス名前空間**] に、**MyNameSpace** と入力します。

1. [**メトリクス名**] に、**ApacheNotFoundErrorCount** を入力します。

1. [**メトリクス値**] が 1 であることを確認します。これにより、各 404 エラーイベントのカウントは 1 ずつ増分されます。

1. [**デフォルト値**] に 0 と入力し、[**次へ**] を選択します。

1. [**メトリクスフィルターの作成**] を選択します。

**を使用してメトリクスフィルターを作成するには AWS CLI**  
コマンドプロンプトで、次のコマンドを実行します。

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

この例では、右角括弧や左角括弧、二重引用符、および文字列 404 のようなリテラル文字列が使用されていました。このパターンでは、ログイベントをモニタリングするにはログイベントメッセージ全体が一致する必要があります。

**describe-metric-filters** コマンドを使用して、メトリクスフィルターの作成を検証できます。このような出力が表示されます。

```
aws logs describe-metric-filters --log-group-name MyApp/access.log

{
    "metricFilters": [
        {
            "filterName": "HTTP404Errors", 
            "metricTransformations": [
                {
                    "metricValue": "1", 
                    "metricNamespace": "MyNamespace", 
                    "metricName": "ApacheNotFoundErrorCount"
                }
            ], 
            "creationTime": 1399277571078, 
            "filterPattern": "[ip, id, user, timestamp, request, status_code=404, size]"
        }
    ]
}
```

これでイベントをいくつか手動で投稿できます。

```
aws logs put-log-events \
--log-group-name MyApp/access.log --log-stream-name hostname \
--log-events \
timestamp=1394793518000,message="127.0.0.1 - bob [10/Oct/2000:13:55:36 -0700] \"GET /apache_pb.gif HTTP/1.0\" 404 2326" \
timestamp=1394793528000,message="127.0.0.1 - bob [10/Oct/2000:13:55:36 -0700] \"GET /apache_pb2.gif HTTP/1.0\" 200 2326"
```

サンプルログイベントを入力してすぐに、CloudWatch コンソールで ApacheNotFoundErrorCount という名前のメトリクスを取得できます。

# 例: HTTP 4xx コードをカウントする
<a name="FindCountMetric"></a>

前の例と同じように、ウェブサービスアクセスログをモニタリングしたり HTTP 応答コードレベルをモニタリングする場合があります。例えば、HTTP 400 レベルのエラーをすべてモニタリングする場合です。ただし、それぞれのリターンコードに 1 つずつ新しいメトリクスフィルターを指定したくない場合があります。

以下の例は、「[例: HTTP 404 コードをカウントする](Counting404Responses.md)」の例の Apache アクセスログ形式を使用して、アクセスログから 400 レベルの HTTP コードレスポンスを含むメトリクスを作成する方法を示しています。

**CloudWatch コンソールを使用してメトリクスフィルタを作成するには**

1. CloudWatch コンソール ([https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)) を開きます。

1. ナビゲーションペインで、[**Log groups**] (ロググループ) を選択します。

1. Apache サーバーのロググループの名前を選択します。

1. `Actions`、[**メトリクスフィルターの作成**] を選択します。

1. [**フィルターパターン**] に「**[ip, id, user, timestamp, request, status\$1code=4\$1, size]**」と入力します。

1. (オプション) フィルターパターンをテストするには、[**テストパターン**] に、パターンのテストに使用する 1 つまたは複数のログイベントを入力します。[**ログイベントメッセージ**] ボックスのログイベントを区切るために改行が使用されるため、各ログイベントは 1 行以内である必要があります。

1. [**次へ**] を選択し、[**フィルター名**] に「**HTTP4xxErrors**」と入力します。

1. [**メトリクスの詳細**] の [**メトリクス名前空間**] に、「**MyNameSpace**」と入力します。

1. [**メトリクス名**] に、「**HTTP4xxErrors**」と入力します。

1. [**メトリクス値**] に「1」と入力します。これにより、4xx エラーを含む各ログイベントのカウントは 1 ずつ増分されます。

1. [**デフォルト値**] に「0」と入力し、[**次へ**] を選択します。

1. [**メトリクスフィルターの作成**] を選択します。

**を使用してメトリクスフィルターを作成するには AWS CLI**  
コマンドプロンプトで、次のコマンドを実行します。

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

put-event 呼び出しの次のデータを使用してこのルールをテストできます。前の例のモニタリングのルールを削除していない場合は、2 つの異なるメトリクスを生成します。

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

# 例: Apache ログからフィールドを抽出してディメンションを割り当てる
<a name="ExtractBytesExample"></a>

カウントの代わりに、個別のログイベント内の値をメトリクス値に使用する方が役に立つ場合があります。この例では、Apache ウェブサーバーが転送したバイト数を計測するメトリクスを作成する抽出ルールの作成方法を示しています。

この例では、作成するメトリクスにディメンションを割り当てる方法も示します。

**CloudWatch コンソールを使用してメトリクスフィルタを作成するには**

1. CloudWatch コンソール ([https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)) を開きます。

1. ナビゲーションペインで、[**Log groups**] (ロググループ) を選択します。

1. Apache サーバーのロググループの名前を選択します。

1. `Actions`、[**メトリクスフィルターの作成**] を選択します。

1. [**フィルターパターン**] に「**[ip, id, user, timestamp, request, status\$1code, size]**」と入力します。

1. (オプション) フィルターパターンをテストするには、[**テストパターン**] に、パターンのテストに使用する 1 つまたは複数のログイベントを入力します。[**ログイベントメッセージ**] ボックスのログイベントを区切るために改行が使用されるため、各ログイベントは 1 行以内である必要があります。

1. [**次へ**] を選択し、[**フィルター名**] に「**size**」と入力します。

1. [**メトリクスの詳細**] の [**メトリクス名前空間**] に、「**MyNameSpace**」と入力します。これは新しい名前空間であるため、[**新規作成**] が選択されていることを確認してください。

1. [**メトリクス名**] に、「**BytesTransferred**」と入力します。

1. [**メトリクス値**] に「**\$1size**」と入力します。

1. [**Unit**] (単位) で、[**Bytes**] (バイト) を選択します。

1. [**Dimension Name**] (ディメンション名) で、**IP** と入力します。

1. [**Dimension Value**] (ディメンションの値) に、**\$1ip** と入力し、[**Next**] (次へ) を選択します。

1. [**メトリクスフィルターの作成**] を選択します。

**を使用してこのメトリクスフィルターを作成するには 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 呼び出しの次のデータを使用してこのルールをテストできます。前の例のモニタリングルールを削除していない場合は、2 つの異なるメトリクスを生成します。

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

# メトリクスフィルターの一覧表示
<a name="ListingMetricFilters"></a>

ロググループ内のメトリクスフィルタを一覧表示できます。

**CloudWatch コンソールを使用してメトリクスフィルタを一覧表示するには**

1. CloudWatch コンソール ([https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)) を開きます。

1. ナビゲーションペインで、[**Log groups**] (ロググループ) を選択します。

1. コンテンツペインのロググループのリストで、[**メトリクスフィルター**] 列でフィルター数を選択します。

   [**ロググループ > フィルター**] 画面にそのロググループに関連付けられたすべてのメトリクスフィルターが一覧表示されます。

**を使用してメトリクスフィルターを一覧表示するには AWS CLI**  
コマンドプロンプトで、次のコマンドを実行します。

```
aws logs describe-metric-filters --log-group-name MyApp/access.log
```

出力例を次に示します。

```
{
    "metricFilters": [
        {
            "filterName": "HTTP404Errors", 
            "metricTransformations": [
                {
                    "metricValue": "1", 
                    "metricNamespace": "MyNamespace", 
                    "metricName": "ApacheNotFoundErrorCount"
                }
            ], 
            "creationTime": 1399277571078, 
            "filterPattern": "[ip, id, user, timestamp, request, status_code=404, size]"
        }
    ]
}
```

# メトリクスフィルターの削除
<a name="DeletingMetricFilter"></a>

ポリシーは、名前と所属するロググループで識別されます。

**CloudWatch コンソールを使用してメトリクスフィルタを削除するには**

1. CloudWatch コンソール ([https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)) を開きます。

1. ナビゲーションペインで、[**Log groups**] (ロググループ) を選択します。

1. コンテンツペインの [**メトリクスフィルター**] 列で、ロググループのメトリクスフィルター数を選択します。

1. [**メトリクスフィルター**] 画面で、削除するフィルター名の右側にあるチェックボックスをオンにします。その後、[**Delete**] を選択します。

1. 確認を求めるメッセージが表示されたら、[**Delete**] を選択します。

**を使用してメトリクスフィルターを削除するには AWS CLI**  
コマンドプロンプトで、次のコマンドを実行します。

```
aws logs delete-metric-filter --log-group-name MyApp/access.log \
 --filter-name MyFilterName
```