複数のサーバーを運用している場合、可視性が必要です - そして、それはSaaS監視ツールの料金を支払ったり、重厚な observability スタックを運用したりせずに得たいものです。Beszelはそのギャップを見事に埋めます。軽量でセルフホスト可能なサーバーモニタリングダッシュボードで、複数のマシンからシステムメトリクスを集約し、一つのインターフェースに表示します。この記事では、なぜBeszelが優れているのか、マルチサーバー環境への設定方法、そして本番運用での活用例について解説します。
なぜBeszelをセルフホステッド監視に選ぶのか?
多くのセルフホスト監視ソリューションは二つのタイプに分かれます:あまりにもシンプル(稼働確認のみ)か、あまりにも複雑(Prometheus + Grafana スタック)。Beszelはその中間であり、PromQLの習得や複数コンテナからなる観測プラットフォームの維持管理を必要とせずに、行動可能なシステムメトリクスを提供します。
主な特徴:
- 最小リソース footprint:Hubは512 MB RAMで動作。エージェントは各10 MB未満のRAMを使用。
- 外部依存なし:SQLiteをバックエンドとして使用し、PostgresやRedisは不要。
- Hub + Agent構成:一つのHubに、無制限の監視対象サーバーを接続可能。
- シンプルで良好なUI:CPU、メモリ、ディスクI/O、ネットワークのチャートをデフォルトで表示 - 設定不要。
- どこでも動作:VPS、ホームラボ、Bare metal、Raspberry Pi でも運用可能。
Beszel Hubを動かすのにおすすめのVPS
| プロバイダー | 価格 | RAM | ストレージ | 特徴 |
|---|---|---|---|---|
| Hetzner Cloud | 4.15 EUR/月 | 4 GB | 40 GB NVMe | EU地域最安値 |
| Contabo VPS | 5.99 EUR/月 | 8 GB | 200 GB NVMe | 最大ストレージ保持容量 |
| Linode (Akamai) | 5 USD/月 | 1 GB | 25 GB SSD | 手頃な価格のグローバル展開 |
| Vultr | 6 USD/月 | 1 GB | 25 GB SSD | 32地域に展開 |
| DigitalOcean | 6 USD/月 | 1 GB | 25 GB SSD | 初心者に優しい onboarding |
監視用途のシナリオ例
1. ホームラブfleetの監視
複数のVPSインスタンス、NAS、ローカルサーバーを運用している場合、Beszelは一つのダッシュボードを提供します。すべてのマシンにエージェントをインストールし、一つのURLで全てのメトリクスを確認可能です。ディスク容量がいっぱいになっているかなど、各サーバーにSSHでアクセスして確認する必要はありません。
2. 本番VPSの監視と管理
NextcloudやGitea、Mastodonといったアプリをセルフホスティングしている方は、Beszelを用いてCPUやメモリのスパイクとトラフィックイベントの関連付けが行えます。過去のチャートからリソースのトレンドを把握し、障害発生前に対策を立てることが容易です。
3. CI/CDビルドサーバーの監視
Woodpecker CI、Drone、Gitea Actionsなどを運用している場合、ビルドジョブによるCPUやメモリの高負荷をBeszelで把握できます。どのタイミングでサーバーに負担をかけているのかを確認し、適切な規模調整を行えます。
4. VPNやネットワークアプライアンスの監視
エージェントはWireGuardやheadscaleノード上でも動作可能で、ネットワークのスループットやシステムヘルスを監視しながらも、公開インターネットにはさらさずに監視情報を収集できます。
マルチサーバー構成
アーキテクチャ
[監視対象サーバー1] -- beszel-agent --> [Beszel Hub VPS:8090]
[監視対象サーバー2] -- beszel-agent --> [Beszel Hub VPS:8090]
[監視対象サーバーN] -- beszel-agent --> [Beszel Hub VPS:8090]
Hubはあなたの中心的なVPSです。各サーバーにはエージェントを運用し、ローカルのメトリクスを定期的に取得してHubに集約します。
Hubのデプロイ
docker run -d \
--name beszel \
--restart unless-stopped \
-p 8090:8090 \
-v beszel_data:/beszel_data \
henrygd/beszel
エージェントの大規模展開
監視対象のサーバーごとに、Beszelダッシュボードの【Add Server】でキーを生成し、次のコマンドを実行します。
docker run -d \
--name beszel-agent \
--restart unless-stopped \
--network host \
-e KEY="<サーバー固有のキー>" \
henrygd/beszel-agent
Ansibleを利用して一括展開も可能です。例:
- name: Beszelエージェントの展開
community.docker.docker_container:
name: beszel-agent
image: henrygd/beszel-agent:latest
restart_policy: unless-stopped
network_mode: host
env:
KEY: "{{ beszel_agent_key }}"
アラートと通知設定
BeszelはWebhookを使ったアラート通知をサポートします。閾値設定例:
- CPU使用率(例:85%以上が持続した場合に通知)
- メモリ使用率(例:90%以上でアラート)
- ディスク使用率(例:80%以上)
Discord通知の設定方法
- Discordサーバの サーバ設定 > インテグレーション > Webhook からWebhookを作成
- WebhookのURLをコピー
- Beszelの 設定 > 通知 に進み、新規WebhookとしてURLを貼り付け
- 各サーバーごとに閾値を設定可能
Slack通知の設定方法
同様にWebhookのURLを作成し、Beszelの通知設定に追加します。
連携サービス
Caddyによるリバースプロキシ設定
monitor.yourdomain.com {
reverse_proxy localhost:8090
}
CaddyはLet’s Encryptを用いた自動HTTPS設定もサポートします。
Resticでのバックアップ
BeszelはSQLiteを使用しているため、バックアップも簡単です。
restic -r s3:s3.amazonaws.com/your-bucket backup /var/lib/docker/volumes/beszel_data/_data/
cronを使って定期バックアップも可能:
0 3 * * * restic -r s3:s3.amazonaws.com/your-bucket backup /var/lib/docker/volumes/beszel_data/_data/ --quiet
Uptime Kumaとの併用
Beszelはシステムメトリクス、Uptime Kumaはサービスの稼働状況を監視します。両方動作させることで包括的な監視が可能です - Beszelがサーバーの調子を教え、Uptime Kumaが特定サービスの稼働状況を教えます。
パフォーマンスとデータ保持
BeszelのSQLiteデータベースは、サーバーの追加や保持期間の拡大に合わせて増大します。大まかな目安:
- 1サーバー、デフォルト保持:年間約50MB
- 10サーバー、デフォルト保持:年間約500MB
- 50サーバー、デフォルト保持:年間約2.5GB
Contaboの200GB NVMeストレージなら、数年間にわたり履歴データの維持も容易です。
よくある質問
Beszelを公開インターネットに公開しても安全ですか?
逆プロキシ経由でHTTPSを設定し、強力な管理者パスワードを使用してください。Beszelは複数ユーザー認証やOIDCには対応していないため、VPNや追加認証(例:AutheliaやCaddyの basicauth)を併用することを推奨します。
BeszelはGrafana + Prometheusの基本的な監視を置き換えられますか?
小~中規模のサーバーフリート(100台未満)であれば十分です。Beszelはほとんどのセルフホスターにとって必要なコアメトリクスをカバーし、運用の複雑さを抑えています。カスタムメトリクスやログ集約、アラートパイプラインには、Prometheusベースのスタックが適しています。
Beszelのアップデートはどうすればいいですか?
最新イメージを取得し、コンテナを再作成します。
docker pull henrygd/beszel:latest
docker compose down && docker compose