BlockClock Miniで自作サービスの状態を監視する簡易ダッシュボードを作った話
自分はBTCLog、Paddle、Blocksat Readerなど趣味の零細サービスが多く、それに関連してライトニングノードも複数あったりします。そうなると管理が手間になってしまい、どれかが落ちていても気づかなかったりするので、ひと目で状態異常を確認できるデバイスが目の前にあったらな~と思ったりしていました。
そこで、よく考えると以前から飾っているBlockClock Miniを活用できそうだったので、作ることにしました。
BlockClock Mini
BlockClock Miniとは、ColdcardやOpendimeなどの変わり種ハードウェアウォレットを製造しているCoinkite社が作っている、ビットコインのブロック高や価格、手数料水準などのデータが表示できるIoTデバイスです。
Jackの背後、窓の下にあるやつですね。このインタビューを見た記者がBlockClock Miniを知らなかったため、「モスクワ時間を表示してなにかを伝えようとしているのでは?」という勘違いをしたため、"Moscow Time"っていうミームになりました。(実際は1ドルあたり1952サトシ、という数字を表示しています)
BlockClock Mini自体にはHTTPサーバーが搭載されており、特定のrouteにリクエストを投げると任意の文字列を表示することができます。
BlockClock Mini Push API Documentation
クラウド上のライトニングノードやちょっとしたサービスの監視に役立てようと思い、簡易ダッシュボードを作ることにしました。
余談ですが、AWS EC2のケチったインスタンスで動かしてるLndより、自宅のNUCで動かしてるLndのほうがはるかに安定性高いので、AWS上にライトニングノード立てるのはそのうちやめると思います。
成果
HTTP(S)またはTor越しに、特定のウェブサイトやAPIエンドポイント、ライトニングノード(※LND)へ5分ごとにリクエストを飛ばし、ステータスコード200 (正常)が返ってきたら「OK」、アクセスできなかったりエラーが返ってきたら「ERR」と表示する簡易ダッシュボードができました。
(5分ごとなのは、BlockClock MiniのEインクディスプレイの更新頻度を抑えるためです。ただし、状態が変わらなければ更新しませんが。)
リポジトリはこちらです。
Torに対応したことで、Umbrelのアプリやライトニングノードの状態もひと目で確認できるのがポイントです。あとは、Discordにも対応しているので状態が変わったときにメッセージを飛ばすこともできます。(スマホに簡単に通知できるので便利)
動かすには
Linux (Ubuntu)を念頭に丁寧にREADMEを書いたので、リポジトリを確認してください。引っかかるところは、事前にTorクライアントを入れておく必要があること、安全のためLndのreadonly macaroonをゲットすることくらいでしょうか。
Umbrelなどで動かす場合は、screenやtmuxなどを使ってSSHを閉じてもプロセスが生き続けるようにしてください。
あと、もしBlockClock Miniを移動するなどして再起動した場合は画面が「Hello」に戻ってしまうので、プログラムを再起動してダッシュボード表示に戻してください。
オシャレすぎる
スタートアップのオフィスとかに置きたいですね