Beszel
Мониторинг серверов и Docker на своем сервере: ЦП, память, диск и I/O, сеть, температура, GPU, SMART-здоровье дисков и статистика контейнеров с алертами. В версии 0.20 добавились сетевые мониторы - агент сам пробит цели по ICMP, TCP, HTTP и DNS. Ниже - установка, замеры с живого стенда и грабли обновления.
Вердикт
- нужен мониторинг docker и серверов без веса связки Prometheus с Grafana
- парк из нескольких машин, и платить за каждый хост подписку не хочется
- нужны алерты о перегрузе, нехватке диска, упавшем контейнере или systemd-юните
- домашний сервер или NAS: ZFS, SMART, температуры, вентиляторы, GPU
- нужен APM и трейсинг запросов - это OpenTelemetry или Jaeger
- нужны свои бизнес-метрики и дашборды по PromQL - Prometheus с Grafana
- нужен централизованный сбор логов - это Loki или ELK
Что это и какую задачу решает
Beszel собирает с ваших машин метрики и показывает их на легком дашборде: ЦП, память, диски и I/O, сеть, среднюю загрузку, температуры, вентиляторы, GPU и заряд батарей. Отдельно снимает статистику Docker и Podman.
Задача, которую он закрывает, звучит просто: видеть, что происходит с парком серверов, и получать письмо, когда диск заканчивается. Prometheus с экспортерами это тоже умеет - но там четыре компонента и гигабайты, а здесь два маленьких бинарника на Go.
Архитектура из двух частей. Hub - веб-интерфейс и база на PocketBase. Agent - сборщик на каждой наблюдаемой машине. Один хаб собирает весь парк; агент на новой машине ничего не стоит.
Чем отличается от тяжелых аналогов
Сравнение по тому, что реально влияет на выбор.
| Параметр | Beszel | Prometheus + Grafana / Zabbix |
|---|---|---|
| Вес в простое | хаб и агент вместе 17.2 MiB | сотни MiB на стек экспортеров и дашбордов |
| Установка | два контейнера на Go | Prometheus, экспортеры, Grafana, алертменеджер |
| Мониторинг docker | из коробки, без экспортера | через cAdvisor или node-exporter |
| Порог входа | низкий, без языка запросов | нужен PromQL и конфиги |
| Свои бизнес-метрики | нет, только хост и контейнеры | любые |
| Где данные | на вашем сервере | на вашем сервере |
С Datadog и New Relic разница считается деньгами. Datadog берет 15 долларов за хост в месяц при годовой оплате, Netdata Cloud - от 4,5 долларов за ноду; бесплатны у обоих первые пять машин.
На парке из десяти серверов это 150 долларов в месяц против одного маленького VPS. Плата за экономию - глубина: логов, трейсов и длинной истории у Beszel нет.
Сетевые мониторы: проверки с каждой машины
Главное изменение с прошлой версии - и оно меняет позиционирование продукта.
Раньше Beszel отвечал только на вопрос «что с ресурсами». В 0.20 агент умеет пробить цели сам: ICMP, TCP, HTTP или DNS, интервал от секунды до часа, меряются время отклика и потери.
Ключевая деталь - пробы идут с каждой наблюдаемой машины, а не из одной точки. Это ответ на вопрос «как сеть выглядит глазами вот этого сервера»: отвечает ли его шлюз, работает ли его DNS, видит ли он внутренний сервис.
Настраивается целиком в интерфейсе хаба, переменных окружения у агента для этого нет. Выбрали несколько систем - получили по монитору на каждую.
Важно про ICMP в контейнере. В образе агента нет даже ping, работает только сырой сокет. Добавьте агенту cap_add: NET_RAW, иначе ICMP-пробы не поедут. Мониторам TCP, HTTP и DNS ничего не нужно.
Тех-стек и архитектура
Хаб - один бинарник на Go поверх PocketBase и SQLite. Отдельную СУБД поднимать не нужно, все состояние лежит в каталоге beszel_data: системы, метрики, пользователи, алерты.
Агент подключается к хабу по WebSocket и аутентифицируется парой TOKEN плюс публичный ключ хаба. Пару выдает диалог Add System; с версии 0.12 есть и универсальный токен в настройках.
Наш стенд - три контейнера: henrygd/beszel:0.20.0 (хаб, слушает только localhost), henrygd/beszel-agent:0.20.0 и caddy:2 перед ними с автоматическим Let's Encrypt. Наружу торчат только 80 и 443.
Минимальная конфигурация
Реальные требования против официальных.
| Официальный минимум | вендор требований не публикует |
| Реально в простое: хаб + агент | 17.2 MiB |
| С Caddy рядом, три контейнера | 29 MiB |
| Рекомендуем тариф | CPU2-RAM4-DISK50 |
| Что расходуется первым | диск под историю метрик, не память |
Что упрется первым. Весь стек занимает 0,7 процента памяти тарифа CPU2-RAM4-DISK50, так что ограничителем станет не память, а диск: база растет вместе с числом систем и сетевых мониторов. У нас за час с пятью мониторами она набрала 1,3 МБ.
В маркетплейсе Fatmetal
Не хотите ставить руками?
Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий хаб на своем домене, валидный TLS и файл с доступами.
Рекомендуемая конфигурация:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe от 450 ₽/мес
Установка Beszel в Docker
Cloud Server, Ubuntu 24.04, Docker, хаб за Caddy с автоматическим TLS.
Создать сервер и поставить Docker
Тариф CPU2-RAM4-DISK50, Ubuntu 24.04. Docker ставится из официального репозитория, дальше все по SSH.
Подготовить docker-compose
Хаб слушает только localhost, наружу его выводит Caddy. Агент на сети хоста, сокет Docker монтируется только на чтение.
mkdir -p /opt/beszel/beszel_data /opt/beszel/beszel_socket && cd /opt/beszel cat > docker-compose.yml <<'YML' name: beszel services: beszel: image: henrygd/beszel:0.20.0 restart: unless-stopped environment: APP_URL: https://ВАШ-ДОМЕН volumes: - ./beszel_data:/beszel_data - ./beszel_socket:/beszel_socket ports: ["127.0.0.1:8090:8090"] beszel-agent: image: henrygd/beszel-agent:0.20.0 restart: unless-stopped network_mode: host cap_add: [NET_RAW] volumes: - ./beszel_socket:/beszel_socket - /var/run/docker.sock:/var/run/docker.sock:ro environment: LISTEN: /beszel_socket/beszel.sock HUB_URL: http://localhost:8090 # TOKEN и KEY скопируйте из диалога Add System YMLПоднять хаб и завести администратора
docker compose up -d beszel docker exec beszel /beszel superuser upsert admin@example.com 'ваш-пароль'Первый вход в интерфейс - это создание админа, и открыт он всем, кто знает адрес. Команда выше заводит его сразу, не дожидаясь, пока кто-то откроет URL раньше вас.
Подключить агента
В интерфейсе нажмите Add System - хаб отдаст TOKEN и публичный ключ для этой системы. Подставьте их в
beszel-agentи поднимите его. Система появится в списке, метрики пойдут за секунду.
Время от чистой машины до рабочего интерфейса по HTTPS - около шести минут, и сам продукт занимает в них секунды: хаб отвечает через 6 секунд после старта, агент цепляется за 1 секунду, Caddy выпускает сертификат за 13. Остальное - apt и скачивание образов.
Что измерили после запуска
Цифры с живого стенда: docker stats, размеры образов, отклик, TLS.
| Память: хаб | 10.56 MiB |
| Память: агент | 6.65 MiB |
| Память: хаб + агент | 17.21 MiB |
| Память: Caddy | 11.78 MiB |
| Память: три контейнера | 28.99 MiB |
| Образы: хаб / агент / Caddy | 46.7 / 14.9 / 88.8 МБ |
| Отклик снаружи через Caddy | 200 за 143 мс |
| TLS (Let's Encrypt) | verify=0, код 200 |
Агент потяжелел. В версии 0.18.7 мы мерили 2,67 MiB, сейчас 6,65 - в два с половиной раза больше. Это плата за новые сборщики: ZFS, systemd-юниты, SMART и собственные сетевые пробы. Хаб остался прежним.
Проверено на Beszel 0.20.0, сентябрь 2026. На новых версиях результаты могут отличаться.
Где может сломаться
Грабли, на которые мы наступили сами.
С версии 0.19 агент проверяет сертификат хаба. Если хаб стоит за самоподписанным сертификатом или под внутренним центром сертификации, агент откажется подключаться, пока не указан CA_CERT_FILE. С обычным Let's Encrypt, как в нашем стеке, проблемы нет.
Без docker.sock не видно контейнеров. Агенту нужен /var/run/docker.sock в режиме только на чтение. Без него метрики хоста соберутся, а статистика контейнеров - нет.
Первый вход открыт всем. Кто первым откроет адрес хаба, тот и заведет администратора. Заводите его командой сразу после установки, а не когда дойдут руки.
Причина. Так хаб отвечает на попытку отправить почту через релей с самоподписанным сертификатом. Настройки «не проверять сертификат» у Beszel нет вовсе - PocketBase, на котором он построен, такого переключателя не имеет.
Решение. Подложить сертификат вашего центра в контейнер и указать на него переменной SSL_CERT_FILE. Собирать бандл надо на хосте: образ хаба собран из scratch, шелла внутри нет. Системный набор сертификатов берите целиком и дописывайте свой в конец, иначе сломается проверка остального внешнего TLS.
Еще одно наблюдение со стенда. HTTP-монитор считает пробу потерянной, если ответ не пришел за 10 секунд. С российского сервера до зарубежного сайта это срабатывает регулярно - на скриншоте выше именно такая строка. Продукт исправен - он показывает медленный канал таким, какой он есть.
Безопасность и обновления
Обновление - подтянуть образы и пересоздать контейнеры. Хаб и агент держите на одной версии. И читайте примечания к релизу: проект до единицы, ломающие изменения приходят в минорных версиях - история с проверкой сертификатов в 0.19 ровно про это.
docker compose pull && docker compose up -d
Бэкап - это каталог beszel_data с базой PocketBase. Есть и автоматический бэкап на диск или в S3-совместимое хранилище прямо из настроек:
docker compose stop beszel
tar czf beszel-backup.tgz /opt/beszel/beszel_data
docker compose start beszel
Что закрыть перед продом: хаб только за HTTPS и не наружу напрямую, администратор заведен сразу и с сильным паролем, сокет Docker смонтирован на чтение, настроен хотя бы один канал алертов и регулярный бэкап тома. По желанию - вход через OAuth или OIDC с отключенным паролем и второй фактор по одноразовому коду.
Связь с другими стеками
Beszel отвечает на вопрос «что происходит с моими машинами». Полную наблюдаемость он не закрывает - рядом обычно ставят:
- Uptime Kuma - проверки снаружи, с точки зрения постороннего наблюдателя: жив ли сервис для клиентов и что с сертификатом. Сетевые мониторы Beszel отвечают на другой вопрос - как сеть видна изнутри, с самой машины.
- ntfy - свой сервер пуш-уведомлений, удобный приемник алертов Beszel на телефон.
- Wazuh - аудит безопасности и события, когда нужен не только мониторинг ресурсов, но и мониторинг угроз.
- Caddy - реверс-прокси с автоматическим TLS, уже используется в этом стеке.
Когда это НЕ ваш выбор
Нужен APM и трейсинг
Beszel показывает метрики хоста и контейнеров, а не спаны запросов внутри приложения. Разобрать медленный запрос по трейсам он не поможет - это задача OpenTelemetry или Jaeger.
Нужны свои метрики и дашборды
Произвольные бизнес-метрики, конструктор дашбордов и алерты на языке запросов - территория Prometheus с Grafana. Beszel про железо и контейнеры, а не про аналитику.
Нужны логи и длинная история
Логи Beszel не собирает и не ищет - это Loki или ELK. Хранение метрик тоже не рассчитано на годы: продукт про «что сейчас и что было недавно».
Частые вопросы
Чем Beszel отличается от Uptime Kuma?
Uptime Kuma проверяет сервисы снаружи, из одной точки. Beszel меряет ресурсы машины, а его сетевые мониторы пробят цели с каждой машины парка. Вопросы разные, поэтому их часто ставят вместе.
Обязателен ли агент на той же машине, что и хаб?
Нет. Хаб ставится на один сервер, агенты - на любые машины парка. Каждый агент подключается по своим TOKEN и ключу.
Почему агент не подключается после обновления?
С версии 0.19 агент проверяет HTTPS-сертификат хаба. С самоподписанным сертификатом нужен CA_CERT_FILE, иначе соединение отклоняется молча.
Нужен ли docker.sock?
Для статистики контейнеров - да, монтируйте его агенту в режиме только на чтение. Метрики хоста собираются и без него.
Хватит ли тарифа CPU2-RAM4-DISK50?
С запасом: весь стек держит 29 MiB. Тариф берем под рост истории метрик и подключение новых систем.
Есть ли платные функции?
Нет. Лицензия MIT, весь функционал бесплатен, облака вендора не существует. В документации это заявлено прямо.
Как делать бэкап?
Копировать каталог beszel_data с базой PocketBase или включить автоматический бэкап в S3-совместимое хранилище.
Итог
Beszel - самый легкий мониторинг серверов и Docker из тех, что мы разбирали: хаб и агент вместе держат 17,2 MiB, весь стек с Caddy - 29 MiB, установка занимает минуты. Он не строит стек из четырех компонентов и не выставляет счет за каждый хост. В версии 0.20 к метрикам добавились сетевые мониторы, которые пробят цели с каждой машины парка, а не из одной точки, - и это заметно расширяет то, ради чего его ставят. Взамен нужно принять честные ограничения: ни логов, ни трейсов, ни своих метрик здесь нет.
Рекомендуемая конфигурация для установки:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe
Не хотите устанавливать вручную?
Запустите Beszel на этой конфигурации автоматически - от 450 ₽/мес.
Этот стек у нас запущен на тарифе CPU2-RAM4-DISK50. Нашли баг в гайде - напишите, поправим в течение дня.