「こういうのでいいんだよ」監視ソリューション。Beszelを導入(Grafana+Prometheusの代替・Munin+Zabbixの代替)

「こういうのでいいんだよ」軽量監視ソリューション

監視を導入したけど運用が手間になっていませんか?

  • コンテナ対応やマイクロサービス対応で持ち上げられた「Grafana+Prometheus」
  • UIが最悪でphpのアップデート時によく壊れる「Zabbix」
  • シンプルで軽量だけど機能が微妙「Munin」「Nagios」系

これらをまるっと置き換える「Beszel」が良かったので構築手順を残しておく。

構築手順

Beszel | Simple, lightweight server monitoring
Lightweight server monitoring with historical data, Docker stats, and alerts.

※バイナリ(非docker)でのインストールを基準に解説

公式提供の一撃インストール

sudo権限のユーザーで実行

curl -sL https://get.beszel.dev/hub -o /tmp/install-hub.sh && chmod +x /tmp/install-hub.sh && /tmp/install-hub.sh

サービス確認

sudo service beszel status
# ※動いてなければ
sudo service beszel start
sudo systemctl enable beszel

これで8090ポートで管理画面が稼働している

nginx設定

sudo apt install nginx

nginxのconf設定例

sudo vim /etc/nginx/conf.d/beszel.conf

※hq.mydomain.com は各自のドメインにあわせて変更する

証明書は各自で設定すること

server {
    listen 80;
    listen [::]:80;

    server_name beszel.hq.mydomain.com;

    return 301 https://$host$request_uri;
}

server {
    listen 443;
    listen [::]:443;

    server_name beszel.hq.mydomain.com;

    ssl_certificate     /etc/ssl/www/beszel.hq.mydomain.com/fullchain.pem;
    ssl_certificate_key /etc/ssl/www/beszel.hq.mydomain.com/privkey.pem;

    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:10m;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;

    add_header X-Frame-Options DENY always;
    add_header X-Content-Type-Options nosniff always;
    add_header Referrer-Policy strict-origin-when-cross-origin always;
    add_header X-XSS-Protection "1; mode=block" always;

    client_max_body_size 20m;

    location / {

        proxy_pass http://127.0.0.1:8090;

        proxy_http_version 1.1;

        proxy_set_header Host              $host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Forwarded-Host  $host;

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 300;
        proxy_send_timeout 300;
        proxy_connect_timeout 60;

        proxy_buffering off;
    }
}

ブラウザで管理画面を開く

  • 上の例だとブラウザで、beszel.hq.mydomain.com を開く
  • 初回起動時に管理者ユーザーを設定する
  • 空欄の管理画面が表示される

監視対象のエージェントを登録する

  • いちばん上に「docker|バイナリ」のタブがあるのでクライアントに設置するタイプを選ぶ。【※例:dockerを使わない場合は「バイナリ」】
  • 管理画面右上に「システムを追加+」ボタンがあるのでクリック
  • 任意の監視名と、対象のIPアドレス(もしくはホスト名)を登録
  • dockerで導入する場合は「docker composeをコピー」をクリックしてマニフェストを取得する(対象ホストへdockerマニフェストを登録してエージェントを構築する)
  • バイナリで導入する場合は「Linuxコマンドをコピー」をクリックしてコマンドをコピーする(対象ホストへコマンドをペーストして実行することでエージェントが構築される)
  • 右下の「システムを追加」ボタンをクリックすると監視対象が登録される

どのくらい軽量か?

古い2コアのAtomやCeleronで構築してもCPU使用率は2%前後で安定稼働している