CrescPia

VPS の監視 - 通知編

サーバーの監視を行うのに Beszel というツールを導入しました。
ダッシュボードで各種メトリクスが確認できるようになりました。
これだけでは終われません。
通知ができてこその監視です。


閾値設定

まずは監視するメトリクスの閾値を決めますが、こんな感じの設定画面です。
threshold

条件を満たすと通知されるようになります。
また、閾値を超えていた状態から復帰しても通知されます。


各項目の有効/無効を設定するスイッチは最初から ON 状態ですが、これを OFF ⇒ ON と操作すると有効になるようです。
値を変更したときも同様にこの操作が必要です。
この辺りは、やや混乱しますが、今後改善されるのではないでしょうか。

どこに通知するか?

お楽しみの通知先の設定ですが、たくさん候補があります。
Notifications | Beszel

下記に加えて、メールも選択肢になります。
threshold

僕は、どれも使っていません・・・。


メールサーバーは以前はあったのですが、障害により VPS を初期化して以来そのままになっています。
メールサーバーを用意するのはちょっと面倒なので何かのサービスを利用したいところです。


Discord を使うことにしました。
サービスの名前はよく耳にするのでこの際、サービスを知ることも兼ねて使ってみます。


通知設定

Discord | Beszel

Discord 側で 連携サービス > ウェブフック から新しいウェブフックを作成します。
threshold

作成された URL は webhook idtoken で構成されています。

https://discord.com/api/webhooks/{webhook id}/{token}

上記のような URL です。


得られた webhook idtoken をBeszel 側で 設定 > 通知 > Webhook / プッシュ通知 で設定します。

tokenwebhook id の部分には実際に取得した値が入ります。

threshold


通知例

アラートの内容と Beszel の URL が通知されます。

通知例 localhost

通知は OK です。URL があともう少し・・・。
URL がローカルの localhost:8090 となっていますが、僕は Beszel を VPS 上で運用しています。
nginx をリバースプロキシとして配信しています。
実際には localhost ではなく FQDN の URL です。
このままではクリックしても何も起こりません。
クリックしたらちゃんとダッシュボードを表示してほしい。


この場合は、Beszel Hub が動いている環境で環境変数 APP_URL に実際の URL を設定しておくとよいです。

APP_URL=https://beszel.example.com/base-path-if-applicable

Reverse Proxy | Beszel


こんな感じで届くようになり、URL をクリックすると配信されているダッシュボードが開きます。 通知例 fqdn



余談ですが、Beszel の Hub は PocketBase を利用して作られています。
ダッシュボードにアクセスする URL のパスを/_/ としてアクセスすると PocketBase の管理画面が表示されます。

https://beszel.example.com/_/

Settings > Application とたどると「Application URL」という設定項目があります。
通知例 fqdn
この URL が通知の時に届くようです。
ここを直接編集しても環境変数を設定するのと同じ結果になります。
実際、環境変数 APP_URL を設定すると、この Application URL の値が設定されることになります。


PocketBase 自体も面白そうです。
また、見ていきたいです。
PocketBase - Open Source backend in 1 file

まとめ

Beszel でメトリクスの監視を行い、通知ができるようになりました。
これでやっと完了・・・とはなりません。


VPS 自体が落ちるということがこれまでに何度かありました。
今のままの監視では、死活監視ができません。
監視の旅は、もう少し続きます。