Error Budget (Бюджет ошибок)
Error Budget — это расчетное количество ошибок или времени простоя, которое допустимо согласно SLO без негативного влияния на бизнес и пользователей. Бюджет ошибок помогает командам балансировать между внедрением новых функций и поддержанием стабильности системы.
Как рассчитывается Error Budget
Бюджет ошибок = 100% - SLO
- SLO 99.9% → Error Budget 0.1% (43 минуты в месяц)
- SLO 99.5% → Error Budget 0.5% (3.6 часа в месяц)
- SLO 99% → Error Budget 1% (7.2 часа в месяц)
Практическое применение
1# Пример расчета и мониторинга Error Budget
2from datetime import datetime, timedelta
3import logging
4
5class ErrorBudgetCalculator:
6 def __init__(self, slo_percentage, period_days=30):
7 self.slo = slo_percentage
8 self.period_days = period_days
9 self.total_budget_minutes = self._calculate_total_budget()
10 self.consumed_minutes = 0
11
12 def _calculate_total_budget(self):
13 """Рассчитать общий бюджет ошибок в минутах"""
14 total_minutes = self.period_days * 24 * 60
15 error_budget_percentage = (100 - self.slo) / 100
16 return total_minutes * error_budget_percentage
17
18 def add_incident(self, duration_minutes):
19 """Добавить инцидент к потребленному бюджету"""
20 self.consumed_minutes += duration_minutes
21 remaining_percentage = self.get_remaining_percentage()
22
23 if remaining_percentage < 10:
24 logging.warning(f"Error budget critically low: {remaining_percentage:.1f}% remaining")
25
26 def get_remaining_percentage(self):
27 """Получить оставшийся процент бюджета ошибок"""
28 if self.total_budget_minutes == 0:
29 return 100
30 remaining = (self.total_budget_minutes - self.consumed_minutes) / self.total_budget_minutes * 100
31 return max(0, remaining)
32
33 def should_halt_releases(self):
34 """Определить, нужно ли остановить релизы"""
35 return self.get_remaining_percentage() < 5
36
37# Пример использования
38budget_calc = ErrorBudgetCalculator(slo_percentage=99.9, period_days=30)
39budget_calc.add_incident(duration_minutes=30) # 30-минутный инцидент
40
41print(f"Remaining error budget: {budget_calc.get_remaining_percentage():.1f}%")
42
43# Установка мониторинга через pip
44pip install prometheus-client alertmanager-api
45
46# Установка через poetry
47poetry add prometheus-client alertmanager-api
Политика использования Error Budget
- Бюджет > 50% — можно ускорить релизы и эксперименты
- Бюджет 10-50% — обычный темп разработки
- Бюджет < 10% — замедлить релизы, фокус на стабильности
- Бюджет исчерпан — полная остановка новых релизов
FAQ
Что делать, если бюджет ошибок исчерпан?
Нужно замедлить или остановить релизы новых функций и сфокусироваться на повышении стабильности системы до восстановления бюджета.
Как восстановить бюджет ошибок?
Бюджет ошибок восстанавливается автоматически с течением времени, если система работает стабильно и не происходит новых инцидентов.