apache-loggen + Fluentd + Elasticsearch + Kibana3をVagrant with Dockerで動かしてみる
この前、手元のMac OS X上にFluentd + Elasticsearch + Kibana3の環境を作ってみました。 けど、こういうのは仮想環境上に作っておくのがなにかと便利です。
Vagrantの最近のアップデートでprovisioningにDockerが使えるようになりました。
これはDocker使って環境作ったらかっこええんちゃう?と思ったら、すでにやっている方がいました。
簡単!Vagrant+Docker+td-agent+Elasticsearch+Kibanaで流行に乗ろう
こちらを参考にDockerを触ってみて、Dockerの雰囲気と面白さがなんとなく感じられました。
ただ、Kibanaでいい感じの表示をするためにはある程度のデータがあったほうがいいので、apache-loggenでデータを自動生成するのも混ぜたいなと思いました。
そこでできあがったのがこちらになります。
s5ot / vagrant-docker-td-es-kibana-sample
vagrant upすればapache-loggenがデータを作り続け、Fluentd のtailで Elasticsearch へ流し続けてます。
http://localhost:5555 でご覧ください。
Kibanaの使い方の練習ができます。
Dockerに関して湧いた疑問
ImageをBuildして最後にミドルウェアなりを起動するときにENTRYPOINTで起動するケースと、CMDでrun.shを叩いて起動するタイプがある。
これはどういう使い分けなんかな?と思ったけど、マニュアルに書いてあった。
Build Images (Dockerfile Reference)
コンテナの起動時にconfig的なデフォルト値を与えて起動したいなら、CMDでrun.shのようなものを使う。CMDはImageのBuild時には実行されない。固定のバイナリを叩いてコンテナを起動するならENTRYPOINTを使う。
というように理解しました。
あとやりたいこと
Kibanaのアップデート
Kibana3のイメージはarcus/kibanaを使ってるのですが、これはKibana 3 milestone 2になってます。本家はもっと新しいのが出ていてかなり機能が変わってるようなのでアップデートしたいところ。
apache-loggenコンテナ
今のところ、apache-loggenはtd-agentコンテナに同居しているのですが、apache-loggenだけのコンテナを作り、td-agentとDockerのmount Volumes機能で連携するのがスマートだと考えています。