Ալերտինգը և արձագանքը ձախողումներին
(Բաժին ՝ Տեխնոլոգիաներ և ենթակառուցվածքներ)
Live ռեզյումե
Ուժեղ ալերթինգը ազդանշան է ռուսական արժեքի խախտման մասին, և ոչ միայն «կարմիր մետրը»։ IGaming-ը կարևոր է SLO-gats-ի համար (լատենտ, հասանելիություն, վճարումների փոխզիջում, Time-to-Wallet), multi-burn կանոնները, հստակ on-call դերերը, էսկալացիան, ChatOps-ը և runbooks-ը։ Նպատակն է արագ տեսնել շեղումը, տեղեկացնել նրանց, ովքեր կարող են շտկել իրենց գիտելիքները, որպեսզի հաջորդ անգամ ավելի արագ ու էժան արձագանքեն։
1) Հիմքեր ՝ մետրից դեպի գործողություն
SLI www.SLO www.Ale.ru: չափված որակը ստանդարտ մակարդակ է բյուջեին այրվում։
SEVerity (SEV): SEV1 - կրիտիկական (եկամուտներ/GGR վտանգի տակ), SEV2 լուրջ, SEV3 - չափավոր, SEV4 - մինոր։
Impact/Urgency: Ով տառապում է (բոլոր/տարածաշրջանը/տենանտը/ջրանցքը) և որքանով է անհապաղ (TTW), p99 ռուբլիներ, error-rate)։
Actionability: Յուրաքանչյուր անհանգստության համար հատուկ գործողություն է (runbook + սեփականատեր)։
2) Ազդանշանների տաքսոնոմիա
ТехSLO: p95/p99 latency API, error-rate, saturation (CPU/IO/GPU), queue lag.
Բիզնես SLO 'վճարման (attempt no success), Time-to-Wallet (TTW), մրցույթի հաջողությունը, խաղերի մեկնարկը։
Հիբրիդային երթուղիներ ՝ PMS-հատուկ չափումներ (timeout/decationspikes)։
Ռազմաճակատ/medaill: RUM-metrics (LCP/INP), crash-rate, international (lugin/dezosit/dence/եզրակացություն)։
3) Ալերտինգի քաղաքականությունը 'SLO և burn-rate
SLI/SLO օրինակներ
Հասանելիությունը 'payments-api' 3699։ 9% / 30d p95 `/deposit` ≤ 250 ms / 30d
Կոնվերսիա 'payments _ attempt www.success' www.baseline 240։ 3% / 24h
TTW p95 243 րոպե/wwwh
Multi-window / Multi-burn (идея PromQL)
Fultburn: SLO-ի խախտումը 5-10-ից ավելի արագ է, քան նորմը (ալերտ-լայջը 5-15 րոպե)։
Slow burn: բյուջեի դանդաղ այրումը (tiket + վերլուծություն 1-3 ժամ)։
yaml
API success proxy metric (recording rule in advance)
record: job:http:success_ratio expr:
sum(rate(http_requests_total{status=~"2.. 3.."}[5m]))
/ sum(rate(http_requests_total[5m]))
Fast burn (99. 9% SLO)
alert: PaymentsSLOFastBurn expr: (1 - job:http:success_ratio{job="payments-api"}) > (1 - 0. 999) 14 for: 10m labels: { severity: "page", service: "payments-api" }
annotations:
summary: "SLO fast burn (payments-api)"
runbook: "https://runbooks/payments/slo"
Slow burn alert: PaymentsSLOSlowBurn expr: (1 - job:http:success_ratio{job="payments-api"}) > (1 - 0. 999) 6 for: 1h labels: { severity: "ticket", service: "payments-api" }
4) Աղմուկն ու ազդանշանների որակը
Ճիշտ ճշմարտության աղբյուրը 'ալերգիկ ագրեգատներով (recording rules), ոչ թե ծանր «հում» արտահայտություններով։
Deduplication: Alertmanager-ը խմբավորում է «07/region/severity»։
Հիերարխիա 'սկզբում ալերտը բիզնեսի/SLI-ի վրա, ներքևում' տեխնետրիկ, որպես ախտորոշիչ։
Supressia: planned-maintena.ru/intenta (ծանոթագրություններ), upstream-միջադեպերի ժամանակ։
Կարդինալությունը 'չօգտագործել «user _ id/session _ id» ալտերտերի մետաղներում։
Թեստային ալերտներ ՝ ռուսական «կրթական» ձգումներ (ջրանցքների, դերերի, ռունաբուկ-հղումների ստուգում)։
5) Alertmanager: Երթուղայնացում և էսկալացիա
yaml route:
group_by: [service, region]
group_wait: 30s group_interval: 5m repeat_interval: 2h receiver: sre-slack routes:
- matchers: [ severity="page" ]
receiver: pagerduty-sre continue: true
- matchers: [ service="payments-api" ]
receiver: payments-slack
receivers:
- name: pagerduty-sre pagerduty_configs:
- routing_key: <PD_KEY>
severity: "critical"
- name: sre-slack slack_configs:
- channel: "#alerts-sre"
send_resolved: true title: "{{.CommonLabels. service }} {{.CommonLabels. severity }}"
text: "Runbook: {{.CommonAnnotations. runbook }}"
inhibit_rules:
- source_matchers: [ severity="page" ]
target_matchers: [ severity="ticket" ]
equal: [ "service" ]
Գաղափարը 'SEV = page PagerDuty/SMS; մնացածը Slack/ticet է։ Ինգիբիցիան ճնշում է ցածր մակարդակների «աղմուկը», երբ ակտիվ SEV-ն ավելի բարձր է։
6) Grafana Alerting (որպես շերտ)
Կենտրոնացված Alrules-ը dashbords-ում (Prometheus/Loki/Cloud)։
Contact points: PagerDuty/Slack/Email, Notification policies per folder.
Silences: Պլանավորված աշխատանք, հյուրանոցներ, ֆորումներ։
Diapshots-ը թիկետի վահանակի auto-սկրինշոտ է։
7) On-call և «կենդանի» գործընթացները
Ռոտացիան ՝ 1-րդ գիծը (SNE/պլատֆորմը), 2-րդ գիծը (մրցույթի սեփականատերը), 3-րդ (DB/Payments/Sec)։
SLA արձագանքը '245 րոպե (SEV1), ախտորոշումը 3,15 րոպե, հաղորդակցությունը յուրաքանչյուր 15-30 ռուբլիներում։
Հերթապահ ջրանցքները ՝ «# incident-warro.ru», «# status-medates» (միայն փաստերը)։
Runbooks: Հղում յուրաքանչյուր ալերտում + ChatOps-ի արագ թիմերը («/rollback », «/freeze», «/scale »)։
Ուսումնական մտահոգությունները ՝ ամսական (մարդկանց ստուգում, ջրանցքներ, ռունաբուկ-արդիական)։
8) Միջադեպեր ՝ կյանքի ցիկլ
1. Մանրամասն (alert/report/սինթետիկ) www.Acknowledge on-call։
2. Եռյակը 'որոշել SEV/տուժած/հիպոթեզը, բացել war-room։
3. Կայունացում 'ռուլբուկի/ռեպատ/մեծացում/ֆիչեֆլագի։
4. Հաղորդակցություն 'կարգավիճակի ձևը (տե՛ ս ներքևում), ET/հաջորդ քայլերը։
5. Մոսկվա 'SLO վերականգնման ապացույց։
6. Post-Incident Review (RCA) '24-72 ժամ անց, առանց մրցույթի, action items։
Ձիթենու կարգավիճակը (կարճ)
Ի՞ նչ է կոտրվել/ով է ազդել (շրջան/տենանտ/ջրանցք)
Երբ սկսվեց/SEV
Ժամանակավոր միջոցներ (mitigation)
Կարգավիճակի հաջորդ նորարարությունը N րոպեների ընթացքում
Կապ (Պատահականության մենեջեր)
9) iGaming-ի առանձնահատկությունները '«ցավոտ» գոտիներ և ալերտներ։
Payments/TTW 'Timauts PMS, կոդի ձախողումների աճը, TTW r95> 3m.
Մրցույթների պիկի 'p99 API/խաղերի մեկնարկի ժամանակը/queue lag; limits/auto-scail քարոզչություն։
Միջոցների եզրակացությունները 'SLA bekofis/ձեռքով ստուգումներ, երկրի սահմաններ։
Խաղերի պրովայդերները 'ստուդիաների հասանելիությունը, նստաշրջանի նախաձեռնման ժամանակը, գործարկման անկումը։
RG/Compli.ru: Երկար նստաշրջանների/» դոգոնի» աճը, շեմերի ավելացումը ոչ թե լանդշաֆտը, այլ ticet + ծանուցումը RG թիմին։
10) Կանոնների օրինակներ (ավելին)
Բարձր p95 (API)
promql alert: HighLatencyP95 expr: histogram_quantile(0. 95,
sum by (le, service) (rate(http_request_duration_seconds_bucket{service="api"}[5m]))) > 0. 25 for: 10m labels: { severity: "page", service: "api" }
annotations:
summary: "p95 latency > 250ms"
runbook: "https://runbooks/api/latency"
Եզրակացությունների հերթը «այրվում է»
promql alert: WithdrawalsQueueLag expr: max_over_time(queue_lag_seconds{queue="withdrawals"}[10m]) > 300 for: 10m labels: { severity: "page", service: "payments-worker" }
annotations:
summary: "Withdrawals lag >5m"
runbook: "https://runbooks/payments/queue"
Վճարման կոնվերսիան խնդրեց
promql alert: PaymentConversionDrop expr:
(sum(rate(payments_success_total[15m])) / sum(rate(payments_attempt_total[15m])))
< (payment_conv_baseline - 0. 003)
for: 20m labels: { severity: "page", domain: "payments" }
annotations:
summary: "Payment conversion below baseline -0. 3%"
runbook: "https://runbooks/payments/conversion"
11) ChatOps-ը և ավտոմատիզացիան
Alerts-ը գործողության կոճակներով 'Stop canary, Rollback, Scale + N.
Թիմային կրճատումներ ՝ "/incident start ", "/status corate", "/call
Բոտերը քաշում են համատեքստը 'վերջին deploy, կախվածության գրաֆիկ, treiss-օրինակներ (exemplars), որոնք կապված են հյուսվածքների հետ։
12) Հետպատերազմյան աշխատանքը (RCA)
Փաստերն այն են, որ տայմլայնը, որ տեսել/թե ինչ են փորձել, ինչ է աշխատել։
Root cause: տեխնոլոգիական և կազմակերպական պատճառներ։
Detections & Windows: Ի՞ նչ ազդանշաններ օգնեցին/ամփոփեցին։
Action items: հատուկ առաջադրանքներ (SLO/alerts/2019/limits/թեստեր/runabuk)։
Due medes & owners 'ժամկետներ և պատասխանատու; follow-up նստաշրջան 2-4 շաբաթ հետո։
13) Ներդրման չեկի ցուցակ
1. SLI/SLO ստանդարտը հիմնական հոսքերի համար (API/Payments/Games/TTW)։
2. Patte recording rules և multi-burn ալտերտեր + Alertmanager-ի երթուղայնացումը։
3. Մուտքագրեք on-call լուծույթով, SLO ռեակցիաներով և էսկալացիաներով։
4. Միացրեք ալերտները runbooks և ChatOps-թիմերին։
5. Պարամետրեր/հանգիստ պատուհաններ, օրինագծեր/աշխատանք։
6. Պատրաստեք ուսուցման անհանգստություններ և game-day սցենարներ (PFC անկում, p99 աճը, queue lag աճը)։
7. Չափեք AlTA/MTTR,% intisy/false, coverage SLO-ում։
8. Express RCA-ը և շեմերի/գործընթացների իրականացումը։
9. Մուտքագրեք բիզնես/sapport (ձևանմուշներ) հետ։
10. Փաստարկեք ամեն ինչ որպես կոդ 'կանոններ, երթուղիներ, ռունաբուկ հղում։
14) Anti-patterna
Alerting-ը «յուրաքանչյուր մետրով» elert-fetig-ն է, անտեսանելի։
Ոչ SLO-ը պարզ չէ, որ «նորմ» և որ «այրվում» է։
Ճնշումների/ինգիբիցիայի բացակայությունը բացատրում է դուբլիկատների լավինը։
Փեյջը գիշերը մինոր իրադարձությունների համար (SEV-ը չի թողնի Impact-ի հետ)։
Alerts առանց runbook/սեփականատիրոջ։
«Ձեռքով» գործողություններ առանց ChatOps/2019։
Ոչ RCA/Action items-ը ռուսական իրավաբան է։
Արդյունքները
Ալերտինգը և արձագանքը գործընթաց են, ոչ թե կանոնների շարք։ Միացրեք SLO-ը multi-burn-alerts-ի հետ, կառուցեք պարզ on-call-էսկալացիա, ավելացրեք ChatOps-ը և կենդանի runabuck-ը, պարբերաբար անցկացրեք RCA-ն և ուսուցման դասընթացները։ Այդ ժամանակ միջադեպերը ավելի քիչ, կարճ և էժան կլինեն, իսկ օրինագծերը կանխատեսելի են նույնիսկ iGaming-ի տաք ժամերին։