Настроил один раз. Дальше смотрит агент.
kb-monitor наблюдает за сервисами, которые раскатал kb-deploy. У всех команд есть --json со стабильной схемой — агент сам гоняет health, читает логи и реагирует.
Тот же файл, что у kb-deploy.
kb-monitor читает .kb/deploy.yaml — тот же, из которого раскатываются сервисы. Никаких вторых источников правды и параллельных инвентарей.
Деплой и наблюдение по дизайну идут в паре. Если kb-deploy знает про цель, kb-monitor знает про неё тоже.
registry: ghcr.io/your-org
targets:
api:
watch: [apps/api/**]
image: my-project/api
ssh:
host: ${SSH_HOST}
user: ${SSH_USER}
key_env: SSH_KEY
remote:
compose_file: ~/app/docker-compose.yml
service: api
permissions:
logs: true
health: true
exec: false
infrastructure:
postgres:
type: docker-image
image: postgres:16
ssh:
host: ${SSH_HOST}
user: ${SSH_USER}
key_env: SSH_KEY
restart: unless-stoppedВсё поддаётся автоматизации.
kb-monitor healthЗапустить health-проверки по всем целям. Pass или fail для каждой, с задержкой ответа.kb-monitor health kb-labs-webПроверить одну цель. Удобно для пост-деплойной верификации в CI или агентном workflow.kb-monitor statusСостояние, uptime и SHA образа для каждой цели. Три вещи, которые нужны во время инцидента.kb-monitor status --jsonСтруктурированный вывод для агентов и дашбордов. Стабильная схема, все поля задокументированы.kb-monitor logs kb-labs-web --lines 100Последние 100 строк логов для цели. Без SSH, без docker ps.kb-monitor logs kb-labs-web --followLive-логи с хоста прямо в терминал. Ctrl-C и всё, ничего не надо чистить.kb-monitor exec kb-labs-web -- df -hВыполнить команду внутри работающего контейнера. Всё после -- уходит как есть.Все команды поддерживают --json для скриптов и агентных workflow
Детали, которые важны.
Health по всем целям одной командой
health запускает HTTP или TCP-проверки по каждой цели из deploy.yaml. Pass или fail, с задержкой ответа.
Состояние, uptime и SHA образа
status показывает три вещи, которые всегда нужны во время инцидента — что сейчас, сколько уже так и какой образ крутится.
Удалённые логи без SSH
logs стримит docker logs с хоста. --lines для tail, --follow для live. Никаких заходов на хост ради одного файла логов.
Настроил один раз. Забыл про мониторинг.
curl -fsSL https://kblabs.ru/kb-monitor/install.sh | sh