Observability · Go

Настроил один раз. Дальше смотрит агент.

kb-monitor наблюдает за сервисами, которые раскатал kb-deploy. У всех команд есть --json со стабильной схемой — агент сам гоняет health, читает логи и реагирует.

Terminal
$_
Конфигурация

Тот же файл, что у kb-deploy.

kb-monitor читает .kb/deploy.yaml — тот же, из которого раскатываются сервисы. Никаких вторых источников правды и параллельных инвентарей.

Деплой и наблюдение по дизайну идут в паре. Если kb-deploy знает про цель, kb-monitor знает про неё тоже.

yaml
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
kb-monitor — KB Labs