fluent-plugin-multi-format-parser
一つのログファイルの中に複数のフォーマットがある時に利用可能なパーサプラグイン書きました.
使い方
fluent-gemでインストール.
1
|
|
インストールすると,TextParserを利用しているin_tail
やin_udp
などでmulti_format
が使えるようになります.
そこで<pattern>
を複数並べてください.<pattern>
内の各設定は,利用するパーサにそのまま渡されます.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
<pattern>
を上から順番に試し,パース出来たらその結果を返します.上の設定例だと,最初にapache
,次にjson
,最後にnone
になります.
たとえば,以下のようなログ群をin_udp
に流すと
192.168.0.1 - - [28/Feb/2013:12:00:00 +0900] "GET / HTTP/1.1" 200 777
{"k1":"v", "k2":123456}
foobar
以下のように処理されます.
2013-02-28 12:00:00 +0900 test.**: {"host":"192.168.0.1","user":"-","method":"GET","path":"/","code":"200","size":"777"}
2014-07-13 20:56:55 +0900 test.**: {"k":"v","k1":123456}
2014-07-13 20:56:55 +0900 test.**: {"message":"foobar"}
まとめ
ログファイルの中に複数のフォーマットが混じるのは望ましいことではないのですが,どうしてもそういう状況が起きるときには,使ってみてください.
あと,実装はかなり単純なので,パーサプラグインのサンプルにでもしてもらえればと思います.
何か要望があればissue/pull requestに投げてもらえれば対応します.