GH GambleHub

SLO/SLA және метриктер

SLO/SLA және метриктер

1) Терминдер мен иерархия

SLI (Service Level Indicator) - өлшенетін көрсеткіш «пайдаланушы бізді қалай көреді»: табысты сұраулар үлесі, p95 жасырындылық, деректердің жаңаруы, табысты өңделген батша үлесі және т.б.
SLO (Service Level Objective) - бақылау аралығындағы (28/30/90 күн) SLI нысаналы мәні. Мысал: "99. Сұраулардың/төлемдердің 9% ≤ 400 мс" аяқталады.
Error budget — 1 − SLO. SLO 99 кезінде. 9% қателер бюджеті = 0. 1% уақыт/сұраулар.
SLA (Agreement) - қызмет көрсетудің заңды маңызы бар деңгейі: SLO, өлшеуді, ерекшеліктерді, өтемақыларды/айыппұлдарды қамтиды.

2) Жобалау қағидаттары

Симптомдар> ішкі метрика. SLI нақты пайдаланушы тәжірибесін көрсетуі тиіс.
Кілт SLI саны аз. Сервиске - 2-5 негізгі: табыстылық, жасырындылық, өткізу қабілеті/жаңалық, дұрыстық.
Сындарлы жолдарды қамту. Әрбір бизнес-сценарий үшін (checkout, login, webhook, ETL-жүктеу) - өзінің SLI/SLO жиынтығы.
«Табыстың» қатаң семантикасы. «Код 200» емес, «пайдаланушы мерзімінде жауап алды және валиден нәтижесі».
Сыртқы және ішкі SLO бөлу. Ішкі - қатаңырақ; сыртқы SLA ≤ 1-2 тоғыздан төмен.

3) SLI каталогы (референс)

3. 1 API/онлайн-сервистер

Сәттілік: 'SLI _ success = 1 − (5xx + timeout + business_error )/ all_requests'

Жасырындылығы: p95/p99 'http _ server _ duration _ seconds' маршруттар/әдістер/жалға алушылар бойынша

Өткізу қабілеті: 'RPS '/лимиттер/квоталар

Дұрыстығы: валидті жауаптардың үлесі (сигнатуралар, схемалар, инварианттар)

3. 2 Вебхактар/асинхронды жеткізілімдер

Жеткізу: T секундта расталған оқиғалардың үлесі және N ретрай ≤

Тапсырыс берушілер: ұзақ кідіріссіз жазылушылардың үлесі (пер-тенант)

3. 3 Деректер/ETL/DWH

Жаңалық (freshness): 'now − last_successful_ingest_ts'

Толықтығы: 'ingested _ rows/ expected_rows'

Дұрыстығы: сапа тексеруінен өткен жазбалар үлесі

Пайплайндар: мерзімге дейін аяқталған джоб үлесі

3. 4 Мобильді/клиенттік SDK

Клиенттік табыс: қателіксіз сессиялар үлесі

round-trip жасырындылығы: p95 сұраудан рендерге дейін

Кэш-хиттер: кэштен қызмет көрсетілгендердің үлесі (перформанс белгісі ретінде)

4) Мақсаттардың формулалары мен мысалдары

Қолжетімділік (сұрау бойынша):
  • `SLI_req_avail = 1 − (failed_requests / total_requests)`
  • `SLO_req_avail = 99. 95% 30 күнге → error budget = 0. 05% сұраулар.
Қол жетімділік (уақыт бойынша):
  • `uptime = (obs_window − downtime) / obs_window`
Жасырындылық:
  • ' SLO _ latency = p95 (route = »/pay») ≤ 400 ms' 7 күндік қималарда, кэш-жылынуларды қоспағанда (1%)
Деректердің жаңаруы:
  • ' SLO _ freshness (dataset =» orders») ≤ 10 min' p99 24 сағат ішінде.

5) Error budget және өзгерістерді басқару

Бюджет (B): 'B = 1 − SLO'.
Бюджет шығысы (burn): нақты қателердің жол берілетін қателерге қатынасы.

Саясат:
  • Артық шығын (burn> 1) → фичфриз, сенімділікке назар аудару.
  • burn rate> X кезінде қысқа терезеде - инцидент және тамшы. шаралар.
  • Жоспарлау: сенімділікке спринттің үлесі өткен кезеңдегі burn-мен корреляцияланады.

6) Алертинг: burn rate және көп терезелі ережелер

Идея: жылдам ағуды және баяу дрейфті ұстаймыз.

Мысал (SLO 99. 9%, бюджет 0. 1%):
  • Сыни: «1 сағат ішінде бюджеттің 2%» (жылдам өрт).
  • Ескерту: «6 сағат ішінде 5% бюджет» (жайылмалы тозу).
Ережелер:
  • Тез оқиғалар үшін қысқа терезе (минут-сағат).
  • Трендтер үшін ұзын терезе (6-24 сағат).
  • Жасырындылығы: флаппингті басатын ≥ 5 мин табалдырығы бойынша алерт және трасса қозғалтқыштарымен байланыс.
Өрнек үлгісі (логика):

error_ratio_5m = errors[5m] / requests[5m]
error_ratio_1h = errors[1h] / requests[1h]
burn_5m     = error_ratio_5m / error_budget_fraction burn_1h     = error_ratio_1h / error_budget_fraction alert_critical if burn_1h > 14 and burn_5m > 14 alert_warning  if burn_6h > 6 and burn_30m > 6

7) Көп жалға алу (multi-tenant) және сегменттеу

SLI/SLO жалға алушылар/жоспарлар/өңірлер бойынша есептеледі, әйтпесе медиана ақауларды «жабады».
Статистикалық маңыздылыққа арналған оқиғалардың ең аз саны (guard-rails).
SLA тарифтер бойынша ерекшеленуі мүмкін (мысалы, "Pro 99. 9%, Free 99. 5%»).

8) Бақылаумен және трассировкамен байланыс

SLI метрикасы - exemplars → гистограммаларынан/есептеуіштерінен «нашар» трейстерге көшу.
Логи - себептердің көзі: таймауттар, бизнес-қателер кодтары, лимиттер.
Деректер үшін - lineage байланысы: «қандай джоба жаңалық метрикасын кешіктірді».

9) Келісімшарттар және SLA

SLA мазмұны:
  • SLI/өлшеу/терезе әдісін анықтау.
  • Ерекшеліктер (жоспарлы жұмыстар, форс-мажор).
  • Тосын оқиғалар мен коммуникация рәсімі (статус-бет, RFO/RCA).
  • Өтемақы (service credits) және сұрау тәртібі.
  • Юрисдикциясы, қолданылу кезеңі, қайта қарау шарттары.
Ұсынымдар:
  • СЛО-ны сәулет пен операциялық тәжірибеден гөрі ешқашан қатаң уәде бермеңіз.
  • Ішкі SLO мен сыртқы SLA-ны бөліңіз.

10) Құны және басымдылығы

Тоғызыншы жылдардың бағасы желілік емес. «99. 9% → 99. 99%" = өзге сәулет сыныбы (N + 1, мультизон, актив-актив).
SLO-ны ең құнды пайдаланушы әрекеттеріне қойыңыз.
Телеметрияның құнын бақылаңыз: downsampling, квота, реплика және сыныптар бойынша сақтау.

11) Рәсімдер мен есептілік

Апта сайынғы есептер: сервистер/жалға алушылар бойынша SLO орындау, бюджет шығысы, топ-себептер, жақсарту жоспарлары.
Постинциденттік RCA: бюджет бөліктерімен байланыстырамыз; түпкі себептерді жоюға міндеттер қоямыз.
Фичфриз: қосу/алу критерийлері.

12) Үлгілер (жылдам бастау үшін)

12. 1 SLO карточкасы (мысал)


Service: Checkout API
SLI:
success: 1 - (5xx+timeouts+biz_failures)/all latency_p95: p95(http_server_duration_seconds{route="/pay"})
SLO:
success: 99. 95% / 30d latency_p95: ≤ 400ms / 7d
Windows:
primary: 30d rolling secondary: 7d rolling
Burn Alerts:
critical: use 1h/5m > 14 warning: use 6h/30m > 6
Owner: Team Checkout
Tenancy: per-tenant (≥ 1k req/day threshold)
Dashboards: RED + trace exemplars

12. 2 «SLO жетілгендігі» кестесі

ДеңгейСипаттамалары
0Жоқ SLI, CPU/Memory бойынша алерта
1SLI бар, қарапайым табалдырықтар
2Burn-rate тәуекелдері бар SLO, есептілік
3Көп жалға берілетін SLO, фичфриз, жоспар бойынша күрделі салымдар
4Өтпелі SLO (клиент → бэкенд → деректер), авто-ремедиация, канареялық SLO

13) Ережелер үлгілері (фрагменттер)

PromQL - сәттілік/қателер/жасырындылық:
promql
Error rate (5xx + timeout) for the sum (rate (http_requests_total{route="/pay",code=~"5. route.    599"}[5m]))
/ sum(rate(http_requests_total{route="/pay"}[5m]))

p99 histogram_quantile latency (0. 99, sum(rate(http_server_duration_seconds_bucket{route="/pay"}[5m])) by (le))
burn-rate (ереже идеясы):
promql error_budget_fraction = 0. 001 for 99. 9%
(err_rate_5m / 0. 001 > 14) and (err_rate_1h / 0. 001 > 14) # critical
(err_rate_30m / 0. 001 > 6) and (err_rate_6h / 0. 001 > 6)  # warning
Деректердің жаңаруы:
promql
Data order lag (minutes)
(max(time()) - max(last_ingest_ts_seconds{dataset="orders"})) / 60

14) Деректерге арналған SLO және ML (ерекшеліктері)

Толассыз SLO деректері: p99 жаңалық, p99 толықтығы, ақаулықтан кейін «қайта өңдеу» уақыты.
Деректердің келісімшарттары: күтілетін схемалар, көлемдер, шекті мерзімдер; бұзушылық → деректердің инциденті.
ML: SLO инференстің жасырындылығына, SLA фич-стор қолжетімділігіне, дрейф мониторингіне (модель сапасы - жеке тақырып, SLA-дан тыс).

15) Қауіпсіздікпен және құпиялылықпен интеграциялау

PII/құпиясыз SLI логтары; токенизация/бүркемелеу.
SLO/SLA өзгерістерінің және өзгермейтін журналдарда есептерді жариялаудың аудиті.
Реттеуші жолдар үшін (төлемдер/PII) - жеке, неғұрлым қатаң SLO.

16) Чек парақтары

Сервисті іске қосар алдында

  • SLI «сәттілік/жасырындылық/өткізу қабілеті/жаңалық» анықталды.
  • SLO және терезелер орнатылған; қателер бюджеті есептелген.
  • burn-rate (қысқа + ұзын) күйге келтірілген.
  • Дашбордтар RED + exemplars → трасса; инциденттердің рунибуктары.
  • Көп жалға алынған тіліктер мен маңыздылық шегі.
  • Фичфриз және есептілік рәсімі.

Пайдалану

  • SLO/burn бойынша апта сайынғы есеп, hardening жоспарлары.
  • Сәулет/жүктеме өзгерген кезде SLO қайта бағалау.
  • Мерзімді «инцидент-жаттығулар» және рунибуктарды жаңарту.
  • Телеметрия құнын және SLI санын бақылау.

17) Runbook’и

Runbook: p99/pay жылдам өсуі

1. Алерт р99> табалдырық → дашборд ашу → exemplar арқылы трейске өту.
2. CLIENT/SERVER-span тар аймақтарын/нұсқаларын салыстыру.
3. Деградацияны қосу (кэш/лимит/фоллбек), тәуелділік пәрменін хабарлау.
4. Тұрақтандырудан кейін - RCA, оңтайландыру міндеттері, SLO-өлшеулерді жаңарту.

Runbook: бюджет шығыны> аптасына 50%

1. Фичтерді қатыру, сенімділік басымдығын көтеру.
2. Қателерді кластерлеу: маршруттар/жалға алушылар/тәуелділіктер бойынша.
3. Түзетулерді шығару → үрдісті қалпына келтіруді растау.
4. Ретроспектива және аллергтерді/шектерді түзету.

18) FAQ

С: Қанша SLO керек?
О: Сыни пайдаланушы сценарийлерінің минимумы: табыс + жасырындылық. Қалғандарының бәрі - қажеттілігіне қарай.

С: Не жақсы - уақыт бойынша немесе сұрау бойынша қол жетімділік?
О: Сұрау бойынша - көбірек пайдаланушы метрикасы. Уақыт жағынан желілік компоненттер/инфра үшін ыңғайлы.

С: Неге орташа емес, p95?
О: Орташа құйрығын жасырады; пайдаланушы p95/p99 сезеді.

С: «Гайкаларды тым қатты бұрауға» қалай болмайды?
О: Шынайы мақсаттардан бастаңыз (тарихи деректер), содан кейін жетілуіне қарай қатаңдатыңыз.

Байланысты материалдар:
  • «Бақылау: логи, метрика, трассировка»
  • «Бөлінген трассировкалар»
  • «Аудит және өзгермейтін журналдар»
  • «Веб-хаттарды жеткізу кепілдіктері»
  • «In Transit/At Rest шифрлау»
  • «Деректердің шығу тегі (Lineage)»
Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Telegram
@Gamble_GC
Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.