fluentd 1.1 + Elasticsearch 1.2 + Kibana 3 on CentOS6.5 in Vagrant

Vagrant上でfluentd, Elasticsearch, Kibanaを動かしたのでそのメモ．
_CentOS7.x上でElasticsearch1.5, Kibana4を動かしたいですが，情報が少ないのでまずは古いバージョンで試しました．_

基本的には以下のサイト
参考：[AWS EC2上にfluentd + fluent-plugin-twitter + elasticsearch + kibana インストールするメモ](http://qiita.com/ayaniimi213/items/4197a295c13b59166e8c#8-kibana)
に加えて，Vagrantのポートフォワーディングの設定と，それぞれの設定でそのポートに関する記述を加えると動作します．

題材も参考サイトと同様にTwitterのデータをfluentdで取ってきます．

まずは```Vagrantfile```にポートフォワーディングなどの設定を加えて，```vagrant up```します．

```:Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "opscode-centos-6.5"
  config.vm.box_url = "http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-6.5_chef-provisionerless.box"

  config.vm.network :forwarded_port, host: 4567, guest: 80
  #config.vm.network :forwarded_port, host: 5601, guest: 5601
  config.vm.network :forwarded_port, host: 9200, guest: 9200

  config.vm.provider "virtualbox" do |vb|
    vb.customize ["modifyvm", :id, "--memory", "1024"]
  end

  config.vm.provision "shell", inline: <<-SHELL
  SHELL

end
```

9200はelasticsearchのポート，5601はkibana4のポートなので，kibana3を使用する際には必要ないと思います．ホストの4567番ポートに外部からアクセスすると，vagrant上のこのCentOSの80番のポートに飛ばされるようになっています．

boxのダウンロードにしばらく時間がかかりますが，20分程度(?)待っていると終わります．

```vangrant ssh```で接続します．

その後は基本的に参考サイトと同様の手順．で環境設定を行っていく．
このとき，CentOS7.xだとエラーがでてうまく設定されませんでした．

参考：[fluent-plugin-twitterインストール](http://qiita.com/ayaniimi213/items/4197a295c13b59166e8c#7-fluent-plugin-twitter%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB)

```
$ sudo service td-agent restart
```

の後に

```
$ eventmachine
```

は必要だと思います．

```
http://localhost:9200/twitter-2014.07.15/_search
```

と書いてある部分は，日付はその日の日付になります．

cURLコマンドを使用せず，このURLに直接ブラウザからアクセスするとJSON形式のデータ全て見れます．

参考サイトの```config.js```の変更点

```js:/home/kibana/kibana/config.js
define(['settings'],
function (Settings) {
  return new Settings({
    elasticsearch: "http://xxx.xxx.xxx.xxx:4567/es/",
    default_route     : '/dashboard/file/default.json',
    kibana_index: "kibana-int",
    panel_names: [
      'histogram',
      'map',
      'goal',
      'table',
      'filtering',
      'timepicker',
      'text',
      'hits',
      'column',
      'trends',
      'bettermap',
      'query',
      'terms',
      'stats',
      'sparklines'
    ]
  });
});
```

また，

```:/etc/httpd/conf.d/kibana.conf
NameVirtualHost *:80
<VirtualHost *:80>
    DocumentRoot /home/kibana/kibana
    ServerName xxx.xxx.xxx.xxx:4567
    ProxyPass /es/ http://xxx.xxx.xxx.xxx:9200/
    ProxyPassReverse /es/ http://xxx.xxx.xxx.xxx:9200/
    CustomLog logs/access_log custom
    ErrorLog logs/error_log
    Options FollowSymLinks
</VirtualHost>
```

and then

```
$ sudo service elasticsearch start
$ sudo service td-agent start
$ sudo service httpd start
```

これで

```
http://xxx.xxx.xxx.xxx:4567
```

に接続するとkibana3のDashboardが見られると思います．

# 失敗した所
最初ポートの設定がよく分からず，
[CentOS iptablesによるパケットフィルタ](http://www.unix-power.net/linux/iptables.html)
[CentOS に iptables の設定を行う (IPv4)](http://www.websec-room.com/2014/01/12/1511)
[立ち上げ直後のiptablesを設定する。](http://qiita.com/shimohiko/items/ec672655edb84578a82e)
[CentOS on Slicehost – iptablesを設定する](http://www.icoro.com/201001144664.html)
iptablesとかいじっていたら
[$ vagrant sshで仮想マシンに入れなくなった場合の対処法](http://chroju89.hatenablog.jp/entry/2014/02/02/162749)
こういうことになりました．iptablesをイジる必要はありません．

#その他参考資料
### Vagrant + Webサーバ
[Vagrant + CentOS 6.4 + Apacheで仮想サーバ構築](http://j-caw.co.jp/blog/?p=1037)

### Elasticsearch
[Elasticsearch Advent Calendar 2014](http://qiita.com/advent-calendar/2014/elasticsearch)
[ElasticSearch + MongoDBをNode.jsで操作する](http://nextdeveloper.hatenablog.com/entry/2014/01/08/120203)
[「niconicoの検索を支えるElasticsearch」と題して、第7回Elasticsearch勉強会で発表しました](http://ch.nicovideo.jp/dwango-engineer/blomaga/ar674946)
[ニコニコデータセット](http://www.nii.ac.jp/cscenter/idr/nico/nico.html)

### Kibana
[Kibana入門 by Yusuke Mito](https://speakerdeck.com/y310/kibanaru-men)

### Spark
[Apache Spark & Elasticsearch by DATABRICKS](http://spark-summit.org/wp-content/uploads/2014/07/Streamlining-Search-Indexing-using-Elastic-Search-and-Spark-Holden-Karau.pdf)
[あのSpark開発の総本山Databricksは何を目指しているのか、共同創業者に聞く](http://itpro.nikkeibp.co.jp/atcl/news/14/082600575/)
[Spark on elasticsearch-hadoop トライアル](http://qiita.com/jtodo/items/91482501c0c93de49e5e)


### MongoDB
[fluentd + MongoDB + Elasticsearch + Kibanaでログを可視化する](http://odoruinu.net/blog/2014/08/05/visualize-log-with-fluentd-mongodb-elasticsearch-kibana/)
[USING MONGODB WITH HADOOP & SPARK: PART 3 - SPARK EXAMPLE & KEY TAKEAWAYS](http://www.mongodb.com/blog/post/using-mongodb-hadoop-spark-part-3-spark-example-key-takeaways)