翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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
フィールド loggingTime
、loggingType
、loggingMessage
を抽出し、ERROR
または INFO
文字列を含むログイベントをフィルタリングし、ERROR
文字列を含むイベントの loggingMessage
および loggingType
フィールドのみを表示します。
FIELDS @message | PARSE @message "* [*] *" as loggingTime, loggingType, loggingMessage | FILTER loggingType IN ["ERROR", "INFO"] | DISPLAY loggingMessage, loggingType = "ERROR" as isError