田舎プログラマーの備忘録

田舎出身のWEBプログラマーが書く備忘録です。

Kibana×ElasticSearchをConoHa(512MB)で動かす

お久しぶりです。

最近、社内のプロダクトで「分析にKibanaを使おうぜ」っていう話が出たので、いままで使ったことがなかったKibanaとElasticsearchをConoHaのVPC最低で動かした話になります。

目次

注意事項 動作環境 ConoHaの準備 Elasticsearchのインストール Kibanaのインストール 確認と学習について

注意事項

この記事はあくまでConoHaでKibanaを動かすことが目的です。

セキュリティの設定など度外視しており、実運用で使うことを考えていません・

本番では実行しないようにしてください。

この設定で事故が起きても責任はとれません。

動作環境

ConoHa - リージョン:東京 - メモリ:512MB - OS:CentOS7(64bit)

Elasticsearch:5.6.1 Kibana:5.6.1

ConoHaの準備

まずは、ConoHaでサーバーを作成しましょう。 画面をすべて出さないですが左のメニューから「サーバー」を選択してください。

  1. リージョン・メモリの選択 f:id:country-dev:20170924215729p:plain サーバーを借りる地域の設定と、メモリの設定をします。 今回は特に考える必要がないので、東京リージョンでメモリは最低の512MBを選択します。

  2. OSの選択 f:id:country-dev:20170924215744p:plain さくっとCentOS 7.3 (64bit)でいいでしょう。 慣れ親しんだOSがあった場合は自分が使いやすいOSを選択してください。 今回は基本的にCentOS7系のコマンドを使いますので、6以前で設定するときには注意してください。

  3. ポートの設定 f:id:country-dev:20170924232259p:plain 必要のないIPv6のポートはチェックを付けないでいいでしょう。

今回Kibanaが5601ポートを使用するので、IPv4は「すべて許可」にチェックをしておいてください。 ConoHa側のインバウンドルールに引っかかってしまい、ポートを開けても通信できない状態になります。

1.サーバーの作成 上記が問題なければ「追加」のボタンを押しましょう。 ここでサーバーが作成されるとともに、料金が発生するので気を付けてくださいね。

Elasticsearchのインストール

1.Javaのインストール ElasticsearchはJava8以上の実行環境が必要です。 もし自身のサーバーにJava8がインストールされていなかったら、先にJava8をインストールしましょう。 今回はopen-jdk1.8をインストールします。

> yum -y install java-1.8.0-openjdk
> yum -y install java-1.8.0-openjdk-devel

念のためJavaのバージョンを確認しましょう。

> java -version

openjdk version "1.8.0_144"
OpenJDK Runtime Environment (build 1.8.0_144-b01)
OpenJDK 64-Bit Server VM (build 25.144-b01, mixed mode)

とりあえず、インストールできました。

2.Elasticsearchのインストール

>vim /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

> yum -y install elasticsearch

> systemctl start elasticsearch 
> systemctl enable elasticsearch

#動作しているか確認
> systemctl status elasticsearch

上記の手順で行えばインストールはできたと思うので、 下記のコマンドで動作しているか確認しましょう

> curl http://127.0.0.1:9200
{
  "name" : "81JvC6n",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "Q_32fYIpRkCBKV7uzgh-bg",
  "version" : {
    "number" : "5.6.1",
    "build_hash" : "667b497",
    "build_date" : "2017-09-14T19:22:05.189Z",
    "build_snapshot" : false,
    "lucene_version" : "6.6.1"
  },
  "tagline" : "You Know, for Search"
}

また、日本語を扱うにはkuromojiと呼ばれるプラグインがいるので、インストールします。

> /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji

Kibanaのインストール

> yum -y install kibana
> vim /etc/kibana/kibana.yml

7行目のコメントアウトを外して、すべての通信を受け付けるようにする
server.host: "0.0.0.0"

21行目のコメントアウトを外す
elasticsearch.url: "http://localhost:9200"

# portが閉じているので解放する
> firewall-cmd --add-port=5601/tcp --permanent
> firewall-cmd --reload 

> systemctl start kibana
> systemctl enable kibana

ここまできたら、Kibanaにアクセスしてみましょう。 http://{自分のサーバーのIPアドレス}:5601/ f:id:country-dev:20170924232814p:plain

ただ、見てみるとわかるとおり、どうもElasticsearchへの疎通で失敗しています。 systemctlコマンドで状態を確認してみましょう。

> systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled)
   Active: failed (Result: signal) since Sun 2017-09-24 22:57:26 JST; 32min ago
     Docs: http://www.elastic.co
 Main PID: 29465 (code=killed, signal=KILL)

Sep 24 22:33:32 host-xxx-xx-xx-xxx systemd[1]: Starting Elasticsearch...
Sep 24 22:33:32 host-xxx-xx-xx-xxxx systemd[1]: Started Elasticsearch.
Sep 24 22:33:33 host-xxx-xx-xx-xxx elasticsearch[29465]: OpenJDK 64-Bit Server VM warning: If the number of pr...s=N
Sep 24 22:57:26 host-xxx-xx-xx-xxx systemd[1]: elasticsearch.service: main process exited, code=killed, statu...KILL
Sep 24 22:57:26 host-xxx-xx-xx-xxx systemd[1]: Unit elasticsearch.service entered failed state.
Sep 24 22:57:26 host-xxx-xx-xx-xxx systemd[1]: elasticsearch.service failed.
Hint: Some lines were ellipsized, use -l to show in full.

というようにエラーが出て、プロセスが死んでいるのがわかります。 ちょっと動かしてtopコマンドを使ってプロセスの状態を確認してみます。 f:id:country-dev:20170924233539p:plain そうすると、明らかにJavaが高負荷をかけてしまっています。 今回は低スペックのVPSを使っているので、メモリが足りずJavaが落ちているようです。 なので、Elasticsearchの設定を以下のように変更します。

> vim /etc/elasticsearch/jvm.options

# 22, 23行目の設定を以下のように変更します。
-Xms128m
-Xmx128m

> systemctl restart elasticsearch

そしてもう一度アクセスしてみます。 f:id:country-dev:20170924235149p:plain

これでいったんKibanaとElasticsearchの設定を終了します。

このあとの学習

私はまだ、Elasticsearchの初心者でもあるので、まずはそちらを勉強しようと思っています。 今のところは下記サイトでElasticsearchのAPIを使用してみたところになります。

qiita.com

参考サイト

ConoHaについて:ConoHaでサクっとWebサーバーを作ろう - Qiita

open-jdk1.8.0のインストール:CentOS6にjdk-1.8.0をインストールした話 - 路地裏カジノ

Elasticsearchのインストール: CentOS 7 : Elastic Stack : Elasticsearch インストール : Server World

Kibanaのインストール: CentOS 7 : Elastic Stack : Kibana インストール : Server World

スペックの低いVPSでelasticsearchを動かす: Elasticsearchのメモリ使用量を減らす | karakaram-blog