Raspberry Pi 3にElasticsearchとKibanaをいれてみた

背景

Raspberry PiでたてたサーバのログをFluentdとElasticSearch,Kibanaで監視,可視化したい.
Fluentdは前回いれたので,今回はElasticSearchとKibanaをいれる.
そこで軽くつまったのでメモ

ElasticSearchのインストール

The Elastic Stack Download · Get Started in Minutes | Elastic
Elasticのホームページから適当にダウンロードしてくる.
今回は2.4.1をダウンロードして,インストールする.(5.0.0が最新だが,Kibanaとの連携がうまくいかなかった.2016/11/02現在)
※elasticsearchにはJavaが必要なのでインストールしておいてください.

$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-2.4.1.zip
$ unzip elasticsearch-2.4.1.zip
$ rm elasticsearch-2.4.1.zip
$ mv elasticsearch-2.4.1 elasticsearch
$ cd elasticsearch
$ ./bin/elasticsearch

これで起動する.

Kibanaのインストール

先程と同様にホームページから適当にダウンロードして,実行する.
今回は4.6.2を使用する.(5.0.0が最新だが,./bin/../node/bin/node: bad option: --no-warningsのようなエラーが出て,調べてもよくわからなかったため,とりあえずバージョンは本質じゃないということで,安心安全のバージョン4.6.2に戻した.)

$ wget https://artifacts.elastic.co/downloads/kibana/kibana-4.6.2-linux-x86_64.tar.gz
$ tar xvfz kibana-4.6.2-linux-x86_64.tar.gz
$ rm kibana-4.6.2-linux-x86_64.tar.gz
$ mv kibana-4.6.2-linux-x86_64 kibana
$ cd kibana
$ ./bin/kibana

が,Kibanaを実行すると,以下のエラーが出た.

./bin/../node/bin/node: 1: ./bin/../node/bin/node: ELF: not found
./bin/../node/bin/node: 17: ./bin/../node/bin/node: Syntax error: ")" unexpected

調べるとRaspberry PiではARMアーキテクチャを使用しているため,nodejsバイナリを変更する必要があるようだ.

$ wget http://node-arm.herokuapp.com/node_latest_armhf.deb
$ sudo dpkg -i node_latest_armhf.deb
$ rm node_latest_armhf.deb
$ cd kibana/node/bin
$ mv node node.orig
$ mv npm npm.orig
$ ln -s `which node` node
$ ln -s `which npm` npm
$ cd ../../
$ ./bin/kibana

無事に動いた.
localhost:5601にアクセスするとKibanaのダッシュボードが表示される.

おまけ

最初,実はElasticSearchは最新だった5.0.0を使用していた.
するとRaspberry Piではメモリが限られているため,以下のようなエラーが出た.

Error occurred during initialization of VM
Could not reserve enough space for 2097152KB object heap

つまりメモリが足りていない.
設定ファイルをいじって対応する.
調べるとES_MAX_MEMやら,-XX:MaxHeapSizeやらいろいろあったが,正解はこれ.

$ vim config/jvm.options
- -Xms2g    #2Gの設定になっている
- -Xmx2g
+-Xms256m    #とりあえず256Mにしてみた
+-Xmx256m

これでメモリの問題は解決.
Kibanaとのバージョンが合わなくて,ElasticSearchのバージョンを落としたため使わなかったが,メモとして残す.