わたしは今個人でだいたい6サーバくらい管理しているのだけど、nginx のログとか集約したり s3 に上げたりいろいろ調理したりしたかったのもあり、ちょうどよさそうなので fluentd に手をだしてみた。
導入先は puppet 管理下の gentoo サーバです。
とりあえず簡単な設定で全ホストから nginx ログをあつめて s3, td とローカルの FS に置くようにしたり、fluentd 経由で bot にツイートさせたりとかできるようにした。
後はなんかいろいろ考えているけど時間ができたらやる。
以下、余談です:
どうインストールしたか
fluentd 自体は rubygem でパッケージングされている、また、設定ファイルは 1 ファイルのみなので以下がまず考えられる:
- Gentoo のパッケージマネージャ portage の ebuild を書いて portage にインストールさせる
- puppet にインストールさせる (exec typeつかってがんばる)
が、fluentd は豊富なプラグインが rubygems でばらばらに提供されていて組み合わせて使う事もあるし、その辺の組合せのバージョン管理とかを考えると bundler をつかってしまうのがよさそうだと思った。
というわけで、bundler で
source "https://rubygems.org" group :cap, :development do gem 'capistrano' end gem "fluentd" gem 'fluent-plugin-forest' gem 'fluent-plugin-rewrite' gem 'fluent-plugin-s3' gem 'fluent-plugin-td' gem 'fluent-plugin-twitter'
みたいなのを書いて、設定ファイル毎 capistrano でデプロイするという手法をとった。
fluentd 自体にその周辺 gem と設定ファイルをまとめてバージョン管理できる上、複数ホストへの適用も puppet いちいち適用するより早いのでおすすめ。
puppet でも fluentd module は用意するけど、それは capistrano の deploy_to のディレクトリやログディレクトリを適切な permission でつくったり、init.d script を置いたりなどのみをする。