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= фильтрует по категории.
Ответ:
{
"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. Чтобы добавить новый шаблон:
- Добавьте новый
SLOTemplateв массивregistry - Опишите
RecommendedSLIс готовыми PromQL выражениями - Укажите осмысленный
default_targetиdefault_window
После перезапуска сервиса новый шаблон автоматически появится в галерее.