MacにKibanaとtd-agentをインストールする


## ElasticSearchのインストール

```
brew install elasticsearch
ln -sfv /usr/local/opt/elasticsearch/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.elasticsearch.plist
```

## Kibanaをダウンロード

zipで落としてきてもいいけど、git cloneしてきた。

```
git clone https://github.com/elasticsearch/kibana.git
cd kibana
npm install
grunt
```

## nginxのインストール

```
brew install nginx
ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
```

### Kibanaが見られるようにする

Kibanaのディレクトリをdocrootにしたserverディレクティブを追加。

```
vi /usr/local/etc/nginx/nginx.conf
```

```
    server {
        listen       9999;
        server_name  localhost;

        location / {
            root   /[kibanaをcloneしてきたパス]/kibana/src;
            index  index.html index.htm;
        }
    }
```

nginxの再起動。

```
launchctl stop homebrew.mxcl.nginx
launchctl start homebrew.mxcl.nginx
```

これで http://localhost:9999/ でKibanaが見られる。

## td-agentをインストール

デーモンとして起動するのが簡単そうなtd-agentを使うことにした。

↓ここからダウンロードしてインストール

http://docs.fluentd.org/articles/install-by-dmg

```
sudo launchctl load /Library/LaunchDaemons/td-agent.plist
```

ログは `/var/log/td-agent/td-agent.log` にある。

## fluent-plugin-elasticsearchをインストール

fluentdのpluginはfluent-gemコマンドで入れるらしい。

```
/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elasticsearch
```

`/etc/td-agent/td-agent.conf`にelasticsearch用の設定を追加。

```
<match foo.bar.*>
  type elasticsearch
  host localhost
  port 9200
  logstash_format true
  logstash_prefix foobar
</match>
```

`logstash_format true` `logstash_prefix foobar` というのがポイントで、これがあることでKibanaでタイムシリーズとしていい感じに見られる。（foobar-YYYY.MM.DD というインデックスができて @timestamp がきちんと入ってくれる）

最後にtd-agentを再起動

```
sudo launchctl stop td-agent
sudo launchctl start td-agent
```

（なぜかstartしなくてもstopだけで勝手にstartもしてくれるが）

## logstashダッシュボードを見る

Kibanaを開くと、最初に何をやっていいかよくわからないのだが、logstash形式のダッシュボードのサンプルから始めると良い。ここの (Logstash Dashboard) というリンク。

![Kibana_3_-_Introduction.png](https://qiita-image-store.s3.amazonaws.com/0/5978/2b01aa9c-9cb9-3a80-7392-6c36156a9e3a.png "Kibana_3_-_Introduction.png")

![Kibana_3_-_Logstash_Search.png](https://qiita-image-store.s3.amazonaws.com/0/5978/de4c8a20-f0d3-f682-3cd1-a897ce5f12ed.png "Kibana_3_-_Logstash_Search.png")

![Kibana_3_-_Logstash_Search.png](https://qiita-image-store.s3.amazonaws.com/0/5978/f92d6365-bad0-a832-493f-a20fe14b14e0.png "Kibana_3_-_Logstash_Search.png")

## 以上

とはいえ、入れるログが無いと楽しくないので、自分の場合はマウスやキーボードのログを入れている。

それについては次の記事で説明する。

書いた→[MacのキーボードやマウスのログをKibanaで可視化する](http://qiita.com/edvakf@github/items/721afa8d2e69c556ba64)

## 以下はfluent-plugin-elasticsearchを入れるときにハマりかけたログ

```
/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elasticsearch
```

とやると、こんなエラーが。

```
Building native extensions.  This could take a while...
ERROR:  Error installing fluent-plugin-elasticsearch:
	ERROR: Failed to build gem native extension.

    /opt/td-agent/embedded/bin/ruby extconf.rb
checking for curl-config... yes
checking for rb_thread_blocking_region()... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
	--with-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/opt/td-agent/embedded/bin/ruby
	--with-curl-dir
	--without-curl-dir
	--with-curl-include
	--without-curl-include=${curl-dir}/include
	--with-curl-lib
	--without-curl-lib=${curl-dir}/lib
/opt/td-agent/embedded/lib/ruby/2.1.0/mkmf.rb:456:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
	from /opt/td-agent/embedded/lib/ruby/2.1.0/mkmf.rb:541:in `try_link0'
	from /opt/td-agent/embedded/lib/ruby/2.1.0/mkmf.rb:556:in `try_link'
	from /opt/td-agent/embedded/lib/ruby/2.1.0/mkmf.rb:742:in `try_func'
	from /opt/td-agent/embedded/lib/ruby/2.1.0/mkmf.rb:1027:in `block in have_func'
	from /opt/td-agent/embedded/lib/ruby/2.1.0/mkmf.rb:918:in `block in checking_for'
	from /opt/td-agent/embedded/lib/ruby/2.1.0/mkmf.rb:351:in `block (2 levels) in postpone'
	from /opt/td-agent/embedded/lib/ruby/2.1.0/mkmf.rb:321:in `open'
	from /opt/td-agent/embedded/lib/ruby/2.1.0/mkmf.rb:351:in `block in postpone'
	from /opt/td-agent/embedded/lib/ruby/2.1.0/mkmf.rb:321:in `open'
	from /opt/td-agent/embedded/lib/ruby/2.1.0/mkmf.rb:347:in `postpone'
	from /opt/td-agent/embedded/lib/ruby/2.1.0/mkmf.rb:917:in `checking_for'
	from /opt/td-agent/embedded/lib/ruby/2.1.0/mkmf.rb:1026:in `have_func'
	from extconf.rb:47:in `<main>'

extconf failed, exit code 1

Gem files will remain installed in /opt/td-agent/embedded/lib/ruby/gems/2.1.0/gems/patron-0.4.18 for inspection.
Results logged to /opt/td-agent/embedded/lib/ruby/gems/2.1.0/extensions/x86_64-darwin-13/2.1.0/patron-0.4.18/gem_make.out
```

調べてみると、XCodeのCommand Line Toolを入れないといけないとか（入れてた気がするけど）。昔は `xcode-select install` で良かったらしいが、今はAppleのサイトからインストールしないといけないらしい。

* http://jasdeep.ca/2013/10/installing-nokogiri-fails-os-x-mavericks/
* http://stackoverflow.com/questions/19907576/xcode-is-not-currently-available-from-the-software-update-server

Command Line Toolをインストールしてもずっと同じエラーで失敗してたのだが、

```
sudo /opt/td-agent/embedded/bin/ruby -rmkmf -e 'have_func("rb_thread_blocking_region")'
```

とやるとちゃんと成功するのでどうしたもんかと思ってもう一度

```
sudo /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elasticsearch
```

とやると、何故かインストールできた。不思議。