CentOS7にelasticsearch+kibana5などなどをインストール

CentOS7環境にelasticsearch,kibana,logstash,beats(全てVer5系)をインストールするメモ。
リポジトリからyumでインストールできるようになったので超簡単です。
一通り全部インストールしてkibanaでそれっぽくログが取れるようになるまでの自己満足的手順です。

---
## elasticsearch.repoの作成
```/etc/yum.repos.d/elasticsearch.repo
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
```

## JDK1.8のインストール
develとdebuginfoの両方入れると幸せになれるらしいです。

```
# yum install -y java-1.8.0-openjdk-devel
# yum install -y java-1.8.0-openjdk-debuginfo --enablerepo=*debug*
```

## elastic諸々インストール
yumでだーーっと流し込む

```
# yum -y install elasticsearch
# yum -y install logstash
# yum -y install kibana
# yum -y install metricbeat
# yum -y install packetbeat
# yum -y install filebeat
# yum -y install heartbeat
```
## kibana.ymlの編集
外部からkibanaにアクセスしたい場合はserver.hostを修正する。
**※公開サーバにインストールする場合、細かいサーバ稼働状況が全世界に向けて筒抜けになるのでセキュリティ設計は別途ちゃんとしておきましょう。**

```/etc/kibana/kibana.yml
server.host: "0.0.0.0"
```
## elasticsearch.ymlの編集
外部からelasticsearchへのアクセスを受け付ける場合はelasticsearch.ymlのnetwork.hostをkibana.yml同様"0.0.0.0"に修正する。
自サーバ内からだけアクセスを受け付ける場合は「_local_」と記述。

```/etc/elasticsearch/elasticsearch.yml
# 自サーバ内からだけアクセスを受け付ける場合
network.host: _local_
# 外部からのアクセスを受け付ける場合
network.host: "0.0.0.0"
```
## packetbeat.ymlの編集
packetbeatで統計を取りたいポート番号やログの投げ先となるelasticsearchのアドレス等を記述します。
下記はhttp通信をいくつか収集し、自サーバで動作しているelasticsearchへログを投げたい時の例です。
他にもプロトコル単位で細かく設定できますのでpacketbeat.yml全体をぜひ眺めてみてください。
packetbeatは通信パケットをどんどん収集するので、あまりたくさん収集する設定を入れるとサーバが高負荷となるかもしれません。

```/etc/packetbeat/packetbeat.yml
############################# Protocols #######################################
# ports:で指定するポート番号は一例
packetbeat.protocols.http:
  ports: [80, 8080, 5601]

############################ Output ##########################################
# ログ送信先となるelasticsearchサーバのアドレスを記述する。
# 自サーバ内で動いてる時は"localhost:9200"でOK
  hosts: ["localhost:9200"]
```

## metricbeatとpacketbeat用のkibanaダッシュボードテンプレートをインストール
metricbeatとpacketbeatの収集ログをkibanaで眺められるテンプレートが用意されているので、とりあえずインストール。

```
# cd /usr/share/metricbeat
# ./scripts/import_dashboards
# cd /usr/share/packetbeat
# ./scripts/import_dashboards
```

## logstash側kibana.confの編集
[Elastic Stack 5.0.0 GAリリース！ 早速インストール！！ #elasticsearch - 
Taste of Tech Topics Acroquest Technology株式会社のエンジニアが書く技術ブログ
](http://acro-engineer.hatenablog.com/entry/2016/10/27/165342)
上記サイトより設定例をお借りしました。
とりあえずkibanaのアクセスログをlogstashで収集できるようになります。

```/etc/logstash/conf.d/kibana.conf
input {
  file {
    codec => "json"
    path => "/var/log/kibana/kibana.stdout"
    start_position => "beginning"
    sincedb_path => "/var/log/logstash/since_kibana"
  }
}

output {
  elasticsearch {
    index => "kibana_access-%{+YYYY.MM.dd}"
    document_type => "%{type}"
  }
}
```

## kuromojiのインストール
日本語などの2バイト文字もログ分析対象とするプラグインです。

```
# /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji
```

## 一式起動
だーっと起動します。だーっとenableします。

```
# systemctl start elasticsearch
# systemctl start logstash
# systemctl start kibana
# systemctl start metricbeat
# systemctl start packetbeat
# systemctl start filebeat
# systemctl start heartbeat

# systemctl enable elasticsearch
# systemctl enable logstash
# systemctl enable kibana
# systemctl enable metricbeat
# systemctl enable packetbeat
# systemctl enable filebeat
# systemctl enable heartbeat
```

##kibanaにアクセスしてみる
デフォルトではport5601で起動しています。
公開ポートはkibana.ymlから変更できます。

```
http://自サーバのIPアドレス:5601
```

##アクセスできないときは？
firewalldの穴開け忘れとかありませんか？（よくやってしまう）

## あれ？filebeatとheartbeatの設定は？
とりあえず入れただけでまだ勉強前です･･･
heartbeatは他サーバのping監視とかできるっぽいので複数サーバ立てて遊べそうです。
filebeatは色々なログファイルを整形してelasticsearchに投げたりできるみたいです。

## 数週間ローカルで動かしてみたけど
物理2コア+メモリ8GB(うち2GBをelasticに割当)マシンで1週間統計とか1ヶ月統計とか表示させると結構重たい。何事も経験である。