fluentdはRubyで書かれたsyslogdのようなロギングミドルウェア。様々なログをネットワーク上で色々ルーティングして、たとえば最終的にMongoDBに登録したりすることができる。
fluentdをインストールして使ってみる。 インストールはgemで一発。
$ gem install fluentd
fluentdを起動するには、作業ディレクトリを作ってコマンドで設定ファイルを作成する。起動はfluentdを-cオプションでキックする。
$ fluentd --setup ./fluent $ cd fluent $ fluentd -c conf/fluent.conf
動作確認は別コンソールで次のように打ち込むと、先ほどのコンソールにログが出力される。
$ echo '{"json":"message"}' | fluent-cat debug.test
ここまでは公式サイトと同内容。 次に、テキストファイルをtailのようにウォッチして、fluentdに転送してみる。 conf/fluent.confを次のように記述する。
<source> type tail path /path/to/test.log tag debug.* format /^(?<log>.*)$/ </source> <match debug.**> type stdout </match>
ここで、sourceディレクティブのtagはどのmatchディレクティブにログをルーティングするかを決めるためのキーとなる。RabbitMQのルーティングキーと同じ感じ。formatディレクティブは、出力形式を正規表現で設定する。このとき、マッチした箇所に?<name>で名前を付ける。上記例だとlogという名前にしてる。
この状態でfluentdを起動して/path/to/test.logに追記すると、コンソールにログが出力される。
$ echo test >> /path/to/test.log