Как работает агент
Никакой магии: агент — это цикл из пяти этапов, который повторяется каждые 30 секунд. Всё, что он умеет чинить, описано декларативными плейбуками, которые можно прочитать глазами.
Цикл: Collect → Detect → Policy → Remediate → Persist
- Collect. Коллекторы снимают состояние: ресурсы (CPU/RAM/диск/inode), службы systemd, журналы, пакетный менеджер, сеть и DNS, LVM и хранилище, синхронизацию времени, доменную аутентификацию, Kubernetes, а также рантайм конкретных сервисов — PostgreSQL, MySQL/MariaDB, nginx/Apache/HAProxy, почту, Java-приложения. Медленный коллектор отсекается по таймауту и не тормозит цикл.
- Detect. Из снимка выводятся классы проблем: «диск заполнен», «служба упала», «репликация отстала», «conntrack переполнен»… Диагностические наблюдения без плана починки помечаются как advisory и не влияют на статус ноды — алерты только на то, с чем можно что-то сделать.
- Policy. Политика решает, что делать с инцидентом: чинить автоматически, запросить подтверждение оператора или только показать. Здесь же действуют лимиты тарифа и режим наблюдения.
- Remediate. Для инцидента подбирается плейбук: сначала прекчеки (безопасно ли чинить), потом шаги, потом верификация «проблема действительно ушла». Не ушла — автоматический откат по описанным шагам. Повторный запуск того же плейбука на том же инциденте дедуплицируется, у каждого класса — свой cooldown.
- Persist. Результат пишется локально (SQLite на ноде) и отправляется в консоль сжатым снимком. Пропала связь — агент продолжает работать автономно, история не теряется.
Push-модель: нода ничего не открывает
Агент сам инициирует все соединения — исходящий HTTPS с Bearer-токеном. Входящий SSH и открытые порты не нужны, серверы за NAT работают без пробросов. Даже браузерный терминал консоли работает через обратный туннель, который поднимает сам агент.
Плейбуки
Плейбук — YAML-файл: класс проблемы, поддерживаемые ОС, уровень риска, разрешённые команды, прекчеки, шаги, верификация, политика отката. В библиотеке их 270, покрывают диски, службы, сеть, БД, Kubernetes и специфику отечественных ОС. Обновления библиотеки агент забирает подписанным архивом — подделать плейбук нельзя (подробнее в «Безопасности»).
Режим наблюдения (monitor-only)
Пока автолечение не включено, агент проходит весь цикл, но вместо исполнения записывает, что именно он бы сделал — список команд виден в инциденте. Это честный «сухой прогон» на вашем реальном парке: можно неделями смотреть, как агент принимал бы решения, прежде чем доверить ему исполнение.
Сколько ест агент
Один бинарь, без интерпретаторов и зависимостей. Системный лимит памяти — жёсткий (1 ГБ hard-cap на уровне systemd, обычное потребление в разы ниже), CPU — единицы процентов на снятие снимка раз в 30 секунд. Watchdog systemd перезапустит агента, если тот завис.