

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

# メトリクスフィルターの作成
<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
```