Observability · Analytics

Все события. Ваш бэкенд.

Каждый плагин, воркфлоу и сервис пишет события через единый IAnalytics. DuckDB, SQLite или плоский файл — данные хранятся у вас, никакого стороннего SaaS.

Трекинг событий

Плагин включает аналитику одной строкой в манифесте.

analytics: true в permissions — и в коде плагина доступен useAnalytics() из SDK или ctx.platform.analytics. Схема события kb.v1: type, ts, source, runId, actor, ctx, payload.

Платформа сама обогащает контекст: product, version, runId. Плагин передаёт только смысловые поля.

typescript
// В любом плагине — через SDK // i18n-ignore
import { useAnalytics } from '@kb-labs/sdk';

const analytics = useAnalytics();

await analytics.track('commit.plan.generated', {
  scope:             'root',
  filesChanged:      14,
  commitsGenerated:  3,
  llmUsed:           true,
  tokensUsed:        1840,
  durationMs:        4200,
});
Бэкенды

SQLite, DuckDB или плоский файл.

Бэкенд выбирается в kb.config.json — одна строка. Данные хранятся локально, нет никакого внешнего сервиса.

Pino (структурированные логи)По умолчанию. JSON-строки, совместим с любым агрегатором.
OpenTelemetryЭкспорт трейсов и метрик в Jaeger, Tempo или OTLP endpoint.
Кастомный адаптерРеализуйте ILogger/IMetrics и подключите через kb.config.json.
json
// kb.config.json
{
  "platform": {
    "adapters": {
      "analytics": "@kb-labs/adapters-analytics-sqlite"
    },
    "adapterOptions": {
      "analytics": {
        "filename": ".kb/analytics/analytics.sqlite"
      }
    }
  }
}
Запросы

getStats. getDailyStats. breakdownBy по payload.

DuckDB адаптер реализует полный IAnalytics: time-series через date_trunc, группировка по любому полю в JSON payload через dot-нотацию, фильтры по type/source/actor/from/to.

REST API возвращает те же данные через /api/v1/observability/metrics/history для дашбордов.

typescript
// getStats() — агрегат по всем событиям // i18n-ignore
const stats = await analytics.getStats();
// {
//   totalEvents: 4821,
//   byType: {
//     "commit.plan.generated": 312,
//     "commit.push.success":   289,
//     "workflow.run.completed": 1840,
//   },
//   bySource: { "commit": 601, "workflow": 1840 },
//   byActor:  { "user:kirill": 4200 },
//   timeRange: { from: "2026-05-01T...", to: "2026-05-24T..." }
// }
Сервисы

kb-monitor — health, логи, exec в контейнер.

Для задеплоенных сервисов — отдельный Go-инструмент. Health checks, стриминг логов, выполнение команд внутри контейнера. Работает с любым сервисом, задеплоенным через kb-deploy.

kb-monitor healthПроверка каждого объявленного таргета. Pass/fail с задержкой.
kb-monitor statusСостояние, uptime и image SHA по каждому таргету.
kb-monitor logs <target> --followСтриминг живых логов. Без SSH.
kb-monitor status --jsonМашиночитаемый вывод для агентов и дашбордов.
kb-monitor
$ kb-monitor health

  gateway       ✓  healthy   uptime 14d 3h
  rest-api      ✓  healthy   uptime 14d 3h
  workflow      ✓  healthy   uptime  6d 1h
  marketplace   ✓  healthy   uptime  6d 1h
  state         ✓  healthy   uptime 14d 3h

$ kb-monitor logs workflow --follow

  [workflow] 14:23:01 run abc123 started · trigger=manual
  [workflow] 14:23:02 step "checkout" completed [0.3s]
  [workflow] 14:23:08 step "build"    completed [5.9s]
  [workflow] 14:23:09 run abc123 finished · status=success
Self-hosted

Данные у вас. Никакого SaaS на пути.

Analytics адаптеры входят в платформу. kb-monitor — отдельный Go-бинарь.

Observability — KB Labs