VirtualBoxの中でElastic Stackするための環境構築

**※Elastic Stack 5.0は安定版が出ています。Vertual BoxでUbuntuを起動できたら[こちら](http://qiita.com/yamatok/items/e83d75bdd3e423e88fc2)に移動してください。**

#環境構築
## VirtualBox5.1.6とUbuntu16.04の導入（Windows10 64bitで動作確認）
※BIOSの設定が必要な場合があります。（例）「VT-x is disabled in the BIOS.(VERR_VMX_MSR_VMXON_DISABLED).」が出たら以下の手順を行ってください。
- BIOSの設定画面で[Intel Virtualization Technology]を[Enable]に変更（ご参考： http://did2memo.net/2015/07/10/virtualbox-64-bit-os/ ）

### VirtualBoxをDL
- https://www.virtualbox.org/wiki/Downloads にアクセスし、VirtualBox 5.1.6 for Windows hosts [x86/amd64]のリンクをクリック

### UbuntuをDL
- https://www.ubuntulinux.jp/News/ubuntu1604-ja-remix にアクセスし、[ubuntu-ja-16.04-desktop-amd64.iso（ISOイメージ）]のリンクをクリック

### 下記を参考にしてインストール
- http://qiita.com/ykawakami/items/4bae371932110b2e25e3

### 設定は必要に応じてですが…（※必要なもののみ）
- VirtualBox側の設定
  - [一般]->[高度]->[クリップボードの共有]を有効にする※
  - [システム]->[マザーボード]->[メインメモリー]を増やす※
  - [ネットワーク]->[アダプター 1]->[高度]->[ポートフォワーディング]->[+]->[ホストポート]と[ゲストポート]のみ設定。(Kibana:5601, Elasticsearch:9200, kafka_input:9092, kafka_output:2181)※

- Ubuntu側の設定
  - プロキシ

## JDKをインストール（ここから先はVirtualBox）

```at2016/9/30
$ sudo apt-get update
$ sudo apt-get install default-jdk
$ javac -version
javac 1.8.0_91
```

## Logstash2.4.0をインストール
- https://www.elastic.co/downloads/logstash にアクセスし、Logstash 2.4.0の[ZIP]のリンクをクリック
- ZIPを解凍（どこでも）

## Elasticsearch 5.0.0-beta1をインストール
- https://www.elastic.co/downloads/elasticsearch にアクセスし、Elasticsearch 5.0.0-beta1の[ZIP]のリンクをクリック
- ZIPを解凍（どこでも）

## Kibana 5.0.0-beta1をインストール
- https://www.elastic.co/downloads/kibana にアクセスし、Kibana 5.0.0-beta1の[ZIP]のリンクをクリック
- ZIPを解凍（どこでも）

# Elastic Stack（Logstash, Elasticsearch, KibanaなどElastic社製品）の起動方法
## 必要な設定ファイル
### Logstashの設定ファイル
※ローカルにあるファイルを読み込んでjsonデータを取得することを想定した設定ファイルです。Elasticsearchに送ります。

```(任意)logstash.conf
input {
    file {
        path =>"${INPUT_FILE_PATH_DIR}/file.txt"
        start_position => "end"
        type => "somethingDataType"
    }
}
filter{
    json{
        source => "message"
    }
}
output {
    stdout {
        codec => json
    }
}
output {
    elasticsearch {
         hosts => ["localhost:9200"]
     }
}
```
コマンドライン引数で渡すので、場所・名前は任意です。
### Elasticsearch・Kibanaの設定ファイル

```${ElasticsearchのZIPの解凍場所}/config/templates/logstash-*.json
{
  "logstash-2016.09.30" : {
    "mappings" : {
      "something_Application" : {
        "_all" : {
          "enabled" : true,
          "omit_norms" : true
        },
        "properties" : {
          "name": {
            "type": "keyword"
          },
          "personal_Data": {
            "properties": {
              "age": {
                "type": "long"
              },
              "height": {
                "type": "float"
              }
            }
          }
        }
      }
    }
  }
}
```
## Elasticsearchの起動方法

```
${ZIPの解凍場所}/elasticsearch-5.0.0-beta1/bin/elasticsearch
```
`localhost:9200`にアクセスできれば成功です。
## Kibanaの起動方法

```
${ZIPの解凍場所}/kibana-5.0.0-beta1-linux-x86_64/bin/kibana
```
`localhost:5601`にアクセスできれば成功です。
※Elasticsearchが起動していないとwarningを吐き出し続けます。
## Logstashの起動方法

```
${ZIPの解凍場所}/logstash-2.4.0/bin/logstash -f (任意)logstash.conf
```
これは実際にデータを送って確認します。設定ファイルの場所・名前は任意です。
※Elasticsearchが起動していないと以下のエラーが出ます。（その後Elasticsearchを起動させれば正常作動します）

```
接続を拒否されました {:class=>"Manticore::SocketException", :level=>:error}
```
## 動作確認
今回読み込むファイル `${INPUT_FILE_PATH_DIR}/file.txt` にjsonデータを追記します。（エディタでもいいですが）

```
echo -e \\n{\"a\":\"b\"} >> ${INPUT_FILE_PATH_DIR}/file.txt
```
※前のデータがある場合は、改行してから追記してください。（上例は追記のケース）

いかがでしょうか。