Серверы и агент
Сервер подключается одной командой: агент раз в 30 секунд шлёт метрики по HTTPS, а пороги, историю и алерты ведёт сервис. Агент написан на Python без сторонних библиотек и работает не от root.
Установка
«Серверы» → «Установить агента»: одна команда на весь проект. Выполните её под root на любом числе машин — руками, через Ansible или cloud-init.
curl -fsSL https://test.assyr.nl/install.sh | sudo sh -s -- --enroll me_… --name web-01 --group prod
- Каждый сервер появляется в списке сам, под своим hostname;
--nameи--groupнеобязательны. - Повторный запуск на той же машине переподключает её, а не создаёт копию.
- «Выпустить новую команду» — старая перестаёт работать, уже подключённые серверы не затронуты.
- Для Ansible есть готовая роль
monitor_agent(переменныеmonitor_agent_*).
Файлы на сервере: агент /opt/monitor-agent/, конфиг /etc/monitor-agent/config.json, логи — journalctl -u monitor-agent.
Что собирает агент
| Что | Подробности |
|---|---|
| CPU | загрузка, user / system / iowait / steal |
| Память | RAM и swap |
| Load average | 1, 5, 15 минут, с пересчётом на одно ядро |
| Диски | заполнение (как в df), иноды, чтение и запись |
| Сеть | входящий и исходящий трафик |
| Сервисы | состояние отмеченных systemd-юнитов |
| Логи | число совпадений с шаблонами в journald — сами строки не уходят |
| О системе | ОС, ядро, ядра и память, виртуализация, время работы |
Если связи с сервисом нет, агент складывает замеры в очередь на диске (до 240 замеров, около 1 МБ) и досылает потом — на графиках не будет дыры. Память агента ограничена systemd.
Что мониторить
Сервер → «Что мониторить». Агент сам находит запущенные systemd-сервисы, диски и сайты из конфигов nginx, Apache и Caddy; вы отмечаете нужное галочками.
- Сервисы — топ-20 известных (nginx, postgres, mysql, redis, docker, php-fpm и другие) узнаются по имени, любой другой следится по правилу «юнит активен».
- Диски — какие точки монтирования проверять на заполнение.
- Сайты — домены из конфигов можно одним нажатием превратить в мониторы.
- Логи — шаблоны по journald, см. раздел «Логи».
Пороги
Алерт срабатывает, когда значение держится за порогом дольше заданного времени: для CPU, steal и load average считается среднее за окно (одиночный всплеск — не проблема), для памяти, диска и сервисов — «за порогом всё это время».
| Проверка | Порог по умолчанию | Держится, мин |
|---|---|---|
| Сервис упал | юнит не active | 1 |
| Диск | 90 % | 2 |
| Иноды | 90 % | 2 |
| RAM | 90 % | 3 |
| Swap | 80 % | 5 |
| CPU | 90 % в среднем | 5 |
| Load average на ядро | 2,0 в среднем | 5 |
| CPU steal | 10 % в среднем | 10 |
- Пороги меняются для всех серверов («Серверы» → «Настройки для всех серверов») или у одного сервера на его вкладке «Настройки».
- «Восстановлено» приходит, когда значение 2 минуты держится ниже 90 % порога: без пинг-понга алерт/восстановлено у границы.
- На физических серверах steal скрыт: там его не бывает.
Сервер не отвечает
Если от сервера нет данных дольше 3 минут (можно выбрать 1, 2, 3, 5, 10, 15 или 30), приходит критичный «🔴 сервер не отвечает» с последними известными значениями. Это замечает сервис, а не агент, — поэтому работает и при полном падении сервера. Свои сбои сети сервис отличает: если замолчала половина серверов и не отвечают внешние адреса, алертов «не отвечает» не будет.
Сервер перезагрузился
Быструю перезагрузку «не отвечает» не ловит: сервер молчит меньше порога, сервисы поднимаются сами. Поэтому сервис сравнивает время загрузки системы, которое присылает агент: если оно сдвинулось вперёд, приходит «🔄 сервер перезагрузился» со временем загрузки и тем, сколько не было данных. Это событие, а не состояние: в журнале алертов оно сразу закрыто. Перезагрузка во время обслуживания записывается в журнал без уведомления. Выключить — «Уведомления» → «Что присылать» → «Сообщать, что сервер перезагрузился».
Группы и массовые действия
- Группа (
prod,client-a) задаётся при установке или в настройках сервера; по ней фильтруется список. - Галочки в списке → заглушить, сменить группу или удалить несколько серверов сразу.
- «Заглушить» на 1 час, 4 часа, сутки или насовсем: проблемы пишутся в историю, но не отправляются.
Обновление и удаление
- Автообновление включено по умолчанию: агент ставит только релиз, подписанный ключом Ed25519, и сам откатывается, если новая версия за 150 с не прислала данные. Выключается для проекта или отдельного сервера; тогда обновить можно кнопкой «Обновить сейчас».
- Удаление агента — «Серверы» → «Удалить агента»: команда убирает файлы, юнит и пользователя. Сервер в кабинете удаляется отдельно, вместе с историей.