NGからFluentdへレコードを出力するにははじめにクリアコードではFluentdというソフトウェアの開発に参加しています。Fluentdはログ収集や収集したデータの分配・集約などを行うソフトウェアです。fluent-loggerと呼ばれるFluentdへデータを転送出来る実装が各言語で公開されています。NGというものもあります。NGにはデータの入力とデータの出力のAPIが公開されており、プラグインを実装することが可能です。NGの場合はそれぞれ入力がSource、出力がSinkと呼ばれています。NGに対してもサードパーティがプラグインを公開しています。NGのjarが公開しているAPIを使用できる言語なら好きなものを使う事ができます。NGプラグインも存在します。FlumeのSinkでは次のメソッドを実装することが必要です。NGはJavaで実装されている上に、特段他の言語を採用する理由が見当たらなかったのでJavaで実装しました。ビルドツールにはGradleを使用しました。リポジトリはこちらです。Javaのfluent-loggerにはfluent-logger-javaが存在しますが、より速いと謳っているfluencyをfluent-loggerとして用いる事にしました。FlumeのSinkとして作成をしてみると以下の利点がある事が分かりました。Sinkの中でTransactionが発行出来るTransactionが発行出来るため、FlumeのconfでtransactionCapacityで指定した分だけトランザクションを実行出来るという点です。このため、設定によっては安全に転送する事が出来ます。実行して作成されたflume-ng-fluentd-sink-${version}-all.jarを配置し、confを書くだけです。以下に配置することでも使う事ができます。NGを使っていて、Fluentdに送れる機能が欲しいなぁという方にはぜひ試して頂きたいです。なくてもJavaでこうした方が良いですよ、というものでもPRして下されば取り込みますのでよろしくお願いします。4.0とGFDLのデュアルライセンスで自由に利用できます。クリアコードはプログラミングが楽しいソフトウェア開発者を1名募集しています。クリアコードは「クリアコードをいい感じにする人」を1名募集しています。クリアコードはフリーソフトウェア開発で培った技術力を提供しています。Thunderbird)とRubyとGroonga(全文検索)に関連した開発を得意としています。