サーバーモニタリングは重いスタックを必要としません。Beszelはオープンソースの軽量監視ダッシュボードで、リアルタイムのCPU、RAM、ディスクI/O、ネットワーク統計情報を全体のフリートから一つのWeb UIで確認できます。SQLiteをバックエンドにしており、システム全体のリソース使用状況をシンプルに可視化します。このガイドでは、VPSの選び方、Dockerを使ったBeszelのデプロイ方法、そして最初のサーバーの監視設定について解説します。
Beszelとは?
Beszel(GitHub: henrygd/beszel)は、開発者とホームラボユーザー向けに設計されたセルフホスト型のサーバーモニタリングソリューションです。主要な特徴は以下の通りです。
- Hub + Agentモデル:BeszelのハブはVPS上のポート8090で動作します。監視したい各サーバには小型のエージェントバイナリをインストールします。
- SQLiteバックエンド:外部データベースは不要。監 Metricsはローカルに保存され、バックアップも簡単です。
- 複数サーバーのサポート:一つのダッシュボードから数十台のサーバーを監視可能。
- 非常に軽量:512MB RAMで動作。ハブと各エージェントは最小限のリソースを消費します。
- 展開方法:Docker、Docker Compose、またはスタンドアロンバイナリ。
Netdata(重くて複雑)やUptime Kuma(サービスのヘルスチェックに重点、システムメトリクスは少ない)と比較して、Beszelはクリーンなシステムメトリックスダッシュボードに特化しています。
なぜVPSでBeszelを運用するのか?
専用のVPSでBeszelを稼働させる理由は多岐にわたります。
- 常時監視:ハブは24時間稼働し、監視対象のサーバに依存しません。
- 集中可視化:一つのURLで全サーバの状態を確認できます。
- 独立性:監視サーバや過去のデータは、対象サーバがダウンしても保持され続けます。
- 低コスト:1GB RAMのVPSで十分で、月額費用は5〜6EUR/USD以内に抑えられます。
Beszelに適したVPS比較
| プロバイダー | 価格 | RAM | ストレージ | 特徴 |
|---|---|---|---|---|
| Contabo VPS | 5.99 EUR/月 | 8 GB | 200 GB NVMe | 長期間のメトリクス保存、EUリージョン |
| Hetzner Cloud | 4.15 EUR/月 | 4 GB | 40 GB NVMe | コストパフォーマンス最高、EUリージョン |
| DigitalOcean | 6 USD/月 | 1 GB | 25 GB SSD | 初心者におすすめ |
| Vultr | 6 USD/月 | 1 GB | 25 GB SSD | グローバル展開可能 |
| Linode (Akamai) | 5 USD/月 | 1 GB | 25 GB SSD | コスト重視、信頼性高い |
ホームラボや小規模フリートの場合、Hetzner Cloud(4.15 EUR/月)はストレージと稼働安定性、APIの使いやすさのバランスが取れており特におすすめです。最大限のストレージ容量を求めるなら、Contabo(5.99 EUR/月)は200GB NVMeを備え、多くのサーバの長期メトリクス保存に適しています。
インストール:Dockerを使ったBeszelの展開
前提条件
- Ubuntu 22.04 または Debian 12が動作するVPSが必要。
- DockerとDocker Composeがインストール済み。
- ファイアウォールでポート8090が開放されていること。
ステップ1:Dockerのインストール
sudo apt update && sudo apt install -y ca-certificates curl
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
ステップ2:Beszelハブのデプロイ
docker run -d \
--name beszel \
--restart unless-stopped \
-p 8090:8090 \
-v beszel_data:/beszel_data \
henrygd/beszel
もしくは、Docker Composeを使用してdocker-compose.ymlを作成します。
services:
beszel:
image: henrygd/beszel:latest
container_name: beszel
restart: unless-stopped
ports:
- "8090:8090"
volumes:
- beszel_data:/beszel_data
volumes:
beszel_data:
次に、以下を実行してデプロイします。
docker compose up -d
ステップ3:ダッシュボードにアクセス
ブラウザでhttp://your-vps-ip:8090に移動。初回起動時に管理者アカウントの作成を促されるので、強力なパスワードを設定してください。
ステップ4:サーバーエージェントの追加
監視したいサーバーごとにBeszelエージェントをインストールします。対象サーバー上で次のコマンドを実行します。
docker run -d \
--name beszel-agent \
--restart unless-stopped \
--network host \
-e KEY="<ダッシュボードから取得したエージェントキー>" \
henrygd/beszel-agent
エージェントキーは、BeszelハブのUIのAdd Serverボタンをクリックしたときに生成されます。コピーして上記コマンドに貼り付けてください。
ダッシュボードの概要
サーバーが接続されると、Beszelのダッシュボードには次の情報が表示されます。
- CPU使用率 - コア別・全体平均、履歴チャート。
- メモリ - 使用済み、キャッシュ済み、空き容量。
- ディスクI/O - デバイスごとの読み書きスループット。
- ネットワーク - インバウンド/アウトバウンドの帯域幅。
- システム情報 - ホスト名、OS、稼働時間、カーネルバージョン。
チャートはインタラクティブで、任意の期間を選択可能です。すべてのデータはSQLiteに保存され、/beszel_data/に格納されます。
よくある質問
Beszelはアラート機能をサポートしていますか?
はい。BeszelはWebhookを使った基本的なアラートをサポートしています。ダッシュボード上でCPU、メモリ、ディスクの閾値を設定でき、Discord、Slack、Webhookエンドポイントへ通知を送ることが可能です。
Beszelをリバースプロキシの背後に設置できますか?
可能です。BeszelはNginx、Caddy、Traefikの背後でも動作します。プロキシを設定してHTTPSトラフィックをポート8090に転送し、Let’s EncryptでSSL証明書を導入すれば本番環境にも適しています。
コンテナの再起動後もBeszelのデータは保持されますか?
はい。beszel_dataという名前付きボリュームをマウントすれば、SQLiteデータベースとメトリック履歴はそのまま保持されます。必ずDocker Composeファイルにボリュームを含めてください。