Ubuntu18.04でElastic Stack(6.4.x)

![highres_254333778.jpeg](https://qiita-image-store.s3.amazonaws.com/0/258841/6d68b707-f85f-e443-57c5-34bda5647fa9.jpeg)

# 背景

進化の早いElastic製品群
今までは5系を使用していたがせっかくなので最新版を再度インストールから実施してみました。
その際のインストール手順メモです。

5回編成予定で導入2回、入門1回、実践2回を書く予定(気力があれば。。)

# Elastic Stackって？

オランダのElastic社が提供しているログ収集や解析などを可視化するための
オープンソースソフトウェア群

「Elasticsearch」「kibana」「logstash」「beats」の4つで構成されている。

### Elasticsearch

分散処理型の検索エンジンです。
大量のドキュメントから目的の単語を含むドキュメントを高速に抽出することができます。

### Logstash
各環境に散らばっているログを集め、指定した対象に連携できるツールです。
ログの連携だけではなく、ログの加工機能も持ち合わせています。

### kibana

ElasticSearchで集めたデータを可視化するためのツール
折れ線グラフ・棒グラフ・円グラフを用いてログの詳細な情報を解析し、色分けして表示することが可能

### Beats
機器のデータをElasticsearchやLogstashに転送する簡易的なデータ収集ツールです。
例えばネットワークのパケット情報・Windowsのイベントログ・死活監視の情報などを収集可能なため、
Logstashでカバーできないような情報を集めてくることができます。

### まとめ

|製品名       |機能                    |開発言語  |
|-------------|------------------------|----------|
|Elasticsearch|ドキュメントを保存・検索|Java      |
|Kibana       |データの可視化          |JavaScript|
|Logstash     |データ取り込み・変換    |Ruby      |
|Beats        |データ取り込み          |Go言語    |

# 導入手順
Elasticsearch→Logstash（Beats）→Kibanaの順にインストールします。

# 環境

``` bash
# OSとカーネルバージョン
$ cat /etc/lsb-release | grep RELEASE ; uname -r
DISTRIB_RELEASE=18.04
4.15.0-36-generic

# javaは必須です。なければインストールしてください
$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-1ubuntu0.18.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

```

# 導入① Elasticsearch

Elasticsearchのインストール

``` bash
# パッケージの取得
$ curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.3.deb
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 93.2M  100 93.2M    0     0   548k      0  0:02:54  0:02:54 --:--:--  502k

# インストール
$ sudo dpkg -i elasticsearch-6.4.3.deb
以前に未選択のパッケージ elasticsearch を選択しています。
(データベースを読み込んでいます ... 現在 207005 個のファイルとディレクトリがインストールされています。)
elasticsearch-6.4.3.deb を展開する準備をしています ...
elasticsearch (6.4.3) を展開しています...
elasticsearch (6.4.3) を設定しています ...
(省略)
新バージョンの設定ファイル /etc/elasticsearch/elasticsearch.yml をインストールしています ...
新バージョンの設定ファイル /etc/elasticsearch/jvm.options をインストールしています ...
新バージョンの設定ファイル /etc/elasticsearch/log4j2.properties をインストールしています ...
新バージョンの設定ファイル /etc/default/elasticsearch をインストールしています ...
新バージョンの設定ファイル /usr/lib/systemd/system/elasticsearch.service をインストールしています ...
新バージョンの設定ファイル /etc/init.d/elasticsearch をインストールしています ...
Created elasticsearch keystore in /etc/elasticsearch
systemd (237-3ubuntu10.4) のトリガを処理しています ...
ureadahead (0.100.0-20) のトリガを処理しています ...
ureadahead will be reprofiled on next reboot

# サービス起動
$ sudo systemctl start elasticsearch.service

# 起動確認。下記のようにリクエストを送ればレスポンスが来ます
$ curl -XGET 'localhost:9200/?pretty'
{
  "name" : "uIaLhsy",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "9gpCm_fWRDCQ1Lk4vSn_oQ",
  "version" : {
    "number" : "6.4.3",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "fe40335",
    "build_date" : "2018-10-30T23:17:19.084789Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}
```

# 導入② Logstash

``` bash
パッケージの取得
$ curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-6.4.3.deb

# インストール
$ sudo dpkg -i logstash-6.4.3.deb
以前に未選択のパッケージ logstash を選択しています。
(データベースを読み込んでいます ... 現在 207390 個のファイルとディレクトリがインストールされています。)
logstash-6.4.3.deb を展開する準備をしています ...
logstash (1:6.4.3-1) を展開しています...
logstash (1:6.4.3-1) を設定しています ...
Using provided startup.options file: /etc/logstash/startup.options
Successfully created system startup script for Logstash

# サービス起動
$ sudo systemctl start logstash.service

```

# 導入③ Kibana

``` bash
# パッケージ取得
$ curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-6.4.3-amd64.deb
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  225M  100  225M    0     0   859k      0  0:04:29  0:04:29 --:--:--  984k

# インストール
$ root@ubuntu0827:~/iog/elastic_stack# dpkg -i kibana-6.4.3-amd64.deb 
以前に未選択のパッケージ kibana を選択しています。
(データベースを読み込んでいます ... 現在 222723 個のファイルとディレクトリがインストールされています。)
kibana-6.4.3-amd64.deb を展開する準備をしています ...
kibana (6.4.3) を展開しています...
kibana (6.4.3) を設定しています ...
(省略)
新バージョンの設定ファイル /etc/kibana/kibana.yml をインストールしています ...
systemd (237-3ubuntu10.4) のトリガを処理しています ...
ureadahead (0.100.0-20) のトリガを処理しています ...

# kibana.ymlの編集
# サーバ名だったりアクセス許可ホストを設定します。
$ diff 
-#server.host: "localhost"
+server.host: "0.0.0.0"

-#server.name: "your-hostname"
+server.name: "ubuntu0827"

# サービス起動
$ systemctl start kibana.service
```

# 全体動作確認

上記の設定でリモートアクセスも許可しているので他クライアントからでもアクセスできます。

http://192.168.1.156:5601
といった形でIPとポートを指定すればアクセスできます。

<img width="1516" alt="スクリーンショット 2018-11-11 17.12.41.png" src="https://qiita-image-store.s3.amazonaws.com/0/258841/5c6b6b79-e3a5-d61b-d4ff-7b5ad2d7a336.png">

次はBeatsを設定します

# Beatsとは？

Beatsはデータ取り込みを行うプラットフォームとなります。
同じ位置付にLogstashがありますが違いはLogstashは多くの機能を一つで賄うのに対し
Beatsではそれぞれがインプットに特化したシンプルかつ軽量なデータ取り込みツールです。
ちなみに実装はGoです。なんとJVM不要！(Elasticsearchやら動かしているのでまあ。。。)

とても簡単に言うとモニタリングツールのエージェント

# Beatsファミリー

Beatsは下記6つの種類があります

| 名前 | 概要 |
|:--|:--|
| Metricbeat | CPU,メモリ等の情報収集 |
| Filebeat | ログファイルの収集 |
| Packetbeat | パケット情報の収集 |
| Auditbeat | 監査データの収集 |
| Heartbeat | リモートから稼働状況の監視 |
| Winlogbeat | Windowsのイベントログの収集 |

詳細は公式をご確認ください
https://www.elastic.co/jp/products/beats

# 環境

Elasticsearch 6.4.3
Kibana 6.4.3
Metricbeat 6.4.3

# 導入

今回はメトリクスを対象としているのでMetricBeatを導入します。

``` bash
# バイナリ取得
$ curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-6.4.3-amd64.deb
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 18.5M  100 18.5M    0     0   542k      0  0:00:35  0:00:35 --:--:--  593k

# インストール
$ dpkg -i metricbeat-6.4.3-amd64.deb
```

導入は以上です。
次は設定ファイルを書き換えます。

公式の手順で下記のように設定を追記してください。

``` /etc/metricbeat/metricbeat.yml
output.elasticsearch:
  hosts: ["<es_url>"]
  username: "elastic"
  password: "<password>"
setup.kibana:
  host: "<kibana_url>"
```

次にmetricbeatを起動します。

``` bash
$ metricbeat setup
$ metricbeat -e
```

コンソールでデータの送信が確認できるのでこの状態で下記URLへアクセス。

http://192.168.1.156:5601

あとはDashboardを開き下記を選択

![スクリーンショット 2018-11-13 20.51.53.png](https://qiita-image-store.s3.amazonaws.com/0/258841/62ffde7a-69a1-d10d-7d55-ffdfe194de75.png)

そうすることで下記のようにCPU使用率やメモリ使用率、トラフィックなどが表示されます。

![スクリーンショット 2018-11-13 20.50.16.png](https://qiita-image-store.s3.amazonaws.com/0/258841/a9db9bea-6d82-10bb-df06-c5d9ed232358.png)

あとはサービスとして起動するために下記コマンドを実行します。

``` bash
$ systemctl status metricbeat.service
```

※ここでエラーが出る場合は前回の導入時に失敗している可能性があります。

# まとめ

とりあえずElastic Stackの導入が完了
次回からはこれらを使っていろいろ遊んだ結果を記載していきます。

Elasticsearch : データを検索、分析、保存
Kibana : データを可視化
Logstash : 動的なデータ収集パイプライン
Beats : データシッパープラットフォーム

もちろんノード数を増やせばそれに応じて自動でメトリクスを取得してくれます。
下記はノード数:2のときの表示例です。

![スクリーンショット 2018-11-13 22.46.34.png](https://qiita-image-store.s3.amazonaws.com/0/258841/7c954e0b-d8d3-4a10-40ef-5e3e96155021.png)


# 参考

◼　[公式](https://www.elastic.co/jp/products)
◼　[Elastic Stackって何？](https://thinkit.co.jp/article/13857)