Born Too Late

Yuya's old tech blog.

fluentd の設定を Ruby の DSL で書けるようにしてみた

2013-01-13 13:16:57

あけましておめでとうございます。
年末年始は実家にも帰らず、Kindle Paperwhite で本を読みあさったり、Hulu でプリティーリズムオーロラドリームを視て泣いたり、小林賢太郎の公演を DVD で視て笑ったり、あとは近所の土手を走ったりしてきました。
1km あたり 4 分をなかなか切れずにいます。

そんな感じでインプット中心に年末年始を過ごしてしまったわけですが、そろそろアウトプット期に転換していこうということで、みんな大好き fluentd に以下のような Pull Request を送ってみました。

Config DSL by yuya-takeyama · Pull Request #97 · fluent/fluentd

今のところ Proof of Concept レベルで、マージをお願いできるようなレベルにはなってないと思います。
こういうのどうっすかね、という感じで識者の皆様にコメントなど賜りたいと思っている次第です。

とりあえずは既存の設定ファイルも今まで通り使えるように、fluentd 起動時の -c オプションで指定した設定ファイルの拡張子が .rb だったときだけ、DSL として解釈するようになってます。

これによって fluent.conf は以下のような fluent.conf.rb として書けるようになります。

また、複数のサーバに転送する場合など、イテレータを使えれば、コピペ要らずで DRY な感じの記述ができます。

他にも、対象サーバの一覧を REST API から取得する、みたいな感じにしてみれば、fluentd のクラスタ構成の変更をする際は、サーバリストを管理するサーバに情報を登録して、各クラスタにシグナルを送って再起動すれば反映される、みたいな自動化も柔軟にできるんじゃないでしょうか。

さて、私自身は今のところ fluentd を使っているわけではなかったりします。
ここ最近はデータ分析・閲覧のための基盤を MongoDB や GrowthForecast 等を使って構築しているのですが、各サーバ感のログのやり取りが日次で rsync、という具合で、いちいち設定が面倒な上に、リアルタイム製にも欠けてしまいます。
そういう問題を解決する上で fluentd はすごく便利そうなので、今年はアレコレ調べたり contribute していければと思っている次第です。

それでは皆様今年もよろしくお願い致します。