メトリックスフィルターのフィルターパターン構文 - Amazon CloudWatch Logs

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

メトリックスフィルターのフィルターパターン構文

注記

メトリクスフィルターと CloudWatch Logs Insights クエリの違い

一致するログが見つかるたびに、指定された数値がメトリックスフィルターに追加されるという点において、メトリックスフィルターは CloudWatch Logs Insights クエリと異なります。詳細については、「メトリクスフィルターのメトリクス値を設定する」を参照してください。

Amazon CloudWatch Logs Insights のクエリ言語でロググループをクエリする方法については、CloudWatch Logs Insights 言語クエリ構文 を参照してください。

[一般的なフィルターパターンの例]

メトリックスフィルターの他に、サブスクリプションフィルターフィルターログイベントに適用される汎用フィルターパターン構文の詳細については、次の例を含むメトリックスフィルター、サブスクリプションフィルター、フィルターログイベントのフィルターパターン構文を参照してください。

  • サポートされている正規表現 (regex) 構文

  • 非構造化ログイベントでの語句の一致

  • JSON ログイベントの語句の一致

  • スペース区切りのログイベントの語句一致

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

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

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

ヒント

測定の単位をメトリックスに割り当てるとき、必ず正しい単位を指定してください。後で単位を変更すると、変更が有効にならない場合があります。CloudWatch がサポートする単位の詳細なリストについては、「Amazon CloudWatch API リファレンス」の「MetricDatum」を参照してください。

メトリクスフィルターのメトリクス値を設定する

メトリクスフィルターを作成する際は、フィルターパターンを定義し、メトリクス値とデフォルト値を指定します。メトリクス値は、数値、名前付き識別子、または数値識別子に設定できます。デフォルト値を指定しないと、メトリクスフィルターで一致するものが見つからない場合、CloudWatch はデータをレポートしません。値が 0 であっても、デフォルト値を指定することをお勧めします。デフォルト値を設定すると、CloudWatch がデータをより正確にレポートし、CloudWatch がむらがあるメトリクスを集計するのを防ぐことができます。CloudWatch は、1 分ごとにメトリクス値を集計してレポートします。

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

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

JSON の値またはスペース区切りログイベントからメトリクスとともにディメンションを発行する

CloudWatch コンソールまたは CLI AWS を使用して、JSON およびスペース区切りのログイベントが生成するメトリクスを使用してディメンションを発行するメトリクスフィルターを作成できます。ディメンションとは名前と値のペアであり、JSON およびスペース区切りフィルターパターンでのみ使用できます。最大 3 つのディメンションを持つ JSON およびスペース区切りメトリクスフィルターを作成できます。ディメンションの詳細とディメンションをメトリクスに割り当てる方法の詳細については、以下のセクションを参照してください。

重要

ディメンションには、カスタムメトリクスと同じ請求を収集する値が含まれています。予期せぬ請求を防ぐため、IPAddress または requestID などをディメンションとするなど、高カーディナリティフィールドを指定しないでください。

メトリクスをログイベントから抽出すると、カスタムメトリクスとして料金が発生します。意図しない高額請求の徴収を防ぐため、Amazon は、特定の時間内に指定したディメンションのために 1000 の異なる名前と値のペアを生成した場合、メトリクスフィルターを無効化することがあります。

見積費用を通知する請求アラームを作成できます。詳細については、「予想AWS 請求額をモニタリングするための請求アラームの作成」を参照してください。

次の例には、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" です。

次の例には、スペース区切りのメトリクスフィルターでディメンションを指定する方法を説明するコードスニペットが含まれています。

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 (||)

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

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

ログイベントの値を使用してメトリクスの値を増分する

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

{ $.latency = * } metricValue: $.latency
ログイベントの値を発行するメトリクスフィルターを作成するには
  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

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

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

    ロググループの作成手順については、「Amazon CloudWatch Logs ユーザーガイド」の「CloudWatch Logs にロググループを作成する」を参照してください。

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

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

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

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

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

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

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

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

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