今回はシングルボードコンピュータへ
ElasticsearchとKibanaをインストールする方法を紹介します。
対象のシングルボードコンピュータはTinkerboardといった
ARMベースのシングルボードです。
頑張ればraspberryPIでも可能です。
また、単にARMベースのシングルボード上で
ElasticsearchとKibanaをアプリケーションとして動かすのではなく、
サービスとして登録して運用する手順を紹介します。
予めJava8をインストールしておいてください。
Elastic社のサイトから下記のパッケージをダウンロードします。
elasticsearch-6.X.X.deb
kibana-6.X.X-amd64.deb
※XXはバージョンに依る
また、Nodejsも併せてダウンロードしてください。
Linux Binaries (ARM)のARMv7を使用します。
■Elasticsearchインストール
@Elasticsearchインストール
Javaなので環境によらずそのままインストールできます。
sudo dpkg -i elasticsearch-6.X.X.deb
Aフォルダ権限変更
sudo chmod -vR 755 /etc/elasticsearch/
sudo chmod -vR 755 /var/lib/elasticsearch/
sudo chmod -vR 755 /usr/share/elasticsearch/
sudo chmod -vR 755 /var/lib/elasticsearch/
sudo chmod -vR 755 /usr/share/elasticsearch/
Belasticsearch.yml設定変更
amd64専用の機能などを無効化しないと起動に失敗します。
少しおまじないを追加します。
sudo leafpad /etc/elasticsearch/elasticsearch.yml
xpack.ml.enabled: false
bootstrap.system_call_filter: false
※必要に応じて下記も追記する。
network.host: "0.0.0.0"
http.port: 9200
transport.host: localhost
transport.tcp.port: 9300
http.port: 9200
transport.host: localhost
transport.tcp.port: 9300
CJava設定
必要に応じてElasticsearchのメモリ割り当てを変更します。
sudo leafpad /etc/elasticsearch/jvm.options
デフォルトは
-Xms1g
-Xmx1g
-Xmx1g
-server#追記
でメモリ1GをElasticsearchに割り当てる設定です。
Tinkerboardならメモリ2GBなのでデフォルトでも問題ありませんが、
raspberryPIの場合はメモリ1GBなので
システム領域が全く確保できなくなってしまいます。
設定したメモリ領域+200MBが実際のプロセス上で使用するため、
raspberryPIの場合は
-Xms600m
-Xmx600m
-Xmx600m
-server#追記
が妥当だと思います。
ガシガシ使うのであれば
メモリ2GBかつeMMCなTinkerboard Sしか選択肢はありません。
Dサービス起動設定変更
デフォルトでは自動再起動の設定が無効のため、
下記のファイルに追記します。
sudo /bin/systemctl enable elasticsearch.service#ファイル生成
sudo leafpad /etc/systemd/system/multi-user.target.wants/elasticsearch.service
[Service]
・・・・
Restart=always
・・・・
Restart=always
↑1行追加する
・・・・
Eサービス登録
下記のコマンドでサービスを有効化します。
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service
sudo service elasticsearch start
sudo service elasticsearch start
これでElasticsearchがシステム起動時に自動的に起動します。
sudo service elasticsearch statusでサービス状態を確認できます。
http://localhost:9200へアクセスして確認してもよいと思います。
statusで問題なくても9200へアクセスできない場合は
elasticsearch.ymlかjavaの設定に何か問題があることが多いです。
■Kibanaインストール
Kibanaはamd64用にパッケージされているため、
そのままではインストールできません。
@強制的にARM環境にAMD64を追加するために設定を変更する
sudo dpkg --add-architecture amd64
※逆に削除する場合は dpkg --remove-architecture amd64
AAMD64が追加されているか確認する
sudo dpkg --print-foreign-architectures
BKibanaインストール
sudo dpkg -i kibana-6.X.X-amd64.deb
CARM版Nodejs解凍
tar xfv node-v8.XX.X-linux-armv7l.tar.xz
DARM版Nodejsへ置き換え
sudo cp node-v8.XX.X-linux-armv7l/bin/node /usr/share/kibana/node/bin
sudo cp node-v8.XX.X-linux-armv7l/bin/npx /usr/share/kibana/node/bin
sudo cp node-v8.XX.X-linux-armv7l/bin/npm /usr/share/kibana/node/bin
Dkibana.yml設定変更
sudo leafpad /etc/kibana/kibana.yml
下記を追記する
server.host: "0.0.0.0"
Eサービス登録
下記のコマンドでサービスを有効化します。
sudo /bin/systemctl enable kibana.service
sudo service kibana start
sudo service kibana start
これでKibanaがシステム起動時に自動的に起動します。
sudo service kibana statusでサービス状態を確認できます。
http://localhost:5601へアクセスして確認してもよいと思います。
必要に応じてKibanaのNode側もメモリ制限をしてもよいと思います。
NODE_OPTIONS="--max_old_space_size=256"
以上の手順でシングルボードコンピュータへ
ElasticsearchとKibanaをインストールすることができます。
正直、高性能なシングルボードコンピュータ、
Tinkerboard Sでもメモリ1.8GB状態が続くため、
Elasticスタックを運用するのは厳しい面もあります。
ただ、クラスタリングやkibanaとelasticsearchの別運用など
Elasticスタックの特徴を生かして色々遊べそうです。