Skip to content

AB-Labz Runner

Self-hosted движок вычислений для обработки экспериментов в вашей инфраструктуре.

Что такое Runner

AB-Labz Runner — это Docker-контейнер, который работает в вашей инфраструктуре, обрабатывает данные экспериментов локально и отправляет в облако AB-Labz только агрегированные статистические результаты.

Архитектура

┌─────────────────────────────────┐
│       AB-Labz Cloud             │
│  • Создаёт задачи               │
│  • Получает агрегированную      │
│    статистику                   │
│  • Отображает результаты в UI   │
└────────────┬────────────────────┘

             │ HTTPS (только результаты)
             │ • p-value, CI, эффекты
             │ • Счётчики (без user_id)
             │ • SRM статистика

┌─────────────────────────────────┐
│      AB-Labz Runner             │
│    (в вашей инфраструктуре)     │
│                                 │
│  • Polling задач по расписанию  │
│  • Чтение локальных CSV         │
│  • Статистические расчёты       │
│  • Отправка результатов         │
└────────────┬────────────────────┘

             │ Чтение (read-only)


┌─────────────────────────────────┐
│   Ваши данные (CSV файлы)       │
│   /data/experiments/            │
│                                 │
│   • homepage_test.csv           │
│   • checkout_v2.csv             │
│   • onboarding_flow.csv         │
└─────────────────────────────────┘

Что передаётся в облако

Передаётся:

  • Статистика: p-value, z-score, t-statistic, доверительные интервалы
  • Агрегированные метрики: средние значения, конверсии по группам
  • Счётчики: количество пользователей в группах (без идентификаторов)
  • SRM анализ: распределение по вариантам (без user_id)
  • Метаданные: названия метрик, количество дней, даты

НЕ передаётся:

  • Сырые CSV файлы
  • user_id пользователей
  • Индивидуальные записи событий
  • Email, телефоны, IP-адреса
  • Любые PII (Personally Identifiable Information)

Быстрый старт

1. Получите Runner Key

  1. Войдите в AB-Labz Workbench
  2. Перейдите в раздел Runner
  3. Нажмите "Создать ключ"
  4. Скопируйте ключ (показывается только один раз!)

2. Установите Runner

Вы получите архив runner-client-v1.x.x.zip с файлами:

runner-client-v1.x.x/
├── ab-labz-runner-v1.x.x.tar   # Docker образ
├── docker-compose.yml           # Конфигурация запуска
├── config.yaml                  # Настройки Runner
├── .env.example                 # Шаблон переменных
└── experiments/                 # Папка для CSV (пустая)

3. Настройте окружение

Распакуйте архив runner-client-v1.x.x.zip. Скопируйте файл .env.example и создайте из него файл .env. Отредактируйте файл config.yaml под ваши настройки.

Добавьте ваш ключ в .env:

env
API_URL=https://workbench.ab-labz.com
RUNNER_KEY=abn_runner_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

4. Укажите путь к данным

Отредактируйте docker-compose.yml:

yaml
services:
  runner:
    volumes:
      # ЗАМЕНИТЕ на путь к вашим CSV файлам!
      - /path/to/your/experiments:/data/experiments:ro

Важно: используйте режим :ro (read-only) для безопасности.

5. Загрузите образ и запустите

bash
# Загрузите образ
docker load -i ab-labz-runner-v1.x.x.tar

# Запустите Runner
docker-compose up -d

В логах вы должны увидеть:

AB-Labz Runner initialized
API URL: https://workbench.ab-labz.com
Experiments path: /data/experiments
Runner started successfully

6. Проверьте статус

В интерфейсе AB-Labz (раздел Runner):

  • Статус: Online
  • Последняя активность: только что
  • Обнаруженные файлы: список ваших экспериментов

Конфигурация

config.yaml

Настройки работы Runner:

yaml
# Путь к папке с CSV (внутри контейнера)
experiments_path: /data/experiments

# Интервал проверки задач (секунды)
poll_interval: 60

# Интервал проверки файлов (секунды)
file_check_interval: 300

Когда изменять:

  • Увеличьте poll_interval для снижения нагрузки
  • Уменьшите file_check_interval для более частых обновлений

.env

Секретные данные:

env
# URL платформы AB-Labz
API_URL=https://workbench.ab-labz.com

# Ваш Runner Key
RUNNER_KEY=abn_runner_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Мониторинг файлов

Runner автоматически отслеживает изменения файлов:

При обнаружении изменений:

  • Обновляется информация о размере выборки
  • Пересчитываются метрики SRM

Процесс обновления:

  1. Вы обновляете файл experiment_001.csv (добавили новые данные за день)
  2. Runner обнаруживает изменение mtime файла
  3. Облако AB-Labz получает уведомление
  4. Новая версия анализируется при следующем запуске

Интервал проверки: каждые 5 минут (настраивается в config.yaml)

Безопасность

Рекомендации:

  1. Read-only доступ

    yaml
    volumes:
      - /data/experiments:/data/experiments:ro
  2. Ограничение сетевого доступа

    • Runner должен иметь HTTPS доступ только к workbench.ab-labz.com
    • Настройте firewall для исходящих соединений
  3. Регулярные обновления

    • Обновляйте Docker образ при выходе новых версий
    • Следите за security notices

Управление

Обновление версии

  1. Скачайте новый архив runner-client-v1.x.x.zip
  2. Загрузите новый образ:
    bash
    docker load -i ab-labz-runner-v1.x.x.tar
  3. Обновите docker-compose.yml (версия image)
  4. Перезапустите:
    bash
    docker-compose down
    docker-compose up -d

Решение проблем

Runner не подключается

Ошибка: Failed to send initial heartbeat

Решение:

  1. Проверьте RUNNER_KEY в .env
  2. Убедитесь что ключ начинается с abn_runner_
  3. Проверьте доступ к API_URL (ping, curl)
  4. Проверьте статус лицензии в AB-Labz

Файлы не обнаруживаются

Ошибка: Experiments path does not exist

Решение:

  1. Проверьте путь в docker-compose.yml
  2. Убедитесь что папка существует на хосте
  3. Проверьте права доступа Docker к папке
  4. Путь внутри контейнера: /data/experiments

Задачи не обрабатываются

Ошибка: Experiment file not found

Решение:

  1. Имя файла = <experiment_id>.csv
  2. Проверьте формат CSV (user_id, variant, date)
  3. Убедитесь что файл не пустой
  4. Проверьте кодировку (UTF-8)

Системные требования

Минимальные:

  • Docker 20.10+
  • Docker Compose 1.29+
  • 1 GB RAM
  • 1 CPU core
  • 5 GB дисковое пространство

Рекомендуемые:

  • 2 GB RAM
  • 2 CPU cores
  • 10 GB дисковое пространство
  • Linux host (для production)

Поддерживаемые платформы:

  • Linux (AMD64, ARM64)
  • macOS (Intel, Apple Silicon)
  • Windows (с WSL2)

AB-Labz - Лаборатория продуктовых экспериментов