Skip to content

SLO Templates ​

Готовые шаблоны SLO для типовых сервисов: HTTP API, базы данных, очереди сообщений, gRPC, кэши. Ускоряют создание SLO и помогают избежать ошибок в PromQL.

Использование ​

В SLO Wizard (шаг 0) отображается галерея шаблонов. Клик по шаблону или конкретному SLI внутри шаблона подставляет:

  • Тип индикатора (availability / latency / custom)
  • Целевой показатель (default target)
  • Временное окно (default window)
  • PromQL запрос (metric_query)

После выбора можно перейти на следующие шаги и скорректировать параметры под свой сервис.

Встроенные шаблоны ​

HTTP API ​

  • Availability — sum(rate(http_requests_total{code=~"2..|3.."}[5m])) / sum(rate(http_requests_total[5m]))
  • Error rate — обратный availability, lower is better
  • Latency p99 — histogram_quantile(0.99, ...)

Target по умолчанию: 99.9% за 30 дней.

Database (PostgreSQL / MySQL) ​

  • Query duration p95/p99
  • Connection pool saturation
  • Replication lag

Target: 99.5% за 7 дней.

Message Queue (Kafka / RabbitMQ) ​

  • Consumer lag
  • End-to-end latency
  • Delivery success rate

Target: 99.9% за 30 дней.

gRPC ​

  • Request rate by status code
  • Server latency p99
  • Error rate (non-OK responses)

Target: 99.9% за 30 дней.

Cache (Redis / Memcached) ​

  • Hit rate
  • Operation latency
  • Memory utilization

Target: 99.95% за 30 дней.

API ​

GET /api/v1/slo-templates ​

Возвращает все шаблоны. Опциональный параметр ?category= фильтрует по категории.

Ответ:

json
{
  "templates": [
    {
      "id": "http-api",
      "category": "HTTP API",
      "name": "HTTP API Service",
      "description": "Standard SLOs for REST/HTTP API endpoints",
      "service_hint": "api-gateway, web-service, public-api",
      "indicator_type": "availability",
      "default_target": 99.9,
      "default_window": "30d",
      "recommended_slis": [
        {
          "name": "Availability",
          "description": "...",
          "query": "...",
          "suggested": true
        }
      ]
    }
  ]
}

GET /api/v1/slo-templates/ ​

Возвращает один шаблон по ID.

Расширение ​

Шаблоны определяются в internal/templates/templates.go как статический registry. Чтобы добавить новый шаблон:

  1. Добавьте новый SLOTemplate в массив registry
  2. Опишите RecommendedSLI с готовыми PromQL выражениями
  3. Укажите осмысленный default_target и default_window

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