Ubuntu 20.04.2 に Elasticsearch と Kibana をインストールする

# 環境
サーバーは ESXi の VM で作成しました。

- Ubuntu 20.04.2 LTS (Focal Fossa)
- CPU 4Core
- RAM 8GB
- SSD 15GB

インストールしたアプリケーション

- Elasticsearch 7.13.2
- Kibana 7.13.2

# Elasticsearchのインストール
### Elasticsearchの PGP Keyを追加
Elasticsearch のカギを登録します。wget コマンドでElasticsearch のカギをダウンロードして、 apt-key で認証キーを登録します。 

```sh
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
```
wget はオプション q（詳細表示をしない） と O（保存をしない） を使用します。ダウンロードしてきたカギはパイプラインでつなぎ、apt-key に加えます。apt-key は Ubuntu のパッケージ管理ツールである apt のパッケージの認証に使用するキーを管理するコマンドです。


### APTリポジトリ導入

apt-transport-https : httpsサポートの移行パッケージ

```shell
sudo apt-get install apt-transport-https
```

### リポジトリ設定を保存
Elasticsearch を apt-get で install できるようにリポジトリの設定を変更します。

Elasticsearch version7の場合
```sh
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
```

【2023年1月17日追記】
Elasticsearch version8の場合
```sh
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
```


### パッケージのインストール
先ほど `apt-transport-https` を install してリポジトリの設定を変更したので、 Elasticsearch を install する前に update します。 install するパッケージ名は elasticsearch です。

```sh
sudo apt-get update && sudo apt-get install elasticsearch
```

### Elasticsearchの永続化
systemd でElasticsearch を常に起動状態にします。 daemon-reload で設定を読み込み、enable で永続化します。

```sh
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
```

### Elasticsearchの起動
systemd から Elasticsearch を起動します。

```sh
sudo systemctl start elasticsearch.service
```

### 確認
Elasticsearch が起動できているかを確認します。デフォルトではlocalhostの9200番ポートが Elasticserach のアドレスなので curl でアクセスして確認します。

```sh
curl -s http://localhost:9200/
```
こんなのが出たらインストールできています。nameがホスト名であることと、versionのnumberが入れたいElasticsearchのバージョンであることを確認してください。

```json
{
  "name" : "ホスト名",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "クラスターのID",
  "version" : {
    "number" : "7.13.2",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "4d960a0733be83dd2543ca018aa4ddc42e956800",
    "build_date" : "2021-06-10T21:01:55.251515791Z",
    "build_snapshot" : false,
    "lucene_version" : "8.8.2",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
```

# Kibanaのインストール
続いてKibanaのインストールです。

### パッケージのインストール
Kibana のパッケージをインストールします。

```sh
sudo apt install kibana
```

### Kibanaの永続化
Elasticsearch と同じく、systemd で Kibana を常に起動状態にします。

```sh
sudo systemctl daemon-reload
sudo systemctl enable kibana.service
```

### アクセス制御の変更
バックアップをとって設定を変更します。テキストエディタは好きなものを使って構いません。今回は私が使い慣れている vim を使います。

```sh
cd /etc/kibana
sudo cp kibana.yml kibana.yml.org
sudo vim kibana.yml
```

> <details><summary>cdができないとき（error: Permission denied）はこちらをクリック！</summary><div>
以下のコマンドを入力してください。
```sh
ls -la /etc/ | grep kibana
```
同じ出力結果になると思います。見て欲しいのは`drwxr-s---`の部分です。
```sh
drwxr-s---  2 root kibana         4096 Jul  1 08:38 kibana
```
権限を書き加えて cd できるようにします
```sh
sudo chmod o+rx /etc/kibana
ls -la /etc/ | grep kibana
```
```sh
drwxr-sr-x  2 root kibana         4096 Jul  1 08:38 kibana
```
`drwxr-sr-x`と、権限が書き換わりましたね。これで cd ができるようになります。
></div></details>

`# server.host:`のコメントアウトを外して`server.host: 0.0.0.0`を入力してください。

```diff_yaml:/etc/kibana/kibana.yml
- # server.host: 
+ server.host: 0.0.0.0
```


### Kibanaの起動
Elasticsearchと同様に systemd から Kibana を起動します。

```
sudo systemctl start kibana.service
```

### 確認
ブラウザから `http://ホスト名:5601/` へアクセス。ホスト名には先ほどのElasticsearchの確認の際に出力されたホスト名を入力してください。 Welcome to Elastic と出れば成功です。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/690608/dda28852-011b-8d5f-9681-89bb386ff842.png)

#### Kibana のバージョン確認
この方法で導入した Kibana のバージョンは、 Elasticsearch の index をみるコマンドを使用して確認しました。

```sh
 curl 'http://localhost:9200/_cat/indices?v'
```

```s
health status index                             uuid                   pri rep docs.count docs.deleted store.size pri.store.size
yellow open   filebeat-7.13.2-2021.07.02-000001 QiVnaLUaSHKU0qSzO1sqDg   1   1      30726            0     10.4mb         10.4mb
green  open   .kibana_7.13.2_001                MwMSt99lQs-QZgZP0oyvaQ   1   0       2102           43      2.6mb          2.6mb
green  open   .apm-custom-link                  WF3NTS-QSQemEvv7ypbMuQ   1   0          0            0       208b           208b
green  open   .kibana-event-log-7.13.2-000001   I-72SRhkQ9iZTX2aqtGPrg   1   0          7            0     37.9kb         37.9kb
green  open   .apm-agent-configuration          zRa8mt_lRkGotfVO63SV-A   1   0          0            0       208b           208b
green  open   .async-search                     i9X5paBgTpKxXJYc9X3kKA   1   0         32            0     71.9kb         71.9kb
green  open   .kibana_task_manager_7.13.2_001   13ceZgpzTjquJ3YFcvEsQA   1   0         10        66560      5.7mb          5.7mb
green  open   .tasks                            bxH3BbUHRkqMnV4djefNiA   1   0          6            0     34.8kb         34.8kb
```

# 参考文献
- Elasticsearch のインストール
    -  [Install Elasticsearch with Debian](https://www.elastic.co/guide/en/elasticsearch/reference/current/deb.html)
- Kibana のインストール
    - [Install Kibana with Debian](https://www.elastic.co/guide/en/kibana/current/deb.html)
- Kibana のバージョン確認
    - [cat indices API](https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-indices.html)