Коли серверів у тебе два-три, піднімати заради них Prometheus із Grafana - як забивати цвях мікроскопом: потужно, але довго й з купою конфігів. Beszel закриває 90% потреб домашнього моніторингу значно простіше: легкий hub (веб-інтерфейс + вбудована база) і маленький agent на кожному хості. CPU, памʼять, диск, мережа, температура, статус docker-контейнерів - усе з усіх машин на одній сторінці, з історичними графіками й алертами. Ставиться за кілька хвилин у Docker.
Що потрібно зробити?#
Підняти hub у Docker на одній машині, поставити agent на кожному хості, який хочемо моніторити, і звʼязати їх. Далі - дивитись метрики в браузері. Цього разу я записав два відео: як це ставиться в терміналі і як цим користуватися в браузері.
З чим працюю?#
Два хости зі свіжим Debian/Ubuntu і вже встановленим Docker (нема - це на одну команду):
- hub -
10.10.60.102, тут крутиться веб-інтерфейс (порт8090). - agent -
10.10.60.103, машина, яку моніторимо (агент слухає порт45876).
Версію Beszel фіксую - 0.21.0, щоб усе збігалося з текстом.
Піднімаємо hub#
На хабі створюємо проєкт і кладемо compose.yml:
| |
Запускаємо docker compose up -d - і веб-інтерфейс піднімається на http://10.10.60.102:8090. Агент поки не чіпаємо: щоб його налаштувати, спершу треба зайти в хаб і зареєструвати систему - звідти ми отримаємо ключ і токен для агента.
Перший вхід і реєстрація системи#
Відкриваємо хаб у браузері. На першому запуску Beszel просить створити адмін-акаунт:

Далі тиснемо Add System, вказуємо імʼя (web-01), адресу агента (10.10.60.103) і порт (45876). Beszel одразу показує Public Key і Token - саме їх треба віддати агентові (а ще поряд - готовий docker-compose.yml для нього):

Токен - це секрет. На скриншоті вище я його замалював. У свій
compose.ymlдля агента підставляй реальні значення з цього діалогу, але в git чи кудись назовні їх не публікуй.
Ставимо agent#
Тепер на хості 10.10.60.103 створюємо проєкт агента з тим ключем і токеном:
| |
Ось як виглядають обидва підняття в терміналі - спершу hub, потім agent (видно, як агент підключається до хаба по WebSocket):
Щойно агент стартував - у хабі система зеленіє і починає віддавати живі метрики.
Агент без Docker - один бінар і systemd#
Тягнути Docker на кожну машину лише заради крихітного агента - надмірно. Beszel це передбачає: агента можна поставити як звичайний systemd-сервіс, без контейнерів. У діалозі Add System для цього є окрема вкладка Binary - там той самий ключ і токен, тільки у вигляді готової команди встановлення.
Офіційний скрипт створює користувача beszel, кладе бінар і піднімає systemd-юніт з автозапуском:
| |
Прапори прості: -k - публічний ключ, -t - токен, -url - адреса хаба, -p - порт (типово 45876), -u - деінсталяція. Перевіряємо, що сервіс живий:
| |
Коли що брати? Docker-агент - якщо на хості вже крутиться Docker і хочеться однаковості (compose up - і забув). Бінар - для машин, де Docker не потрібен: не тягнемо цілий runtime заради одного агента, менше оверхеду, звичайний systemd-сервіс. Хаб і метрики виглядають однаково - яким способом поставлений агент, йому байдуже.
Дивимось метрики#
А тепер найцікавіше - як цим користуватися. На головній сторінці всі системи списком із живими CPU/RAM/диском, а клік по будь-якій відкриває деталі з історичними графіками: CPU, памʼять, диск (і його I/O), мережа, температура, статистика docker-контейнерів. Зверху - перемикач діапазону часу.
Жодного PromQL, жодних дашборд-конфігів - усе вже намальовано, лишається дивитись.
Куди далі#
Beszel уміє більше: алерти (поріг по CPU/RAM/диску/температурі - лист або пуш, коли щось не так), моніторинг доступності сервісів, універсальний токен для масового додавання агентів, перегляд із телефона. Але база готова: ти бачиш стан усіх своїх машин на одній сторінці.
Дві звички наостанок, ті самі, що й завжди. Фіксуй версію образу (:0.21.0, не :latest) - моніторинг не те місце, де хочеться сюрпризів після автооновлення. І токен агента - це секрет: тримай його поза git, а якщо світив десь публічно - перевипусти.



