parse - Amazon CloudWatch Logs

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

parse

parse を使用して、ログフィールドからデータを抽出し、クエリで処理できる抽出フィールドを作成します。 parse は、ワイルドカードを使用する glob モードと正規表現の両方をサポートします。正規表現の構文の詳細については、「サポートされている正規表現 (regex) 構文」を参照してください。

正規表現を使用してネストされたJSONフィールドを解析できます。

例: ネストされたJSONフィールドの解析

コードスニペットは、取り込み中にフラット化されたJSONログイベントを解析する方法を示しています。

{'fieldsA': 'logs', 'fieldsB': [{'fA': 'a1'}, {'fA': 'a2'}]}

コードスニペットは、fieldsA および fieldsB の値を抽出し、抽出フィールド fld および array を作成する正規表現を含むクエリを示します。

parse @message "'fieldsA': '*', 'fieldsB': ['*']" as fld, array

名前付きキャプチャグループ

正規表現で parse を使用すると、名前付きキャプチャグループを使用してパターンをフィールドに取り込むことができます。構文は parse @message (?<Name>pattern). です。

次の例では、VPCフローログのキャプチャグループを使用して、 を という名前のフィールドに抽出ENIしますNetworkInterface

parse @message /(?<NetworkInterface>eni-.*?) / | display NetworkInterface, @message
注記

JSON ログイベントは取り込み中にフラット化されます。現在、ネストされたJSONフィールドを glob 式で解析することはサポートされていません。解析できるのは、200 個以下のJSONログイベントフィールドを含むログイベントのみです。ネストされたJSONフィールドを解析するときは、JSONログイベントの形式と一致するようにクエリの正規表現をフォーマットする必要があります。

解析コマンドの例

glob 式を使用して、ログフィールド @message から、抽出フィールド @user@method@latency を抽出し、@method および @user との一意の組み合わせごとに平均レイテンシーを返します。

parse @message "user=*, method:*, latency := *" as @user, @method, @latency | stats avg(@latency) by @method, @user

正規表現を使用して、ログフィールド @message から、フィールド @user2@method2@latency2 を抽出し、@method2 および @user2 との一意の組み合わせごとに平均レイテンシーを返します。

parse @message /user=(?<user2>.*?), method:(?<method2>.*?), latency := (?<latency2>.*?)/ | stats avg(latency2) by @method2, @user2

フィールド loggingTimeloggingTypeloggingMessage を抽出し、ERROR または INFO 文字列を含むログイベントをフィルタリングし、ERROR 文字列を含むイベントの loggingMessage および loggingType フィールドのみを表示します。

FIELDS @message | PARSE @message "* [*] *" as loggingTime, loggingType, loggingMessage | FILTER loggingType IN ["ERROR", "INFO"] | DISPLAY loggingMessage, loggingType = "ERROR" as isError