メインコンテンツまでスキップ
Sumo Logic Japanese

XML 形式のログのパース

XML オペレータは XPath 1.0 仕様のサブセットを使用して、XML ドキュメントのフィールドをパースできます。このオペレータを使用すると、XPath リファレンスを使用して XML ドキュメントから抽出するフィールドを指定できます。

XML オペレータでパースするには、取り込まれた XML ファイルが適切にフォーマットされており、有効である必要があります。XML が無効な場合は、エラーが発生します。

構文

  • | parse XML [field=<field_name>] "<xpath_expression>"[, "<xpath_expression>"] [as <fields>] [nodrop]

オプション

  • field=<field_name> 

    field=fieldname オプションを使用すると、フィールドを指定して、デフォルト メッセージ以外をパースできます。詳細については、「Parse field」を参照してください。 

  • nodrop 

    nodrop オプションはパース用語のセグメントと一致しないメッセージも結果に含めるようにします。詳細については、「Parse nodrop」を参照してください。

ルール

  • フィールドを指定しないと、受信メッセージのテキスト全体が使用されます。
  • XPath が無効な場合は、エラーが発生します。
  • フィールド名の数が指定された XPath の数と一致しない場合は、エラーが発生します。
  • フィールドが適切な XML 形式ではない場合は、nodrop を指定しない限り Null が返されます。
  • XPath がドキュメント内のどの部分とも一致しない場合は、nodrop を指定しない限り Null が返されます。
  • XPath が要素と一致する場合は、その文字列表現が返されます。
  • XPath が複数の要素と一致する場合は、最初の一致が返されます。

XML ドキュメントのフィールドの抽出

次はドキュメントの例です。

<af type="nursery" id="102" timestamp="Nov 20 04:41:11 2013" intervalms="1089510.533">
<minimum requested_bytes="48" />
<time exclusiveaccessms="0.163" meanexclusiveaccessms="0.163" threads="0" lastthreadtid="0x0000000034520C00" />
<refs soft="40652" weak="35055" phantom="594" dynamicSoftReferenceThreshold="10" maxSoftReferenceThreshold="32" />
<nursery freebytes="0" totalbytes="324978688" percent="0" />
<tenured freebytes="61087704" totalbytes="553484288" percent="11" >
<soa freebytes="33414104" totalbytes="525810688" percent="6" />
<loa freebytes="27673600" totalbytes="27673600" percent="100" />
<refs soft="40619" weak="29867" phantom="586" dynamicSoftReferenceThreshold="10" maxSoftReferenceThreshold="32" />
<time totalms="91.622" />
</af>

次の XPath 参照を使用して、情報を抽出できます。

* | parse XML "/af/@type"

これにより、ルート af 要素の属性 type の値 (nursery) を /af/@type という名前のフィールドに追加します。

結果は次のようになります。

複雑なフィールドの抽出

次のようなクエリを使用します。

* | parse xml "/af/minimum/@requested_bytes"

ルート af/minimum 要素の属性 requested_bytes の値 (リクエストされたバイト数) を /af/minimum@requested_bytes という名前のフィールドに追加します。

複数のフィールドの抽出

次のようなクエリを使用します。

| parse xml "/af/@type", "/af/@timestamp"

ルート af 要素の属性 type と属性 timestamp の値 (それぞれ nursery と Nov 20 04:41:11 2013) を /af/@type および /af/@timestamp という名前のフィールドに追加します。

xml multiple fields results.png

XPath サブセットの制限事項

XPath 1.0 の全仕様はサポートされていません。パフォーマンスの向上のため、Sumo Logic では次の制限を含む仕様のサブセットをサポートしています。

前方のみ

XML オペレータは XML パスのツリーを前方にのみ移動できます。たとえば、次の式は使用できません。

/af/nursery/../@type

場所のフル パス

抽出する要素のフル パスを指定する必要があります。このため、"self-or-descendant" 式は使用できません。たとえば、次のパスは使用できません。

//af

/af//nursery

拡張構文の軸指定子は使用できない

拡張構文は使用できません。たとえば、次の式は使用できません。

/child::af

/desccendant-or-self::af

  • この記事は役に立ちましたか?