Skip to content

Генератор SLO

Мастер создания SLO (SLO Generator Wizard) — пошаговый интерфейс для создания новых SLO и генерации готовых к использованию конфигурационных файлов для стека мониторинга.

Возможности

  • Пошаговый мастер — форма с валидацией на каждом шаге
  • Пресеты burn rate — предварительно настроенные пороги оповещений (2x/1ч, 6x/6ч, 10x/5м, 20x/30м)
  • Поддержка шаблонов — выбор из встроенных шаблонов сервисов для автозаполнения формы
  • Генерация конфигов — автоматическая генерация OpenSLO YAML, правил оповещений Prometheus, конфигурации Alertmanager и дашбордов Grafana

Доступ к мастеру

Перейдите в SLO Management → New SLO в боковом меню или нажмите SLO Wizard на странице списка SLO.

URL: /slos/new

Шаги мастера

Шаг 1: Сервис

ПолеОписание
Service NameНазвание сервиса (например, payment-service, api-gateway)
Service DescriptionОписание сервиса (необязательно)
SLO NameНазвание SLO (например, api-latency, uptime)
SLO DescriptionЧто измеряет этот SLO
TeamВыбор ответственной команды

Шаг 2: Определение SLO

ПолеОписание
Indicator TypeТип индикатора: availability, latency, throughput, custom
Target (%)Целевое значение SLO (например, 99.9 для 99.9% доступности)
Time WindowОкно оценки: 1h, 24h, 7d, 30d, 90d
ThresholdПороговое значение (например, 200ms для задержки)
Metric QueryPromQL-выражение для индикатора

Поле метрического запроса показывает контекстные подсказки и примеры в зависимости от выбранного типа индикатора.

Шаг 3: Оповещения

Включите оповещения и выберите один или несколько порогов burn rate:

ПресетRatePeriodВажность
2x / 1h2xWarning
6x / 6h6xWarning
10x / 5m10xCritical
20x / 30m20x30мCritical

Также можно указать каналы уведомлений (например, telegram:12345, slack:#alerts).

Шаг 4: Проверка

Проверьте полную конфигурацию перед созданием SLO.

Шаг 5: Готово

После создания можно скачать ZIP-архив со сгенерированными файлами:

ФайлОписание
{service}-{slo}.yamlOpenSLO v1alpha — спецификация SLO
{service}-{slo}-prometheus-alerts.yamlПравила оповещений Prometheus для burn rate
{service}-{slo}-alertmanager-config.yamlПример конфигурации Alertmanager
{service}-{slo}-grafana-dashboard.jsonОсновной дашборд Grafana (burn rate, error budget, алерты)
{service}-{slo}-multi-burnrate-dashboard.jsonДашборд Grafana с несколькими порогами burn rate
{service}-{slo}-README.mdИнструкции по настройке и документация

API Endpoints

Создание SLO

Создаёт новый SLO из данных формы мастера.

http
POST /api/v1/slos/generate

{
  "service_name": "payment-service",
  "slo_name": "api-latency",
  "target": 99.9,
  "time_window": "30d",
  "metric_type": "latency",
  "metric_query": "histogram_quantile(0.95, ...)",
  "threshold": "200ms",
  "team_id": 1,
  "alerting": {
    "enabled": true,
    "burn_rate_thresholds": [
      {"rate": 2, "period": "1h", "severity": "warning"},
      {"rate": 10, "period": "5m", "severity": "critical"}
    ]
  }
}

Ответ:

json
{
  "id": 42,
  "created_at": "2026-06-17T12:00:00Z",
  "updated_at": "2026-06-17T12:00:00Z"
}

Скачивание конфигов

Загружает ZIP-архив со сгенерированными конфигурационными файлами для существующего SLO.

http
GET /api/v1/slos/{id}/download

Возвращает application/zip с заголовком Content-Disposition attachment.

Архитектура

Генератор реализован в пакете internal/generators/ и состоит из:

КомпонентФайлОписание
Оркестраторgenerator.goКоординирует все генераторы, создаёт ZIP
OpenSLOopenslo.goГенерирует OpenSLO v1alpha YAML
Prometheusprometheus.goГенерирует правила оповещений Prometheus
Alertmanageralertmanager.goГенерирует конфигурацию Alertmanager
Grafanagrafana.goГенерирует JSON дашбордов Grafana
READMEreadme.goГенерирует Markdown-документацию
Modelsmodels.goОбщие типы для конфигурации генератора

Обработчик находится в internal/handlers/slo.go:

  • GenerateSLO — принимает данные формы, создаёт SLO в БД, возвращает ID
  • DownloadConfig — читает SLO из БД, генерирует конфиги, возвращает ZIP