Toro_Unit

フリーランスのフロントエンドエンジニア、WordPress エンジニアです

Raspberry Pi で Wi-Fi の死活監視をする

自宅に余っているマシンで Claude Code を実行させたり、外から家のエアコンを点けたりと、家が無人でもインターネットに様々なデバイスが常時接続されてることを前提に生活している昨今です。そんなわけで自宅のネットワークの死活監視をしてみようと思います。

まぁ、落ちてることがわかったところで別途回線を用意しないとリモートで復旧とかは出来ないんですが、それでもエラーが起きてる部分を特定する上でのヒントになれば楽かなということで。

デバイス選定

Raspberry Pi Zero 2 W を昨年末に購入しました。4000円ほどで手に入ったのですが、先ほど確認したら 5000円くらいに値上がりしていてこんなところにも昨今の半導体の値上げが影響するのかと思ってる次第。

また、2.4GHz 帯にのみにしか対応していないので、用途によっては微妙かもしれません。今回は 「2.4GHz 帯が落ちてるなら他もどうせダメだろ」的な運用です。Arduino Uno Q でも同じようなことが出来るので、5GHz 帯に接続したいならこちらがいいかもしれないです。

Raspberry Pi の インストール

特別にこれと言って説明することは無いです。普通に Raspberry Pi OS を入れて Wi-Fi の SSID などを設定すれば良いです。

自宅に転がっていた骨董品の Rasberry Pi 2 だと 32bit しか入らなかったのでそれで一度試したのですが、後述の Mackerel の導入に失敗しました。Rasberry Pi 3 以降を用いて 64bit 版を入れてください。

Mackerel の導入

サーバーの監視ツールの Mackerel を今回は利用しました。メモリ 512MB の Zero 2 W でも特に問題なく動作しています。言われるがままに、初期設定を行うだけでリモートからの死活監視が出来ます。かんたん。

公式のプラグインで http 接続のチェックを行う

公式のチェックプラグインを使うことで様々な条件でアラートを出すことが出来ます。check-http コマンドが追加されるのでこれで http 通信のチェックが簡単にできます。

インストール後 /etc/mackerel-agent/mackerel-agent.conf に、

[plugin.checks.check-http]
command = ["check-http", "-u", "http://your-examplehostname.com"]

のような記述をしておくことで、指定したURLへの http 通信を行いそれに失敗した場合にアラートを通知します。エンドポイントは Cloudflare Workers とかでサクッと作るのが良さげです。

Discord への通知

Mackerel には、問題発生時に Slack への通知サービスがあるのでそれを用いてサクッと設定が出来ます。Discord でチャンネルを作成し、設定から Webhook URL が発行されます。

Discord の Webhook 設定

その発行された URL の末尾に /slack を追加することで、slack の Webhook 用のものがそのまま Discord で使えます。https://discord.com/api/webhooks/your/webhookid/slack のような感じ。

Mackerel での Slack 通知の設定画面

mackerel の「通知チャンネルを追加」から Slack での通知が設定出来るので、先ほど用意した Webhook URL を入力し後は適宜 Mentions を @channel とかにしておけば OK です。

運用してみての感想

年明けから細々と運用してみたのですが、死活監視としては概ね上手くいっている感じです。たまに http 通信に失敗してアラートが出た後30秒後くらいにすぐに成功してその都度 Discord に通知が来るので、時たまそれが鬱陶しいなということがあるくらいです。

Raspberry Pi Connect とかとも組み合わせてリモートで色々設定を確認したり出来て便利だったので、持て余した Rasberry Pi の使い道としてぜひどうぞ。