SLI (Service Level Indicator)

SLI — это специфицированная метрика, которая показывает фактическое значение производительности системы. SLI являются основой для определения SLO и контроля качества сервиса.

Типы SLI

  • Доступность — процент успешных запросов
  • Latency — время отклика системы
  • Throughput — количество обработанных запросов в секунду
  • Процент ошибок — доля неуспешных запросов
  • Качество данных — корректность обработанных данных

Примеры SLI

 1# Пример сбора SLI метрик
 2from prometheus_client import Counter, Histogram, Gauge
 3import time
 4
 5# Метрики для SLI
 6REQUEST_COUNT = Counter('http_requests_total', 'Total HTTP requests', ['method', 'endpoint', 'status'])
 7REQUEST_LATENCY = Histogram('http_request_duration_seconds', 'HTTP request latency')
 8ERROR_RATE = Gauge('http_error_rate', 'HTTP error rate percentage')
 9
10class SLICollector:
11    def __init__(self):
12        self.total_requests = 0
13        self.successful_requests = 0
14        self.latencies = []
15        
16    def record_request(self, status_code, latency):
17        """Записать метрики запроса"""
18        self.total_requests += 1
19        REQUEST_COUNT.labels(method='GET', endpoint='/api', status=status_code).inc()
20        REQUEST_LATENCY.observe(latency)
21        
22        if 200 <= status_code < 300:
23            self.successful_requests += 1
24            
25        self.latencies.append(latency)
26        
27    def get_availability_sli(self):
28        """Рассчитать SLI доступности"""
29        if self.total_requests == 0:
30            return 100.0
31        return (self.successful_requests / self.total_requests) * 100
32        
33    def get_latency_sli(self, percentile=95):
34        """Рассчитать SLI latency (95-й процентиль)"""
35        if not self.latencies:
36            return 0
37        sorted_latencies = sorted(self.latencies)
38        index = int(len(sorted_latencies) * percentile / 100)
39        return sorted_latencies[index]
40
41# Установка мониторинга через pip
42pip install prometheus-client grafana-api
43
44# Установка через poetry
45poetry add prometheus-client grafana-api

Четыре золотых сигнала

Google SRE выделяет четыре ключевых SLI:

  • Latency — время обработки запросов
  • Traffic — количество запросов к системе
  • Errors — процент неуспешных запросов
  • Saturation — насыщенность ресурсов системы

FAQ

Какие бывают SLI?

Основные типы: доступность, latency, throughput, процент ошибок, качество данных, время восстановления.

Как часто собирать SLI?

SLI должны собираться в реальном времени, обычно с интервалом от секунд до минут, в зависимости от критичности сервиса.