Chef SoloでFluentd + Elasticsearch + Kibana3をインストールする
はじめに
Fluentd + Elasticsearch + Kibanaが良いという話をよく聞くので、Chef Soloでサクッと環境を作ってみようと思ったら意外と苦戦したので記録を残しておきます。
結論
Kibana 3を簡単にセットアップできるChefリポジトリを作成しました。
https://github.com/orangain/kibana3-chef-repo
以下の手順でVagrantで作成した仮想マシンにKibana 3を導入できます。構成は上の図のようになります。JDKのインストールに結構時間がかかりますが中断したりしないようにしましょう。 *1
git clone https://github.com/orangain/kibana3-chef-repo.git cd kibana3-chef-repo berks install --path cookbooks/ vagrant up knife solo cook vagrant nodes/my-kibana.json open http://192.168.33.10/
セットアップができたら、Fluentd (192.168.33.10:24224
) に対して、es.*
にマッチするタグを付けたデータを送り込めばKibanaのグラフに表示されます。
以降ではそれぞれのクックブックの詳細を見ていきます。
Fluentd
クックブック
Fluentd (td-agent) のクックブックはOpscodeのサイトにないため、GitHubから取得します。
cookbook 'td-agent', :git => 'https://github.com/treasure-data/chef-td-agent.git'
設定
Elasticsearchにデータを投入するためにelasticsearchプラグインを使います。設定が必要なので、td-agent::elasticsearch
というレシピを追加しました。
以下のように es.*
にマッチするタグをElasticsearchに渡すようにしてみました。
<match es.*> type elasticsearch logstash_format true flush_interval 10s </match>
Elasticsearch
クックブック
Opscodeのサイトから取得します。
cookbook 'elasticsearch'
デフォルトのレシピ elasticsearch::default
はパッケージを利用しません。 elasticsearch::deb
や elasticsearch::rpm
はパッケージを利用しますが、設定ファイルの変更を行わないため自分でレシピを書く必要があります。今回はデフォルトのレシピを使用しました。
設定
JDK 7のインストールが必要なので、以下のように設定します。
"java": { "install_flavor": "openjdk", "jdk_version": "7" }, "elasticsearch": { "cluster_name": "YOUR_CLUSTER_NAME", "bootstrap.mlockall": false }
Kibana
Ruby製のKibana 2とHTML+JavaScript製のKibana 3があります。 今から使うのであればKibana 3が良いでしょう。
クックブック
クックブックは色々あります。
- Opscodeコミュニティクックブック
- 古くてKibana 2のみ対応
- https://github.com/realityforge/chef-kibana
- 1のリポジトリで、最新のコミットでKibana 2と3を選択できるようになったばかり
- https://github.com/lusis/chef-kibana
- Kibana 3のみに対応
ここでは3のlusisさんのクックブックを利用します。
cookbook 'kibana', :git => 'https://github.com/lusis/chef-kibana.git'
設定
このクックブックでは、Webサーバーとしてデフォルトでnginxがインストールされます。
node['kibana']['webserver']
- Webサーバーの種類("nginx", "apache", "")を指定します。デフォルトはnginxです。
node['kibana']['es_server']
- Elasticsearchのアドレスを指定します。デフォルトは"127.0.0.1"です。
まとめ
Chefのコミュニティクックブックを利用すると、自分でレシピを書かずに簡単にソフトウェアを導入できますが、特に枯れていないソフトウェアの場合、クックブックが追従できていなかったりするので気をつけましょう。
参考サイト
- Kibana3 + elasticsearch + fluentd を試した - jedipunkz' blog
- Chef で kibana + elasticsearch + fluentd デプロイしてみた - jedipunkz' blog
- Elasticsearch - Kibana3を環境構築だけで終わらせない(前編) - Qiita [キータ]
- Kibana + elasticsearch + Fluentd 環境構築メモ, あと Kibana3
*1:私は一度しました