Мониторинг хостов
Лёгкий агент cronbox-agent ставится на сервер одной командой и раз в 30 секунд отправляет в CronBox состояние хоста: нагрузку, память, диски и Docker-контейнеры. Вы видите все серверы на одной странице и получаете уведомления, когда хост пропадает, контейнер падает или диск заполняется.
Как это работает
- 1
Добавьте хост в панели
На странице «Хосты» нажмите «Добавить хост». Вы получите токен и команду установки, токен показывается один раз.
- 2
Выполните команду на сервере
Установщик скачает агент, проверит контрольную сумму и запустит его как systemd-сервис от отдельного пользователя.
- 3
Смотрите метрики и получайте алерты
Через минуту хост появится на странице со статусом, CPU, памятью, дисками и списком контейнеров.
Установка
curl -fsSL https://cronbox.ru/install.sh | sudo sh -s -- --token wk_xxxxxxxx
# Логи и проверка
journalctl -u cronbox-agent -f
cronbox-agent check # собрать снимок и вывести JSON
# Обновление: повторите команду установки. Удаление:
curl -fsSL https://cronbox.ru/install.sh | sudo sh -s -- --uninstallПоддерживается Linux с systemd на amd64, arm64 и armv7 (Raspberry Pi). Агент делает только исходящие соединения, поэтому работает за NAT и не требует открытых портов. Docker опрашивается через /var/run/docker.sock в режиме чтения; без Docker агент отправляет только системные метрики.
Что собирается
- Система - hostname, ОС, ядро, аптайм, load average, загрузка CPU, память и swap.
- Диски - заполненность реальных файловых систем (tmpfs, overlay и прочие псевдо-ФС исключены).
- Docker - все контейнеры, включая остановленные: состояние, статус и результат healthcheck.
- systemd - сервисы хоста через
systemctl: состояние, автозапуск, описание. Так мониторятся службы, которые работают не в Docker: nginx, PostgreSQL, свои демоны.
Уведомления
Алерты приходят по каналам, настроенным в рабочем пространстве, и только при изменении состояния, поэтому упавший контейнер не будет спамить каждые 30 секунд.
- Хост недоступен - от агента нет отчётов 3 минуты; при возврате приходит уведомление о восстановлении.
- Контейнер упал - остановился с ненулевым кодом, перезапускается по кругу или стал
unhealthy; и снова работает. Завершение с кодом 0 (одноразовые init-контейнеры) проблемой не считается. - Сервис не работает - systemd-юнит перешёл в
failedили остановлен, хотя включён в автозапуск; и снова работает. Отключённые и static-юниты (цели таймеров, разовые помощники) в покое считаются нормой. - Исключения - в подробностях хоста любой контейнер или сервис можно исключить из уведомлений (поля
ignored_containersиignored_servicesв API), например заведомо разовые задания. - Диск заполнен - диск превысил порог: общий для хоста (по умолчанию 90%) или свой для конкретной точки монтирования (поле
disk_thresholds, 0 отключает алерт для диска, например для маленького/boot).
Конфигурация агента
Файл /etc/cronbox/agent.conf:
CRONBOX_TOKEN=wk_xxxxxxxx # токен хоста из панели
CRONBOX_API_URL=https://api.cronbox.ru # по умолчанию
CRONBOX_INTERVAL=30s # от 10s до 10m
CRONBOX_DOCKER_SOCKET=/var/run/docker.sock # пустое значение отключает Docker
CRONBOX_SYSTEMD=true # false отключает опрос systemdЭндпоинты
/hostsСписок хостов с последним снимком
/hostsРегистрация хоста, возвращает токен и команду установки
/hosts/{id}Получение хоста
/hosts/{id}Название, активность и настройки алертов
/hosts/{id}Удаление хоста
/hosts/{id}/regenerate-keyНовый токен, старый перестаёт работать
Агент отправляет снимок в поле host обычного heartbeat воркера (POST /worker/heartbeat), поэтому хост - это внешний воркер с включённым мониторингом. Ограничение на число хостов задаётся тарифом.