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