Raspberry Pi + Fluentd + Elasticsearch + Kibana でグラフ化したいものがあったので、まずは Raspberry Pi に Fluentd + Elasticsearch + Kibana の環境を構築する。
環境
各環境は下記の通り。
- Raspberry Pi 2 Model B
- Raspberry Pi 2 OS: Raspbian
- Raspbian の Debian version: 9.4
- Fluentd: 1.2.0
- Elasticsearch: 6.2.4
- Kibana: 6.2.4
Java JRE のインストール
Elasticsearch に Java JRE が必要なので、インストールする。
$ sudo apt-get install openjdk-9-jre
Elasticsearch のインストール
公式サイトの方法で 6.x をインストールしようとすると、うまくいかなかったので、マニュアルで Debian package でインストールする。
$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.deb
$ sudo dpkg -i elasticsearch-6.2.4.deb
このまま起動しようとするとメモリ関連のエラーで起動しないので、メモリの使用量を 1GB から 512MB に設定を修正する。
$ sudo vi /etc/elasticsearch/jvm.options
#-Xms1g
#-Xmx1g
-Xms512m
-Xmx512m
続いて Elasticsearch を起動して、自動起動も設定する。
$ sudo systemctl start elasticsearch
$ sudo systemctl enable elasticsearch
http://localhost:9200 にアクセスして、起動状態を確認する。
$ curl http://localhost:9200
{
"name" : "MoXbKSC",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "ySijyk1GRIihYz8WLkRVqw",
"version" : {
"number" : "6.2.4",
"build_hash" : "ccec39f",
"build_date" : "2018-04-12T20:37:28.497551Z",
"build_snapshot" : false,
"lucene_version" : "7.2.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}
ndenv と Node.js のインストール
Kibana で必要になるので Node.js を ndenv (anyenv) でインストールする。
$ git clone https://github.com/riywo/anyenv ~/.anyenv
$ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(anyenv init -)"' >> ~/.bash_profile
$ exec $SHELL -l
$ anyenv install ndenv
$ exec $SHELL -l
続いて Node.js の v8.11.1 をインストールする。(記事執筆時点の安定版なので。)
$ ndenv install v8.11.1
$ ndenv rehash
$ ndenv global v8.11.1
参考
Kibana のインストール
公式サイトを参考に Elasticsearch と同じようにマニュアルで Debian package をインストールしようとしたら、 CPU のアーキテクチャが違うのでインストールできなかった。
$ wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-amd64.deb
$ sudo dpkg -i kibana-6.2.4-amd64.deb
dpkg: error processing archive kibana-6.2.4-amd64.deb (--install):
package architecture (amd64) does not match system (armhf)
Errors were encountered while processing:
kibana-6.2.4-amd64.deb
仕方がないので tar.gz をダウンロードして、起動することにする。
公式サイトから最新版をダウンロードして、 tar.gz を展開する。
$ wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-linux-x86_64.tar.gz
tar -zxvf kibana-6.2.4-linux-x86_64.tar.gz
./bin/kibana
で Kibana を起動すると Node.js のエラーになる。
参考サイトによると同梱されている Node.js と npm の CPU アーキテクチャが Raspberry Pi のものと異なるために起こるらしい。
参考サイトの通りに Node.js と npm を差し替える。
$ cd node/bin/
$ mv node node.org
$ mv npm npm.org
$ ln -s `which node` node
$ ln -s `which npm` npm
Raspberry Pi の端末以外からもアクセスしたいので、 config/kibana.yml
を下記のように修正する。
$ vi config/kibana.yml
# server.host: "localhost"
server.host: "0.0.0.0"
下記コマンドで Kibana を起動する。
$ bin/kibana
ブラウザで http://{Raspberry Pi の IP アドレスまたはホスト名}:5601
にアクセスして下記の画面が表示されたら OK 。
自動起動したいので cron で OS 起動時に実行するようにする。
$ crontab -e
# 下記行を追加
@reboot kibana-6.2.4-linux-x86_64/bin/kibana
参考
rbenv と Ruby のインストール
Fluentd で必要になるので Ruby を rbenv (anyenv) でインストールする。
$ anyenv install rbenv
$ exec $SHELL -l
続いて Ruby の 2.5.1 をインストールする。(記事執筆時点の最新版なので。)
$ rbenv install 2.5.1
$ rbenv global 2.5.1
Fluentd のインストール
公式サイトにある deb Package のインストール方法ではインストールできなかったので、 Ruby gem でインストールする。
$ gem install fluentd --no-ri --no-rdoc
$ fluent-gem install fluent-plugin-elasticsearch
$ fluentd --setup ./fluent
下記コマンドで起動する。
$ fluentd -c ./fluent/fluent.conf -vv &
下記コマンドで接続のテストをする。
$ echo '{"json":"message"}' | fluent-cat debug.test
2018-05-19 09:12:54.687770576 +0000 debug.test: {"json":"message"}
問題なく接続できている様子。
下記のように Fluentd の設定を修正する。
$ fluent/fluent.conf
# 下記行を追加
<match log.**>
@type elasticsearch
host localhost
port 9200
type_name raps
logstash_format true
</match>
自動起動したいので cron で OS 起動時に実行するようにする。
$ crontab -e
# 下記行を追加
@reboot /home/pi/.anyenv/envs/rbenv/shims/fluentd -c /home/pi/fluent/fluent.conf -d /home/pi/fluent/fluent.pid
参考
以上で、 Raspberry Pi 上に Fluentd + Elasticsearch + Kibana の環境が構築できた。