SLA, SLO և KPI հուսալիությունը
1) Տերմիններ և տարբերություններ
SLI (Systel Level Indication) - չափված որակի ցուցիչ (օրինակ, հաջողակ հարցումների մասնաբաժինը, p95 լատենտ)։
SLO (No Level Objective) - SLI-ի նշանակությունը ժամանակի պատուհանի համար (օրինակ ՝ "հաջողության թիվ 99։ 9 տոկոսը 28 օրվա ընթացքում")։
Բյուջեի սխալը (ERror Budget) SLO-ի ձախողման թույլատրելի մասն է։
SLA (Black Level Agream) - պայմանագրային պարտավորություններ տուգանքների/վարկերի հետ (արտաքին)։
KPI հուսալիությունը գործընթացի վիրահատական չափումներն են (MTTD/MTTA/MTTR/MTBF, ավտոմատ MTBF, ալտերտերի և այլն)։
2) Ինչպես ընտրել SLI (հիմնվելով Golden Signals)
1. Latency-ը p95/p99 է հիմնական էնդպոինտների համար։
2. Traffic-RPS/RPM/հաղորդագրությունների հոսքը։
3. Errors-ը 5x/բիզնես սխալների մասն է (օրինակ, PSA-ի մեղքով «decom» բացառել)։
4. Saturation-ը ռեսուրսների հագեցումն է (CPU/RAM/IO/lag)։
Լավ SLI չափանիշները
Հարաբերում է օգտագործողի փորձի հետ (user-perceived)։
Տեխնիկապես հասանելի և ֆոսֆիլեն չափման մեջ։
Մենք վերահսկում ենք (հնարավոր են գործողություններ բարելավելու համար)։
Հավաքման ցածր արժեքը։
3) Բանաձևերն ու օրինակները
3. 1 Հասանելիություն (availability)
Availability = Успешные запросы / Все запросы
Error Budget (за период) = 1 − SLO
Օրինակ ՝ SLO 99։ 30 օրվա ընթացքում 9 տոկոսը սխալների բյուջեն = 0։ 1%, որը համարժեք է 43 րոպե 12 վայրկյան անհասանելիության։
3. 2 Լատենտ
SLO-ն լատենտ ձևակերպում է որպես շեմին տեղադրված հարցումների մի մասը
Latency SLI = доля запросов с duration ≤ T
SLO пример: 99% запросов ≤ 300 мс (rolling 28d)
3. 3 Վճարումներ (բիզնես մակարդակը)
Payment Success SLI = (успешные проводки — внешние отказы PSP) / все попытки
4) Սխալ բյուջե և burn-rate
Բյուջեի սխալը ձեր վառելիքի բաքն է նորարարությունների համար (օրինագծեր, փորձեր)։
Burn-rate-ը բյուջեի սպառման արագությունն է
արագ ջրանցք (թիվ 1 ժամ),
դանդաղ ջրանցք (միտում 6-12 ժամ/24 ժամ)։
Շեմի գաղափարները
Եթե burn-rate> 14։ 4 1 ժամվա ընթացքում SEV-1 (մենք օրական բյուջե ենք ուտում 100 րոպե)։
Եթե burn-rate> 6 6 6 ժամվա ընթացքում SEV-2 (արագ դեգրադացիա)։
5) Alerting-ը SLO-ով (multi-71, multi-burn)
Սխալների ցուցիչը 5xx-ի կամ լատենտության խախտումների մասն է։
PromQL-ի օրինակները (ընդհանրացված)
promql
Доля ошибок за 5 минут sum(rate(http_requests_total{status=~"5.."}[5m]))
/
sum(rate(http_requests_total[5m]))
Быстрый burn (1m окно)
(
sum(rate(http_requests_total{status=~"5.."}[1m])) /
sum(rate(http_requests_total[1m]))
) / (1 - SLO) > 14.4
Медленный burn (30m окно)
(
sum(rate(http_requests_total{status=~"5.."}[30m])) /
sum(rate(http_requests_total[30m]))
) / (1 - SLO) > 2
SLO-ի համար լատենտ օգտագործեք մեջբերված հիստոգրամներ
promql p95 latency histogram_quantile(0.95, sum by (le) (rate(http_request_duration_seconds_bucket[5m])))
6) SLI/SLO օրինակները օրինակներով
6. 1 API դարպաս/Edge
SLI-Errors: 5xx <0 պատասխանների մասը։ 1% (28d).
SLI-Latency: p95-250 ms (օր)։
SLO: Availability ≥ 99. 95% (թաղամաս)։
6. 2 Վճարումներ
SLI-Success: հաջողակ (բացառելով հաճախորդների մերժումները) 3699։ 8% (28d).
SLI-Latency: Հեղինակային իրավունքը 362 վայրկյան 99 տոկոսով (օրը)։
SLO: Time-to-Wallet p95 ≤ 3 мин (24h).
6. 3 Տվյալների հիմքեր (PostgreSQL)
SLI-Lag 'p95-1 վայրկյան (օր)։
SLI-Errors: Հարցումների սխալների մասը 0։ 05% (28d).
SLO 'հասանելիություն 24.99։ 95%.
6. 4 Հերթեր/Striming (Kafka)
SLI-Lag: սպառողական lag p95 հազար N հաղորդագրությունները (ժամ)։
SLI-Durability: No. 99 գրելու ապացույց։ 99% (28d).
SLO 'բրոքերների հասանելիությունը 3699։ 9%.
7) KPI հուսալիության գործընթացը
MTTD (Mean Time To Detect)
MTTA (… To Acknowledge)
MTTR (… To Restore)
MTBF (… Between Failures)
% -ը ավտոմատ հավաքման
SLO/լավագույն ուղիների ալտերտեր (նպատակային 3695%)
Ածխաջրածինների մասնաբաժինը կանարյան փուլով
Սխալ բյուջեի սպառումը թիմերի/ավարտների համար
8) Ինչպես տեղադրել SLO իրական
1. Չափեք ներկա հիմնական լուծումը (3-4 շաբաթ)։
2. Ռուսական «զգայուն» օգտագործողի ճանապարհները (լոգին, դեպոզիտ, խաղ)։
3. Օգտագործեք յուրաքանչյուր նշանադրության արժեքը (ժամանակ, փող, հեղինակություն)։
4. Ընտրեք հավակնոտ, բայց հաջողակ նպատակը (բարելավումը 10-30 տոկոսով դեպի գնորդը)։
5. Վերանայեք այն։
Anti-patterns
Անմիջապես «հինգ աղջիկները» առանց հիմնավորման։
SLO-ն, որը չի տեսնում օգտագործողը (օրինակ, CPU-ն առանց UX-ի)։
Չափազանց շատ SLO-ն ֆոկուսի ցողունն է։
9) SLO-ի և բյուջեների հաշվետվությունները
Ստանդարտ զեկույցը (շաբաթական/ամսական)
Յուրաքանչյուր SLO-ի կատարումը 'նպատակը, միտումները, didence-ը։
Սխալների սպառումը 'քանի՞ բյուջե է «այրվել», քան, ում (թողարկումը/դեպքը)։
Լավագույն հինգ դեգրադացիայի պատճառները, CAPA պլանը և առաջադրանքների կարգավիճակը։
Բիզնեսի վրա ազդեցությունը 'փոխակերպում, ND, պահպանումը, LTV։
10) Կապ բյուջեի քաղաքականության հետ
Սխալների բյուջեն <50 տոկոսը ազատ օրինագծեր է։
50-80 տոկոսը բացատրում է «զգույշ ռեժիմը» 'միայն low-risk/kanareced։
11) SLA (պայմանագրային) - կետերի ձևանմուշներ։
Հասանելիության պարտավորությունը 'օրինակ, 99։ 9 %/ամիս։
Բացառություններ (Force Majeure): DDoS-ը ողջամիտ վերահսկողությունից դուրս, երրորդ կողմերի պրովայդերներ։
Չափման պատուհանը և պատասխանատվության գոտին 'մետրիկի աղբյուրները, հաշվարկման մեթոդը։
Վարկեր/տուգանքներ ՝ մակարդակների բարձրացում (օրինակ, 60-120 րոպե վարկեր X%)։
Էսկալացիայի և ծանուցումների ընթացակարգերը 'ժամկետներ, ալիքներ։
Տվյալները և գաղտնիությունը 'դիմակավորում, պահպանում, Legal Hold։
Խոհարարների կառուցման պլանը (CAPA) խախտման դեպքում։
12) Չափման գործիքները
Պասիվ մետրիկները ՝ Prometheus/Mimir/Thanos, արտադրողներ։
Լոգի 'Loki/ELK-ը բիզնեսի մակարդակում հաջողության/սխալների հաշվարկման համար։
Սինթետիկ 'ակտիվ փորձարկումներ (լոգին/դեպոզիտ/խաղ) com-ով։
Ճանապարհը ՝ Tempo/Jaeger-ը «նեղ տեղերի» համար p99։
Վճարումը/ֆինանսները 'www.und truth աղբյուրները մետրոպոլիտենի SLI-ի համար։
13) Հարցումների օրինակներ (ձևանմուշներ)
Հաջողակ API հարցումների մասնաբաժինը (բացառությամբ 4xx որպես հաճախորդ)
promql
1 - (
sum(rate(http_requests_total{status=~"5.."}[5m]))
/ sum(rate(http_requests_total[5m]))
)
SLO քարտը
yaml slo:
name: "API Availability"
window: "28d"
target: 0.999 sli: "1 - 5xx%"
owner: "Platform SRE"
alerting:
fast_burn: {window: "1h", factor: 14.4}
slow_burn: {window: "6h", factor: 6}
Հիբրիդային հաջողությունը (բիզնես իրադարձություններով լոգարաններում/սթրիմում)
success_rate = (count_over_time({app="payments"} = "status=success"[5m]))
/ (count_over_time({app="payments"} ~ "status=(success fail)"[5m]))
14) Ֆինոպս և 108
Cost per 9: Իններորդ ավելացման արժեքը աճում է էքսպոնենցիալ։
Կորի տրամագիծը 'լավատեսություն այնտեղ, որտեղ եկամտի ավելացումը/նվազումը փոխանցվում է ավելացված «9» արժեքը։
SLO պորտֆելը 'տարբեր մակարդակներ տարբեր ճանապարհների համար (քննադատական վճարումները «ավելի թանկ», հաշվետվությունները «ավելի էժան»)։
15) SLO/alerts որակը չեկի թերթ է։
- SLI-ն կապված է UX-ի և բիզնես-մետրիկայի հետ։
- Պատուհանը և համախմբումը համաձայնեցված են (rolling 28d/քառորդ)։
- Alerta multi-2019, առանց ֆլամպինգի, ռոլլային երթուղով։
- Lenta.ru 'սեփականատեր, բանաձև, աղբյուրներ, runbook։
- Դեմո վահանակ SLO սխալ բյուջեով և burn-լուծիչներով։
- Նպատակների ստացիոնար իրականացումը (եռամսյակային)։
- Սինթետիկ թեստերը հիմնական սցենարներով։
16) Իրականացման պլանը (4 իտացիա)
1. Շաբաթը 1: Օգտագործողի ճանապարհների բուլարիզացիան, SLI-ի չեռնիվները, հիմնական դաշբորդները։
2. Շաբաթ 2: SLO ֆորմալիզացիան, հաշվարկը, ալերտները (fox/slow burn)։
3. Շաբաթ 3: ինտեգրումը ինտեգրման գործընթացի հետ, freeze կանոնները։
4. Շաբաթ 4 +։ Պայմանագրային SLA, եռամսյակային հեղափոխություն, «cost per 9» ֆենոմեն մոդելը։
17) Mini-FAQ
Արդյո՞ ք պետք է ունենանք մեկ SLO ծառայության համար։
Ավելի լավ է 2-3 հիմնական (հաջողությունը + լատենտ) տասնյակ երկրորդական։
Ի՞ նչ անել, եթե բյուջեն սպառված է։
Ածխաջրածինների սառեցումը, ֆոկուսը և CAPA-ը, փորձնական ֆիգուրների հեռացումը։
Ինչպե՞ ս կարող ենք խուսափել բախումից ածխաջրածինների արագության և հուսալիության միջև։
Պլանավորեք օրինագծերը «ուղղություններով», ներմուծեք քարե ծածկոցներ և feature-flags։
Արդյունքը
Մոսկվան ղեկավարվում է ոչ թե ցրված մետրերի մի շարք, այլ համակարգով 'SLI www.SLO-ն հաստատեց բյուջեի սխալը www.burn-alerting-ի համար, որը կոչվում է CAPA no SLA։ Ստանդարտացրեք սահմանումները, տվյալների աղբյուրները և հաշվետվությունները, նպատակներ բերեք օգտագործողի փորձին և տնտեսությանը, և պարբերաբար վերանայեք «աղջիկների» մակարդակը կախված իրական ROI-ից։