fluentd > 複数行のログを処理する方法
更新日
2014-09-07
広告
通常、fluentdは、ログファイルを一行ずづ処理します。
しかし、複数行をまとめて処理したい場合があります。
PostgreSQLの例
PostgreSQLで、実行されたクエリをログ出力すると、以下のように、複数行で出力されます。2014-04-10 10:30:00 JST LOG: statement: SELECT d.datname as "Name", pg_catalog.pg_get_userbyid(d.datdba) as "Owner", (中略) pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges" FROM pg_catalog.pg_database d ORDER BY 1;これを、1つのログとみなしてfluentdで処理するには、専用のプラグインが必要です。
$ sudo /usr/lib/fluent/ruby/bin/fluent-gem install fluent-plugin-tail-multilinefluentdの設定は、例えば、以下のようにします。
<source> type tail_multiline tag postgres.multi.log path /var/log/postgresql.log format /^(?<time>\d{4}-\d{1,2}-\d{1,2} \d{1,2}:\d{1,2}:\d{1,2}) (.*)$/ time_format %Y-%m-%d %H:%M:%S </source>ちなみに、以下の方法でプラグインをインストールしても、fluentd (td-agent)に認識されませんでした。
$ sudo gem install fluent-plugin-tail-multiline
広告
お問い合わせは sweng.tips@gmail.com まで。