Beszelのインストールガイド:わずか15MBのRAMで数十台のサーバーを監視

Monitoring tutorial - IT technology blog
Monitoring tutorial - IT technology blog

なぜ私のサーバーではBeszelがNetdataやZabbixに取って代わったのか?

20台以上のVPSノードを6ヶ月間管理してきた中で、重要なことに気づきました。時には、Zabbixのような巨大なシステムや複雑なGrafanaダッシュボードは必要ありません。どのサーバーがハングしているか、RAMが不足しているか、あるいはネットワークに異常があるかを知りたいだけなら、Beszelがその答えです。

以前はNetdataを使っていましたが、1GBの低スペックVPSでは100MBものRAMを消費していました。Prometheus + Grafanaは設定に手間がかかりすぎます。Beszelはすべてを解決してくれます。SaaSのようなモダンなUI、Go言語による超軽量な動作、および最初からマルチサーバー対応が組み込まれています。

5分でBeszelをデプロイする

システムは、Beszel Hub(管理・表示側)とBeszel Agent(監視対象サーバー側)の2つのパーツで構成されます。Docker Composeを使用して迅速にデプロイしましょう。

1. Beszel Hubのインストール

1台のサーバーをハブとして選択します。以下の内容で docker-compose.yml ファイルを作成します。

services:
  beszel:
    image: 'henrygd/beszel:latest'
    container_name: 'beszel-hub'
    restart: unless-stopped
    ports:
      - '8090:8090'
    volumes:
      - ./beszel_data:/data

docker compose up -d コマンドを実行します。その後、http://サーバーのIP:8090 にアクセスして、初期管理者アカウントを設定します。

2. エージェントをシステムに接続する

Hubのインターフェースで “Add System” をクリックします。システムから識別用の KEY が発行されます。エージェント側のComposeファイルは以下のようになります。

services:
  beszel-agent:
    image: 'henrygd/beszel-agent:latest'
    container_name: 'beszel-agent'
    restart: unless-stopped
    network_mode: host
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      PORT: 4567
      KEY: 'ssh-ed25519 AAAAC3... (あなたのキー)'

このエージェントを他のすべてのサーバーで実行するだけです。自動的に接続され、即座にデータがHubに送信されます。

セキュリティとストレージの仕組み

Beszelは煩雑なPush/Pullメカニズムを使用しません。HubはSSHキーに基づいた安全なプロトコルを介してエージェントに接続します。秘密鍵を持つHubだけがエージェントからデータを取得できるため、一般的なポートスキャン攻撃を防ぐことができます。

Dockerのエラーを素早く特定

私が最も気に入っている機能は、追加設定なしでDocker Statsを監視できることです。docker.sock をマウントすると、各コンテナがどれだけのリソースを消費しているかが一目でわかります。これは、ウェブアプリがメモリリークを起こした際、どのコンテナが原因か分からない時の「救世主」となります。

超軽量なSQLiteデータ

すべての指標はHub上のSQLiteに保存されます。20ノードを継続的に監視しても、半年後のデータベースサイズはわずか300MB程度でした。システムが古いデータを自動的に集約(ロールアップ)するため、容量の増加は非常に緩やかです。

アラート設定と高度なセキュリティ

Telegram経由のアラート設定

BeszelはAppriseの統合により、Telegram、Discord、Slack経由のアラート送信をサポートしています。頻繁な通知を避けるため、スマートな閾値を設定することをお勧めします。例:CPU使用率が90%を超え、かつ5分間継続した場合のみアラートを出す、など。

リバースプロキシによるセキュリティ

8090ポートを直接公開しないでください。Nginx Proxy ManagerやTraefikを使用してHTTPS化しましょう。BeszelはOIDCもサポートしており、Google AuthやAuthentikを使用してダッシュボードの安全性を高めることができます。

6ヶ月間の運用から得た実践的なヒント

システムをより最適化するための注意点をいくつか挙げます。

  • アラートのノイズ対策: デフォルトのディスク使用率80%でアラートを出さないようにしましょう。ログが多いサーバーではTelegramが鳴り止まなくなります。閾値を90-95%に上げることをお勧めします。
  • 低スペックVPSの最適化: エージェントの消費電力はわずか15MB RAMです。ただし、512MBのVPSでは、ディスクI/O負荷を軽減するために UPDATE_INTERVAL を30秒に調整するのが良いでしょう。
  • データのバックアップ: beszel_data ディレクトリを定期的にバックアップしてください。ここにはすべての監視履歴と、設定したノードのリストが含まれています。

Zabbixの重厚さに比べ、Beszelはシンプルで効率的な体験を提供します。DevOpsやSREにとって本当に重要な指標に焦点を当てています。ホームラボや数台のVPSを管理しているなら、今すぐBeszelを試してみてください。白黒の退屈な htop コマンドはすぐに忘れてしまうでしょう。

Share: