Fluentd UIが出たので触ってみた
fluent/fluentd-ui https://github.com/fluent/fluentd-ui
Fluentd用のWeb UIが出たようです。試しに触ってみます。
インストール
READMEのとおりですが、
$ gem install fluentd-ui $ fluentd-ui start Open http://localhost:9292/ by your browser default account is username="admin" and password="changeme"
もしくは、
$ git clone https://github.com/treasure-data/fluentd-ui
$ cd fluentd-ui
$ bundle install
$ bundle exec rails s
です。
僕はbundlerでいれることにしました。
-> % bundle exec rails s => Booting Puma => Rails 4.1.4 application starting in development on http://0.0.0.0:3000 => Run `rails server -h` for more startup options => Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option) => Ctrl-C to shutdown server Puma 2.8.2 starting... * Min threads: 0, max threads: 16 * Environment: development * Listening on tcp://0.0.0.0:3000
起動するとログイン画面が出てきます。デフォルト設定はusername: admin, password: changeme です。
ログインするとこんな感じで立ち上がります。
早速触ってみます。まずはfluentdをインストールします。
インストールされましたね。続いて設定をしていきます。こんな感じに今Fluentdがどこからデータを読み取り、どこに出力しようとしているのかがわかりやすく表示されてます。
では実際にファイルの入力について編集していきます。入力の「ファイル」をクリックすると、どこからファイルを読み取るかを選択する画面が出てきます。
ここでは /var/log/system.log
を読み取ることにしました。こんな感じでログをpreviewすることができます。
次にファイルを読み取る際の設定をします。ここでは、「どんなフォーマットとしてログを読み取るか」という設定をすることができます。この画面はわかりやすくて便利ですね。今回はsyslog形式なので、formatをsyslog
にしています。
これで無事設定が変更されました。生成された設定は以下のとおりです。
<source> # http://docs.fluentd.org/articles/in_forward type forward port 24224 </source> <source> # http://docs.fluentd.org/articles/in_http type http port 9880 </source> <source> type monitor_agent port 24220 </source> <source> type debug_agent port 24230 </source> <match debug.*> # http://docs.fluentd.org/articles/out_stdout type stdout </match> <source> type tail path /var/log/system.log tag syslog.test format syslog time_format %b %d %H:%M:%S pos_file /tmp/fluentd--1406888587.pos </source>
更新するとfluentdが再起動されて設定がreloadされます。fluentd自体の起動logをみてみましょう。
ちゃんとtailされているようです。試しにMongoDBにいれてみます。デフォルトではプラグインは入っていないので、いれてみます。これもFluentd UI上から行うことができます。MongoDB用のプラグインをいれてみましょう。インストールボタンを押せば設定できます。
インストール済みのプラグインはこんな感じで閲覧できます。
設定も追加してみます。mongoの設定は画面から行うことができます。「ソースと出力先の設定」の画面から「MongoDB」をクリックするとこんな感じで設定画面が開きます。
設定は結果的にこんな感じになりました。
<match syslog.test> type mongo host 127.0.0.1 port 27017 database fluentd collection test capped capped_size 100m </match>
設定を追加すると勝手にfluentdがreloadされます。mongo側をみてみましょう。*1
-> % all output going to: /usr/local/var/log/mongodb/mongo.log mongo MongoDB shell version: 2.4.8 connecting to: test Welcome to the MongoDB shell. For interactive help, type "help". For more comprehensive documentation, see http://docs.mongodb.org/ Questions? Try the support group http://groups.google.com/group/mongodb-user Server has startup warnings: Fri Aug 1 19:49:01.275 [initandlisten] Fri Aug 1 19:49:01.275 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000 > show dbs; fluentd 0.140625GB
fluentdのdbができてますね。queryしてみます。
# 以下mongo shell > use fluentd; switched to db fluentd > db.test.find() { "_id" : ObjectId("53db72001df33a7e96000001"), "host" : "xxx", "ident" : "SystemUIServer", "pid" : "425", "message" : "Impossible to find range of h or H in date format.", "time" : ISODate("2014-08-01T10:54:34Z") } { "_id" : ObjectId("53db723d1df33a7e96000002"), "host" : "xxx", "ident" : "SystemUIServer", "pid" : "425", "message" : "Impossible to find range of h or H in date format.", "time" : ISODate("2014-08-01T10:55:34Z") } { "_id" : ObjectId("53db727a1df33a7e96000003"), "host" : "xxx", "ident" : "SystemUIServer", "pid" : "425", "message" : "Impossible to find range of h or H in date format.", "time" : ISODate("2014-08-01T10:56:34Z") }
ちゃんとはいってますね。*2
所感
- さくっとローカルにfluentdの環境作っていろいろプラグイン入れたりログを試しにいれてみたい、というときにさくっとできて良い
- fluentd本体のインストールやfluentdのプラグインも簡単に入れることができる
- アプリケーションログをつくるのは手間がかかるけれど、
- in_tailのUIが便利
- どんなログを読もうとしているかをプレビューしつつ、tailの設定を書くことができる
- 実際にどんな風にログが読み取られるかも見つつ、設定を調整することができる。素敵。
- http://fluentular.herokuapp.com/ で試せるようなこともFluentd UIの中でできます。
- どんなログを読もうとしているかをプレビューしつつ、tailの設定を書くことができる
- pluginがうまく入らなかった
- ものによる。fluentd-plugin-elasticsearchが入らなかった。依存gemをうまくもってこれてないのかもしれない。
Fluentdを触ったことがないという場合でも、さっくりセットアップと設定を行うことができるのではないか思います。ローカルでさくっと試す用途にもよいのではないでしょうか。まだversionも0.10ですので、今後使いやすくなっていくのが楽しみです。