ラズパイ4BにElastic Stackを組む

ものすごいボロな x86鯖で Elasticsearch + kibana + Fluentd + Mosquitto な IoTデータ収集をやってる。
いつ壊れるんだろうなーという状態になって4年ぐらい経過した気がする。
実験用でクリティカルでないし放置気味。
先日ちょっと刺さって、じゃ終わりにしますか!としたら「データをサルベージしてくれ!」とかになって。
つぶれから気づく、ごんぎつねの存在。
なんとか復帰して今回はことなきを得たのだが、懲りずに使い続ける。
これまで何度こういうことを繰り返しただろうか。

もうこの手のヤツをシングルノードでゴリゴリやるのとかもう流行らない。
さりとて x86 をいっぱい揃えるとお金もさることながら場所リソース確保が悩ましい。
ということで「貧者の味方ラズパイ」で動かんかなーとなるのだけど、3B+ ぐらいまではメモリ1GBしかなくてちと足りんかった。
ところがココに至って、ラズパイ4B登場。
2GB/4GBが販売されてて、さらに8GBが登場するという。
これはイケるやん!と調べたらガッチリやってる人がいた。

■Raspbian buster でElastic Stack 7.5.1 を動かす
https://qiita.com/Y-Shikase/items/7e6025855454c443f620
OpenJDKとNodejsのバージョンがキモとのこと。
Elastic 6.xの頃に 3B+ に組んだ頃も、同梱されている OpenJDK が x86バイナリで、入れ替えとかやったような記憶がある。
最近は ARM 運用も視野に入ったのか、そのあたりが整理されつつあるとのこと。
OpenJDKは11を使う。
Logstashが OpenJDKの8シバリで、かつてはインストール時には8を使いましょうとか言われていたが、今は同梱されて配布されるようになってるらしい。
Machine Learning のところに x86バイナリあるので、そこは false。
これだけでいいらしい。single-node 設定も入っているので単体で動く。
kibana の方は Nodejs のx86バイナリが同梱されてくるので、それを ARM と差し替えればよい、とのこと。

さっそく手元にあったラズパイ4B(2GB版)に、Raspbian 最新版(5/27版)に入れてみた。
32bit版だけど、そのうち64bit版も出るだろう。なんならubuntuって選択もある。
本番運用は64bitで構成したほうが先が長くていいかもな。
上記記事との違いは、Elasticは最新の 7.8.0 をインストールした。
あと Nodejs のバージョンにこだわりなかったので、ツルシで入った v10.21.0 を使った。
この違いでも問題なく動いた。やったー。

またUI変わったね。

1回目起動してほっとしたが、再起動で動かず。
kibanaのフォルダにヘンなコントロールコードのファイルができるってのは、コチラでも再現した。

なんだこれ?

リンク先の記事あるとおり、コントロールコードのファイルを消すスクリプトを追加する。
この情報ありがたい。これ気づかないと思う。
これなかったらおそらく「動かんなあ」とくじけていたこと間違いない。

Fluentdは手で組み上げすれば動く。
td-agentが更新とかも手軽だけどx86版しか配布してない。
先日どこかで 3.8.0 のARM版みたいのも見かけた気がするんだけどな。

まあ今のボロ鯖の代替ができるようにはなった。
バージョン依存とかあって、たくさんのラズパイに組み上げるなら、Docker イメージにした方がいいよね。
とおもったら、同じ人がやっていた。すごい!
■Raspberry Pi 4Bのdocker上でElastic Stack 7.6.0/7.7.x/7.8.0 を動かす
https://qiita.com/Y-Shikase/items/d162805aebb3a1a8447f
公式からも AArch64(ARM64bit)の Dockerイメージ配布はじまっとる。
https://www.elastic.co/jp/blog/elasticsearch-on-arm
64bitなので、今の Raspbian だとダメだし、kibana は配布されていないらしい。
だがこれは確実に ARM版配布の流れだな。

Dockerまで行ったならば、Kubernetes で組み上げたいよね。
とおもったら、そちらも実現したとのこと。
いやー在宅の暇つぶしにすごいいいネタのような気もする。
問題はx86に比べれば安いといえ、たくさんのラズパイ買ってくれるかなー。

8/20追記。
7.9 の Elastic Stack で、ARM64bit(AARCH64)に対応。
https://www.elastic.co/jp/downloads/elasticsearch
これで導入もラクチンになりましたね。
なおkibanaはARM版ないです。
コントロールコードのワケわからんファイルの処理があるんで、こっちも公式パッケージほしいですね。
Fluentd の ARM 向けパッケージはココにありました。
https://td-agent-package-browser.herokuapp.com/3/ubuntu/bionic/pool/contrib/t/td-agent
よーくみると、arm64 があります。(3.8.0)
ubuntu Bionic 向けのパッケージですが、試して見るとインストーラがちゃんと読み替えてくれて Buster にも入りました。(キケン)
ご参考まで。