軽量サーバ監視ツールBeszelを自宅ラボ環境に導入してみた

monitoringSoftware

はじめに

サーバ監視とかだとZabbixやGrafana+Promethus、もしくはSaaSなサービスなど多くありますが、自宅環境で「とりあえず」で監視環境を使用したい場合に使えそうなBeszelというのを見つけたので試してみることにしました。

Beszelとは

公式サイトには以下のように書かれています。

Beszel is a lightweight server monitoring platform that includes Docker statistics, historical data, and alert functions.

It has a friendly web interface, simple configuration, and is ready to use out of the box. It supports automatic backup, multi-user, OAuth authentication, and API access.

Beszelは、Docker統計、履歴データ、アラート機能を含む軽量なサーバー監視プラットフォームです。

使いやすいWebインターフェース、シンプルな設定、すぐに使用可能な状態で提供されます。自動バックアップ、マルチユーザー、OAuth認証、APIアクセスをサポートしています。

検証環境

今回は検証が目的であるため、Proxmox VE上にLXCコンテナを作成し、そちらにBeszel Hub(サーバ)を、他に存在しているVMやRaspberry PiなどにAgentをインストールすることにしました。

  • Beszel hub
    • Proxmox VE
      • LXCコンテナ(4vCPU, 512MB, 8GB)(Ubuntu 24.04.3 LTS)
  • Beszel Agent
    • Raspberry Pi 3B+
    • LXCコンテナ
    • VM
    • Pine64
    • Rock64Pro

導入方法

Hubのインストール

今回はバイナリをインストールする形で環境構築しようと思います。

Linuxの場合は自動インストールスクリプトが用意されているので導入は簡単です。

kometch@beszel:~$ curl -sL https://get.beszel.dev/hub -o /tmp/install-hub.sh && chmod +x /tmp/install-hub.sh && /tmp/install-hub.sh --auto-update
Creating a dedicated user for the Beszel Hub service...
Creating the directory for the Beszel Hub...
Downloading and installing the Beszel Hub...
Creating the systemd service for the Beszel Hub...

[Unit]
Description=Beszel Hub Service
After=network.target

[Service]
ExecStart=/opt/beszel/beszel serve --http "0.0.0.0:8090"
WorkingDirectory=/opt/beszel
User=beszel
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Loading and starting the Beszel Hub service...
Created symlink /etc/systemd/system/multi-user.target.wants/beszel-hub.service -> /etc/systemd/system/beszel-hub.service.
Setting up daily automatic updates for beszel-hub...
Created symlink /etc/systemd/system/timers.target.wants/beszel-hub-update.timer -> /etc/systemd/system/beszel-hub-update.timer.

Daily updates have been enabled.
The Beszel Hub has been installed and configured successfully! It is now accessible on port 8090.
kometch@beszel:~$ 

その後、http://<beszelサーバのIPアドレス>:8090(デフォルト)にブラウザでアクセスすると以下のような画面が表示されているので、管理者アカウントを作成します。

以下の画面が表示されたら、管理者アカウントの作成が成功し、ログイン出来ています。

ここから監視対象の端末を追加していく形になります。

なお、Docker composeを利用する形だと、docker-compose.ymlを以下のように用意して、docker compose up -dするだけです。

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

Agentのインストール

Dockerを使用する場合

  1. 右上の「+システムを追加」をクリックすると、「Docker」または「バイナリ」を選択できるので、「Docker」を選択します。
  2. 以下の項目を入力します。
    • 「名前」:Beszelで認識される監視対象端末名
    • 「ホスト/IP」:監視対象端末のホスト名またはIPアドレス
  3. 「docker composeをコピー」をクリックし、コピーされた内容を、監視対象端末にてdocker-compose.ymlを作成した上でペーストする。
  4. 監視対象端末にてdocker-compose up -dを実行する
  5. beszelサーバにて、「システムを追加」をクリックする
  6. そうするとすぐにリソース監視の状況が反映されることを確認する

バイナリを使用する場合

対象OSは結構多くサポートされています。

  • Linux
  • FreeBSD
  • MacOSX
  • Windows
  1. 右上の「+システムを追加」をクリックすると、「Docker」または「バイナリ」を選択できるので、「バイナリ」を選択します。
  2. 以下の項目を入力します。
    • 「名前」:Beszelで認識される監視対象端末名
    • 「ホスト/IP」:監視対象端末のホスト名またはIPアドレス
  3. 「Linuxコマンドをコピー」をクリックし、テキストコピーされた内容を、ターミナルで監視対象端末にて貼り付けし実行する。なお途中でAgentの日次アップデート確認を実行するか、という確認があるので、特に問題が無いようであれば「y」を入力する。
  4. beszelサーバにて、「システムを追加」をクリックする
  5. そうするとすぐにリソース監視の状況が反映されることを確認する
curl -sL https://get.beszel.dev -o /tmp/install-agent.sh && chmod +x /tmp/install-agent.sh && /tmp/install-agent.sh -p 45876 -k "<公開鍵>" -t "<トークン>" -url "http://192.168.122.245:8090"
[sudo] password for kometch:                                            
Creating a dedicated user for the Beszel Agent service...
docker:x:990:kometch,Debian-snmp
Adding beszel to docker group
disk:x:6:kometch
Adding beszel to disk group
Creating the directory for the Beszel Agent...
Downloading and installing the agent...
Downloading and installing agent version 0.17.0 from https://github.com ...
###################################################################################################################################### 100.0%
Creating the systemd service for the agent...

Loading and starting the agent service...
Created symlink /etc/systemd/system/multi-user.target.wants/beszel-agent.service → /etc/systemd/system/beszel-agent.service.

Enable automatic daily updates for beszel-agent? (y/n): y
Setting up daily automatic updates for beszel-agent...
Created symlink /etc/systemd/system/timers.target.wants/beszel-agent-update.timer → /etc/systemd/system/beszel-agent-update.timer.

Daily updates have been enabled.

Beszel Agent has been installed successfully! It is now running on 45876.

設定方法

基本的に使用する分には設定する項目は殆どありません。追加で以下の設定項目があることは確認しています。

通知については、自宅環境ではDiscordを使用しているので、以下のように設定するだけでした。

「設定」 -> 「通知」へと遷移し、以下のようにパラメータを設定します。

URL Format

Your Discord Webhook-URL will look like this:

https://discord.com/api/webhooks/webhookid/token

The shoutrrr service URL should look like this:

discord://token@webhookid

なお、何を対象にアラートを通知するかについては、システム一覧から「ベル」のアイコンをクリックすることで、どのシステムを対象とするのか、ステータスの変化やシステムリソースのしきい値を超えた場合はアラート通知するのか、などを設定します。

実際の画面

詳細ビュー

コンテナ

使用した感想

良かった点

  • とりあえずインストールスクリプトが用意されているので、さっくりとリソース監視や死活監視が出来ること
    • もちろんコンテナでの環境構築も容易であることも嬉しいです
  • Hub(サーバ)およびAgentが軽量なのでARMボードなどでも負荷を考慮する必要が少ないこと
  • 画面自体は思ったよりもモダンであること

改善してほしい点

あくまで自分の使う範囲でのことですが、

  • 上に書いたようにディスク監視周りが出来ないこと
  • コンテナ監視おいて、正常に起動しているコンテナのヘルスがなぜか「None」になってしまっていること
  • あくまでエージェント経由で監視するタイプなので、SNMPなどを利用したネットワーク機器などが監視できません。なので監視対象に出来れば嬉しいなとは思います。なお、これについてはdiscussionには上がっているようです。

セキュリティ上の注意点

  • デフォルトではHTTPでの通信
    • 外部からアクセスさせる場合はリバースプロキシ+TLSの使用を推奨
  • Agentとの通信はSSH公開鍵認証を使用
  • ファイアウォール設定: ポート8090(Hub), 45876(Agent)の開放が必要

まとめ

Beszelは自宅ラボ環境でのちょっとした監視に最適な軽量監視ツールでした。

個人的には、基本的な監視設定が簡易であり、Proxmox VE環境やARM系のボード監視に重宝しそうです。特に512MBのLXCコンテナでHub自体が動作する軽さは魅力的だと思います。

こんな人におすすめかなと

  • Raspberry Piやミニマルなサーバで軽量な監視環境を構築したい方
  • ZabbixやPrometheusは重すぎると感じている方
  • Dockerコンテナの監視も含めてシンプルに始めたい方
  • Discord/Webhookでの通知で十分な方

タイトルとURLをコピーしました