ゼロから始めたElasticなんたら

ログ収集するにあたり噂に聞くElasticSearchとKibanaに関して調べてみました。

# ElasticSearchとは
[公式サイト(Elasticsearchって？)](https://www.elastic.co/jp/what-is/elasticsearch) をみると最初に
>分散型でオープンソースの検索・分析エンジン

と書いてあります。
ただ「検索エンジン」と言われると何となくgoogle、yahooみたいなのを想像してしまいます。
ログ収集なのに、あれ？なんかやりたい事と違う？と思ったり思わなかったりですが、とりあえずそれは置いといて...
そこでもう少しだけ調べてとりあえず、データベースっぽいものという認識で一旦落ち着きました。
ちなみに、作っているのはエラスティック社（Elastic N.V.）（N.V.は日本でいう株式会社のオランダ的な表記らしいです＝オランダの企業）です。

# Kibanaとは
[公式サイト(Kibanaについて)](https://www.elastic.co/jp/what-is/kibana) には
>Elasticsearchでインデックスされたデータに、検索と可視化の機能を提供します

とあり、こちらは認識どおりでした。

# とりあえず動かしてみる
実行環境ですが、ローカル仮想環境上のAmazon Linux2(Linux version 4.14.193-149.317.amzn2.x86_64)です。
まずは **/etc/yum.repos.d/elasticsearch.repo** を作ります

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

```
# yum -y install elasticsearch
# yum -y install kibana
# systemctl start elasticsearch
# systemctl start kibana
```
調べるといろいろ必要そうな雰囲気だったのですが、とりあえずElasticSearchとKibanaを動かすだけならこれだけで良いっぽいです。
systemctl status で確認したところ問題なさそうです。
ただ脆弱なローカル仮想環境では速攻メモリ不足に陥ったのでメモリ使用量らしき場所を1GB→128MBに変更しました。

```/etc/elasticsearch/jvm.options
# -Xms1g
# -Xmx1g
-Xms128m
-Xmx128m
```

systemctl restart elasticsearchで再起動し、とりあえずcurlでelasticsearchの動作確認
（もし入ってない場合はyum -y install curlなどでインストールを）

```
# curl http://127.0.0.1:9200
{
  "name" : "*******",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "*****15sQh6fdLnom*****",
  "version" : {
    "number" : "7.9.2",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "*****0ea4a966c4e49417f2da2f244e3e97*****",
    "build_date" : "2020-09-**T**:45:33.626720Z",
    "build_snapshot" : false,
    "lucene_version" : "8.6.2",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
```
なんか動いてることを確認（よくわかってないので一部を一応*でマスク）

```
curl -X PUT "http://127.0.0.1:9200/test_index"
```
index（RDBでいうデータベースのことらしい）の追加ということでこちらも実行

さて一方Kibanaですが何も設定していないので設定します。

```/etc/kibana/kibana.yml
# コメント外して変更します。どこからでもアクセスできる状態？にとりあえず変更します
#server.host: "localhost"
server.host: "0.0.0.0"

#コメント外します。まんまですがelasticsearchの場所の指定ですね
#elasticsearch.hosts: ["http://localhost:9200"]
elasticsearch.hosts: ["http://localhost:9200"]
```
こちらもsystemctl restart kibanaで再起動ししばらく待ってホストのブラウザで確認します。
で、http://192.168.1.1:5601 (当然IPアドレスは環境によって変更してください）を入力

![00.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267249/c281ed53-7fd4-f01c-b964-e8763a29d99b.jpeg)

**Kibanaの起動を確認！**

左上のメニューの下の方の「Stack Management」を選択すると
![01.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267249/7c33386f-0c30-c600-133f-7f2058840dc1.jpeg)

先程PUTしたtest_indexがあることを確認
![02.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267249/4d8dd8e5-075e-4504-eda9-d0e4e756c26d.jpeg)

**ElasticSearchとKibanaの動作確認ができました！**

# メモ

```/etc/elasticsearch/elasticsearch.yml
# network.host: 192.168.0.1
network.host: 0.0.0.0
# ↑を追記（他からデータを入れるならこれが必要？）
``` 

```
/var/log/messagesみたらパーミッションエラーが出ていた際にやってみたこと
# chown elasticsearch:elasticsearch -R /var/log/elasticsearch
# chown elasticsearch:elasticsearch -R /etc/elasticsearch
```

```
# elasticsearch操作いろいろ

# インデックス作成
curl -X PUT "http://127.0.0.1:9200/test_index"

# prettyとつけるとjsonが整形
curl "http://127.0.0.1:9200/test_index?pretty"

# エイリアスはインデックスに着けられる別名
curl http://127.0.0.1:9200/_aliases?pretty

# インデックスの各設定が表示されます
curl http://127.0.0.1:9200/sample_index/_settings?pretty

# 全データ削除
curl -XDELETE 'http://localhost:9200/*'
```