GH GambleHub

Error Budgets და SLO მენეჯმენტი

1) რატომ არის SLO და შეცდომების ბიუჯეტი

SLO (Service Level Objective) - მომხმარებლის მიერ აღქმული ხარისხის მიზნობრივი დონე; SLI - გაზომილი მეტრი; Error Budget - ფანჯრის გადახრების დაშვება (ჩვეულებრივ 30/90 დღე).
შეცდომების ბიუჯეტი საიმედოობას „აბსტრაქციიდან“ მართულ რესურსად აქცევს: როდესაც ბიუჯეტი სწრაფად იწვის, ჩვენ ვყინავთ ფიჩებსა და ჩინს; როდესაც ბიუჯეტი ჯანმრთელია, შეგიძლიათ დააჩქაროთ გამოშვებები.

2) SLI არჩევანი: რა არის „კარგი“

კრიტერიუმი: „წარმატებით მომხმარებლის თვალსაზრისით“.

2. 1 კლასიკური SLI

Availability: წარმატებული მოთხოვნების წილი (კლიენტის მიერ გაუქმებული გამოკითხვის გამოკლებით).
'success = http _ status' {2xx, 3xx, 404} და ტაიმუტის გარეშე '(404 შეიძლება წარმატებულად ჩაითვალოს read API- სთვის, თუ ეს მოსალოდნელი სემანტიკაა).
Latency: მოთხოვნების წილი უფრო სწრაფია, ვიდრე ბარიერი (მაგალითად, p95-300 ms).
`good_latency = duration_ms ≤ 300`.
Freshness/Staleness: „მონაცემები არ აღემატება X წუთს“ (ქეში, კატალოგები, კოეფიციენტები).
Quality: შედეგის სისწორე (ბიზნესის შემსრულებლების გავლა/ეკრანული ინვარიანტები).

2. 2 საზღვრები და სეგმენტები

SLI უნდა ჩაითვალოს მნიშვნელოვან სექციებად: 'route', 'tenant/brand', 'region/jurisdiction', 'payment _ provider'. ასე რომ, თქვენ არ „გააცნობიერებთ“ ერთი კრიტიკული კალმის წარუმატებლობას მთელ სისტემაში.

3) ფორმულები და ბიუჯეტი

3. 1 Request-based (სასურველია API- სთვის)


SLO_availability = good_requests / total_requests
Error_budget = 1 - SLO_target
Burn = 1 - SLO_actual

3. 2 დრო (ფონის სერვისებისთვის/ნაკადისთვის)


SLO_uptime = good_minutes / total_minutes

3. 3 მიზნების მაგალითი

API საერთოა: 99. ხელმისაწვდომობის 9% 30 დღეში - ბიუჯეტი = 0. 1%.
კრიტიკული გადახდის სახელურები: 99. 95%; კატალოგები/ძებნა: 99. 5%.
ლატენტობა: p95-300 ms n '/v1/payments ', p99-800 ms.

4) SLI ბრიფინგი

4. 1 პრინციპები

Logs/traces - მეტრიკა RED (Rate/Errors/Duration) აშკარა ბუკეტებით.
დარწმუნდით, რომ დააყენეთ 'tenant', 'region', 'route _ class' (PII გარეშე).
განიხილეთ ორი მეტრი: „წარმატება“ და „ყველაფერი“, ხოლო ლატენციისთვის - „სწრაფი“ და „ყველაფერი“.

4. 2 მაგალითი Prometheus (5 მ)

promql
Availability (successes/total)
sli:success:rate5m = sum by(region, route)(
rate(http_requests_total{code=~"2..    3.."}[5m])
)
sli:total:rate5m = sum by(region, route)(
rate(http_requests_total[5m])
)
sli:availability:ratio5m = sli:success:rate5m / sli:total:rate5m

Latency (fraction faster than 300 ms)
sli:fast:rate5m = sum by(region, route)(
rate(http_request_duration_seconds_bucket{le="0. 3"}[5m])
)
sli:latency_ok:ratio5m = sli:fast:rate5m / sli:total:rate5m

5) Alerty on burn (multi window, multi-burn)

5. 1 იდეა

ჩვენ ვხედავთ, თუ რა სიჩქარით იწვის ბიუჯეტი სამიზნესთან შედარებით. თუ სიჩქარე მაღალია მოკლე და გრძელი ფანჯარაზე - სიგნალი.

5. 2 ბარიერი პროფილები (SLO 99-ისთვის). 9%)

Paging: burn rate - 14. 4 × (ბიუჯეტის 10% 1 საათში და 5% 6 საათში).
Ticet: burn rate - 6 × (2% 6 საათში და 1% 24 საათში).

5. 3 წესების მაგალითი (Prometheus, ფსევდო)

promql
Let's calculate the error_ratio on two windows short = 1 - (sum (rate (http_requests_total{code=~"2..    3.."}[5m])) /
sum(rate(http_requests_total[5m])))
long = 1 - (sum(rate(http_requests_total{code=~"2..    3.."}[1h])) /
sum(rate(http_requests_total[1h])))

For SLO = 99. 9%, error_budget=0. 001. BurnRate = error_ratio / 0. 001 burn_short = short / 0. 001 burn_long = long / 0. 001

Paging: Both windows exceed 14. 4× alert: SLOErrorBudgetBurnRateHigh expr: burn_short > 14. 4 and burn_long > 14. 4 for: 5m labels: { severity="page" }
annotations:
summary: "SLO burn rate high (short & long windows)"
runbook: "slo/runbooks/payments. md"

ანალოგიურად, ტიკეტისთვის 6h/24h.

6) ბიუჯეტის ოფისი: პროცესები

6. 1 გამოშვებული კარიბჭეები

თუ ბიუჯეტის დარჩენილი ნაწილი <25% და ტენდენცია უარყოფითია - „კოდი გაყინვა“ ფიჩებზე, პრიორიტეტი SRE/სტაბილურობა.
კანარის გამოშვებებს უნდა ჰქონდეთ ცალკეული SLO ნაჭერი ('deployment. environment="canary"`).

6. 2 ბეკლოგის პრიორიტეტი

განაწილეთ ბრძანების შესაძლებლობები წვის სიჩქარის პროპორციულად და შემოსავალზე გავლენის მოხდენით.
დაასაბუთეთ ტექნიკური დავალიანება მეტრიკებით: „ფაქსი X შეამცირებს ბურნს Y% -ით“.

6. 3 მარხვის ინციდენტი

თითოეული ინციდენტი - RCA და „ფაქსი, რომელიც არ უნდა გამოტოვოთ“, კონტროლი „დაბრუნდა SLO- ში“.

7) SLO კოდი

7. 1 SLO მანიფესტის მაგალითი (YAML)

yaml service: payments-api owner: team-payments slis:
- name: availability type: request_based success_query: sum(rate(http_requests_total{svc="pay",code=~"2..    3.."}[5m]))
total_query:  sum(rate(http_requests_total{svc="pay"}[5m]))
objective: 99. 95 window: 30d segments: ["region", "tenant", "route"]
- name: latency_p95_300ms type: latency_threshold good_query: sum(rate(http_request_duration_seconds_bucket{svc="pay",le="0. 3"}[5m]))
total_query: sum(rate(http_request_duration_seconds_count{svc="pay"}[5m]))
objective: 99. 0 window: 30d alerts:
- name: burn_high_page windows: ["5m", "1h"]
threshold_burn: 14. 4 severity: page

7. 2 წესების გენერაცია

გამოიყენეთ გენერატორები (slo-generator, pyrra, sloth) წესების, დაშბორდების და მოხსენებების ავტომატური შესაქმნელად.

8) SLO დეგრადაცია და დაცვა

Load shedder: მისცეს სწრაფი პასუხები მწვერვალზე „ძვირადღირებული“ დამოკიდებულების გარეშე.
Cache & stale: `stale-while-revalidate` для read.
Rate/Concurrency limits: იცავს ზურგჩანთებს; მნიშვნელოვანი მარშრუტები პრიორიტეტია.
Circuit/Timeout: სწრაფი ტაიმაუტები და „fallback“ ფილიალები.
Feature flags: ერთი ღილაკის მძიმე დარტყმის გამორთვა.

9) დაკვირვება SLO- სთვის

Dashboards: SLO actual vs target, ბიუჯეტის დარჩენილი ნაწილი, burn rate, წვლილი მარშრუტებზე/პროვაიდერებზე.
კორელაცია: SLO „ხვრელიდან“ exemplar- ში სპეციფიკური ტრეკი - ლოგოები/პროფილები.
მოხსენებები: ყოველკვირეული - ტენდენციები, ბიუჯეტის მოხმარება, დეგრადაციის ტოპ მიზეზები.

10) ანტიპატერები

ერთი „გლობალური“ SLO ყველაფრისთვის, პრობლემებს შენიღბავს. ოპჲგვპვრვ ჟვ.
«99. 99% ყველაფერზე" ფასისა და რეალობის გამოკლებით. შეარჩიეთ მიზნები მომხმარებლის გამოცდილებიდან.
CPU/heap ალერტები burn rate/SLO- ს ნაცვლად.
4xx/გრძელი რედაქციის უგულებელყოფა, რომელსაც UX აფუჭებს.
გაუმჭვირვალე ფანჯარა (rolling vs კალენდარი) - შედარება „ვაშლი ფორთოხალთან“.

11) iGaming/ფინანსების სპეციფიკა

ფულის გზები (ანაბრები/დასკვნები): ცალკეული SLO აღემატება საერთო დონეს (მაგ., 99. წვდომის 95%; p95-250 ms).
PSP/KYC პროვაიდერები: SLO თითოეული პროვაიდერისთვის + ალერტისთვის მათი წვლილისთვის; მარშრუტების ავტომატური გადართვა.
იურისდიქციები/ტენანტები: SLO და ბიუჯეტები 'region/jurisdiction/brand' ისე, რომ ადგილობრივი პრობლემა არ „დაიტბორა“ გლობალურ მეტრიკაში.
საპასუხისმგებლო თამაში: SLO ლიმიტების/თვითკმაყოფილების გამოყენების დროს (კომპლექსის ფორმულა).
აუდიტი/მარეგულირებელი: შეინახეთ SLO ანგარიშები და ინციდენტები; გამჭვირვალობა შიდა აუდიტისთვის.

12) მზადყოფნის სიის სია

  • განსაზღვრულია SLIs (availability/latenty/quality/freshness) და სეგმენტები (მარშრუტი/tenant/region).
  • მიზნები (SLO) რეალისტურია, შეთანხმებულია ბიზნესთან; არსებობს rolling ფანჯარა 30/90 დღის განმავლობაში.
  • Alerta on burn rate მულტფილმის ფანჯრებით (padging/ticket).
  • SLO, როგორც კოდი (წესების გენერატორი/დაშბორდები); ბიუჯეტის ანგარიშები.
  • გამოშვებული კარიბჭეები უკავშირდება ბიუჯეტის დანარჩენ ნაწილს; კანარის ნაჭრები.
  • დეგრადაციის მექანიზმები (shedder, cache stale, circuit, limites) ხორციელდება და შემოწმებულია.
  • მრიცხველების კორელაცია (exemplars), მკაფიო runbooks.
  • ფინანსური/იურისდიქციის გზები - ცალკეული SLO/ალერტები; PSP/KYC განუყოფელია.
  • რეგულარული რეტრო ინციდენტებზე და ინვესტიციებზე დაფუძნებულ საიმედოობაში.

13) TL; DR

განსაზღვრეთ SLI მომხმარებლის ღირებულებით, დაუსვით რეალისტური SLO და მართეთ Error Budget და burn ფანჯრები მულტფილმის ფანჯრებით. ჩართეთ SLO კოდი, გამოშვებული კარიბჭეები და გეგმის მიხედვით დეგრადაცია. დაგეგმეთ მარშრუტები/ტენანტები/რეგიონები; ფულის ბილიკებისთვის შეინარჩუნეთ უფრო მკაცრი მიზნები და ცალკეული ალერტები.

Contact

დაგვიკავშირდით

დაგვიკავშირდით ნებისმიერი კითხვის ან მხარდაჭერისთვის.ჩვენ ყოველთვის მზად ვართ დაგეხმაროთ!

Telegram
@Gamble_GC
ინტეგრაციის დაწყება

Email — სავალდებულოა. Telegram ან WhatsApp — სურვილისამებრ.

თქვენი სახელი არასავალდებულო
Email არასავალდებულო
თემა არასავალდებულო
შეტყობინება არასავალდებულო
Telegram არასავალდებულო
@
თუ მიუთითებთ Telegram-ს — ვუპასუხებთ იქაც, დამატებით Email-ზე.
WhatsApp არასავალდებულო
ფორმატი: ქვეყნის კოდი და ნომერი (მაგალითად, +995XXXXXXXXX).

ღილაკზე დაჭერით თქვენ ეთანხმებით თქვენი მონაცემების დამუშავებას.