CentOS7環境でFluentd+Elasticsearch+Kibana4を構築する(前編)

今回は[こちら](http://qiita.com/kenichi_nakamura/items/d714ad3051d8e1cc6f90)で構築したCentOS7環境にKibana4を導入します！
※別途AmazonLinuxなEC2インスタンスでも試してみましたが、同様の手順で導入できました。

ほんと、導入するまでです！fluentdの設定とか、グラフ表示とかは後編(予定)に期待です。。

# 1. 仮想環境にログインする

まずはログインしましょう。
おさらいですが、ホストは"192.168.33.10"でSSH、TCPポートは22番でした。
そしてユーザ名、パスフレーズは"vagrant"です。

# 2. システムのバージョンアップ

まずは"yum update"でシステムの各パッケージのバージョンアップをしましょう。

```text:192.168.33.10(ゲストOS)
$ sudo yum -y update
```

# 3. JDKの導入

ElasticsearchはJavaで動作するので、事前に導入します。
今回は"java-1.8.0-openjdk"を使う事にします。

```text:192.168.33.10(ゲストOS)
$ sudo yum -y install java-1.8.0-openjdk
```

# 4. Elasticsearchの導入

現時点で最新版の1.5.1を使う事にします。何事も最新最新。。。

## 4.1. wgetでrpmパッケージをDL

```text:192.168.33.10(ゲストOS)
$ sudo wget https://download.elastic.co/elasticsearch/elasticsearch/elasticsearch-1.5.1.noarch.rpm
```

## 4.2. rpmパッケージをインストール

```text:192.168.33.10(ゲストOS)
$ sudo rpm -ivh ./elasticsearch-1.5.1.noarch.rpm
```

## 4.3. Elasticsearch起動

```text:192.168.33.10(ゲストOS)
$ sudo service elasticsearch start
```

## 4.4. Elasticsearchを自動起動するように設定

ついでに、環境起動時に勝手に立ち上がるようにしちゃいましょう。

```text:192.168.33.10(ゲストOS)
$ sudo chkconfig elasticsearch on
```

# 5. td-agent(fluetnd)の導入

## 5.1. td-agentのインストール

td-agentは一言でいうとfluentdのステイブル版ということらしいので、同じものと思っておけば良いと思います。
今回はtd-agent2を導入します。
導入が簡単な様に公式からシェルスクリプトが提供されているので、それを使って導入します。

```text:192.168.33.10(ゲストOS)
$ sudo curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
```

## 5.2. libcurl-develのインストール

今回はfluentdを使ってElasticsearchにデータをつっこむのでElasticsearch用のプラグインを導入しますが、
その際に必要なので事前にいれます。

```text:192.168.33.10(ゲストOS)
$ sudo yum -y install gcc libcurl-devel
```

## 5.3. Elasticsearchプラグインのインストール

```text:192.168.33.10(ゲストOS)
$ sudo td-agent-gem install fluent-plugin-elasticsearch
```

## 5.4. td-agentの起動

```text:192.168.33.10(ゲストOS)
$ sudo service td-agent start
```

## 5.5. td-agentを自動起動するように設定

Elasticsearch同様、こちらも自動起動するように設定しちゃいましょう。

```text:192.168.33.10(ゲストOS)
$ sudo chkconfig td-agent on
```

# 6. Kibana4の導入

いよいよKibanaです！今回は最新版で真っ白なKibana4を導入します。

## 6.1. Kibana4をDL

```text:192.168.33.10(ゲストOS)
$ sudo wget https://download.elastic.co/kibana/kibana/kibana-4.0.1-linux-x64.tar.gz
```

## 6.2. DLしたKibana4を解凍

```text:192.168.33.10(ゲストOS)
$ tar xvzf kibana-4.0.1-linux-x64.tar.gz
```

## 6.3. Kibana4の起動

とりあえず単純にバックグラウンドで起動します。
とはいえそのままだとログがコンソールに流れてきてウザイので適当にファイルにリダイレクトします。

```text:192.168.33.10(ゲストOS)
$ sudo ./kibana-4.0.1-linux-x64/bin/kibana > ./kibana.log &
```

# 7. 穴あけ

さて、Kibanaまで導入して完了！･･･と思いきや、そのままではアクセスできません。
試しにホストOS側のブラウザから

```text:ブラウザ(ホストOS)
http://192.168.33.10:5601/
```

にアクセスしてみてください。長時間またされてイラっとして終わりです！
firewallが立ちはだかっているため、許可されてないポートへはアクセスできないのです。

なのでfirewallの設定をいじって、必要なポートの穴あけをしてやりましょう。

ちなみにCentOS6までは"iptables"を使ってアクセス制限をしていたのですが、CentOS7からは"firewalld"を使います。
"iptables"は設定が全てのNICに適用されましたが、"firewalld"はNIC毎に設定を用意する点が少々異なります。

## 7.1. firewalld設定を変更する

テキストエディタ(vi, vim等)で編集します。

```text:192.168.33.10(ゲストOS)
$ sudo vim /etc/firewalld/zones/public.xml
```

以下のように開けたいポートの設定を追加します。
Kibanaの5601に加えて9200も開けておくとElasticsearchが叩けますので、今回はそちらも追加します。

```xml:public.xml
<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="dhcpv6-client"/>
  <service name="ssh"/>
  <service name="http"/>
  <port protocol="tcp" port="5601"/>    <!-- Kibanaポート追加 -->
  <port protocol="tcp" port="9200"/>    <!-- Elasticsearchポート追加 -->
</zone>
```

## 7.2. firewalldの設定を反映させる

```text:192.168.33.10(ゲストOS)
$ sudo systemctl restart firewalld
```

# 8. Kibanaアクセス再チャレンジ

さて、再度ホストOS側から5601ポートにアクセスしてみましょう。

```text:ブラウザ(ホストOS)
http://192.168.33.10:5601/
```

アクセスできましたか！？(以下のように表示されればOK)

![top.png](https://qiita-image-store.s3.amazonaws.com/0/53473/8020f6e1-cf80-986f-099c-175fa8456ebd.png)

ちなみに9200にアクセスすると、Elasticsearchのサンプルが表示されます。

```text:ブラウザ(ホストOS)
http://192.168.33.10:9200/
```

```text:ブラウザ(ホストOS)
{
    "status": 200,
    "name": "Oblivion",
    "cluster_name": "elasticsearch",
    "version": {
        "number": "1.5.1",
        "build_hash": "5e38401bc4e4388537a615569ac60925788e1cf4",
        "build_timestamp": "2015-04-09T13:41:35Z",
        "build_snapshot": false,
        "lucene_version": "4.10.4"
    },
    "tagline": "You Know, for Search"
}
```

今回はここまで。
[後編](http://qiita.com/kenichi_nakamura/items/c29e9a099ea9b3dd0bf8)ではElasticsearchにデータをつっこんで
視覚化するところまでやっていますので、興味がある方は是非！