名前のついたフィールドを生成するすべてのパーサに共通オプションを構成することができます。

フィールド名の予約語

フィールド名には制限があります。次の名前は予約されているため、フィールド名としては使用できません。

  • event_type
  • hostname
  • source
  • text

パーサの共通オプション

次の表のオプションは、サポートされているすべてのパーサで使用できます。

オプション 説明
base_parser

このカスタム パーサが拡張するベース パーサの名前。組み込みのパーサ名か、別のカスタム パーサ名にできます。この構成キーは必須です。

field_decoder
JSON 文字列として指定されたネストされたパーサ。キーはネストされたパーサが適用されるフィールドの名前で、値はそのフィールドに使用されるパーサの名前です。ネストされたパーサは、ベース パーサによってデコードされた、それぞれの対応するフィールドに適用されます。タイムスタンプなどフィールドの値が複雑な場合、フィールド デコーダが便利です。 field_decoder オプションは引数としてより複雑な JSON オブジェクトもサポートし、ネストされたパーサが適用される前にチェックされる特定のフィールド値の条件を使用できます。
注: 使用方法と条件付き構成の詳細については、以下の「field_decoder オプションの条件付き構成」を参照してください。
field_rename

抽出したフィールド名を変更します。キーがフィールドの元の名前、値がフィールドの新しい名前の JSON 文字列を使用します。field_decoder オプションは常に、field_rename の前に適用されます。オプションの INI ファイル内での順序は重要ではありません。分かりやすくするため、field_decoderを先に指定します。

next_parser

次に実行するパーサの名前。1 回の入力で複数のパーサの連続実行を可能にします。

注: パーサは、 next_parserキーワードで定義されたすべての連続したパーサを処理し、前のパーサによって抽出済みのフィールド値を置き換えることができます。
exclude_fields

サーバへの配信前にイベントから削除するフィールド名のリスト(セミコロン区切り)。フィールド名は、解析中に除外するフィールドがフィルタ条件で使用できないようにするために、イベント フィルタリングの実行前に削除されます。

debug

特定のパーサのデバッグを有効にする Yes または No オプション。デバッグが有効になると、パーサは受信した入力、実行した操作、生成した結果の詳細をログに記録します。このオプションはセクションごとに、つまり特定のセクションで定義されたパーサのみに適用されます。

パーサに対する debug のデフォルト値は debug=no です。

field_decoder オプションの条件付き構成

特定のフィールド値に関連する共通フォーマットが同じで差異が大きい場合、たとえば info および error の重大度を含むログの場合、条件付きのネストされたパーサを使用して、すでに解析済みログの対応するフィールドへの不要なパーサの適用を減らすことができます。

たとえば、次のログを使用するとします。
2019-03-29T11:00:54.858Z host-FQDN Hostd: error hostd[2099230] [Originator@6876 sub=Default opID=1983bdbe-c1-800f user=admin.user] AdapterServer caught exception: SSLExceptionE(SSL Exception: error:140000DB:SSL routines:SSL routines:short read: The connection was closed by the remote end during handshake.)
2019-03-29T11:00:55.477Z host-FQDN Hostd: info hostd[6D620B70] ['commonhost' opID=5759adcc-cf] [transportConnector] -- FINISH task-internal-5726666 -- -- Completed connection restart -- 

次の構成を使用してログを解析できます。

[parser|clf_parser]
base_parser=clf
format=%t %{generator_host}i %i: %{log_severity}i %i[%{thread_id}i]%M
field_decoder={"log_message" : {"log_severity" : {"error" : "error_parser", "info" : "info_parser"}}}
exclude_fields=log_message

[parser|info_parser]
base_parser=clf
format=[%{common_info}i] [%{process}i] %M
field_rename={"log_message" : "info_log_content"}

[parser|error_parser]
base_parser=clf
format=[%{common_info}i] %{exception_handler}i %i:%{exception_type}i:%i:%{error_id}i:%i:%i:%i: %M
field_rename={"log_message" : "exception_content"}

この構成では、次の結果が生成されます。

timestamp=2019-03-29T11:00:54.858000 generator_host="host-FQDN" log_severity="error" thread_id="2099230" common_info=Originator@6876 sub=Default opID=1983bdbe-c1-800f user=admin.user exception_handler="AdapterServer" exception_type="SSLExceptionE(SSL Exception" error_id="140000DB" exception_content="The connection was closed by the remote end during handshake.)"

さらに、info ログに対して以下のフィールドが解析されます。

timestamp=2019-03-29T11:00:55.477000 generator_host="host-FQDN" log_severity="info" thread_id="6D620B70" log_message="['commonhost' opID=5759adcc-cf] [transportConnector] -- FINISH task-internal-5726666 -- -- Completed connection restart --" common_info="'commonhost' opID=5759adcc-cf" process="transportConnector" info_log_content="-- FINISH task-internal-5726666 -- -- Completed connection restart --"