GH GambleHub

هشدار و پاسخ به شکست

(بخش: تکنولوژی و زیرساخت)

خلاصه ای کوتاه

هشدار قوی یک سیگنال نقض ارزش کاربر است و نه فقط یک «متریک قرمز». برای iGaming، دروازه های SLO (تاخیر، در دسترس بودن، تبدیل پرداخت، زمان به کیف پول)، قوانین چند رایت، روشن در تماس، تشدید، ChatOps و نقش های runbooks مهم هستند. هدف این است که به سرعت انحراف را ببینید، اطلاع کسانی که می توانند تصحیح، و رفع دانش به منظور واکنش نشان می دهند و حتی سریع تر و ارزان تر دفعه بعد.

1) مبانی: از معیارها تا عمل

SLI → SLO → Alert - کیفیت اندازه گیری شده → سطح هدف → «بودجه» است.
شدت (SEV): SEV1 - بحرانی (درآمد/GGR در معرض خطر)، SEV2 - جدی، SEV3 - متوسط، SEV4 - جزئی.
تأثیر/فوریت: چه کسی رنج می برد (همه/منطقه/مستاجر/کانال) و چقدر فوری (TTW↑، p99↑، خطا - rate↑).
قابلیت اجرا: برای هر زنگ - یک اقدام خاص (runbook + مالک).

2) طبقه بندی سیگنال

ТехSLO: API تاخیر p95/p99، نرخ خطا، اشباع (CPU/IO/GPU)، تاخیر صف.
BusinessSLO: تبدیل پرداخت (تلاش → موفقیت), زمان به کیف پول (TTW), موفقیت شرط بندی, راه اندازی بازی.
مسیرهای پرداخت: معیارهای خاص PSP (خوشه زمان/کاهش).
جلو/تلفن همراه: معیارهای RUM (LCP/INP)، نرخ سقوط، سناریو synthetics (ورود/سپرده/نرخ/خروجی).

3) سیاست هشدار: SLO و نرخ سوختن

نمونه های SLI/SLO

در دسترس بودن پرداخت api ≥ 99. 9 ٪/30d p95 '/سپرده '≤ 250 میلی ثانیه/30d

تبدیل "payments _ attempt → success ≥ baseline − 0. 3 ٪/24 ساعت

TTW p95 ≤ 3 دقیقه/24 ساعت

چند پنجره/چند سوختگی (идея PromQL)

سوزاندن سریع: نقض SLO 5-10 × سریعتر از حد معمول (صفحه هشدار در 5-15 دقیقه).
سوختگی آهسته: فرسودگی بودجه آهسته (تجزیه و تحلیل بلیط + در 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) کاهش نویز و کیفیت سیگنال

منبع صحیح حقیقت: تغییر با aggregates (قوانین ضبط)، و نه عبارات سنگین «خام».
Deduplication - گروه های Alertmanager بر اساس «سرویس/منطقه/شدت».
سلسله مراتب: اولین هشدار به کسب و کار/SLI، در زیر - معیارهای فنی به عنوان تشخیص.
سرکوب: در طول نگهداری/انتشار برنامه ریزی شده (حاشیه نویسی)، در حوادث بالادست.
Cardinality: از user _ id/session _ id در برچسب های هشدار استفاده نکنید.
هشدار تست: به طور منظم «آموزش» باعث (چک کردن کانال ها، نقش ها، لینک های runabook).

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 = صفحه → PagerDuty/SMS ؛ بقیه بلیط/بلیط است. مهار سرکوب «اعتیاد به مواد مخدره» از سطوح پایین تر با SEV فعال بالا.

6) هشدار گرافانا (به عنوان لایه اضافی)

قوانین هشدار متمرکز در داشبورد (Prometheus/Loki/Cloud).
نقاط تماس: PagerDuty/Slack/ایمیل، سیاست های اطلاع رسانی در هر پوشه.
سکوت: کارهای برنامه ریزی شده، مهاجرت، انتشار.
عکس های فوری با یک تصویر خودکار از پانل در بلیط.

7) در تماس و فرآیندهای زنده

چرخش: خط اول (SRE/پلت فرم)، خط دوم (صاحب سرویس)، سوم (DB/Payments/Sec).
واکنش SLA: تشخیص ≤ 5 دقیقه (SEV1)، تشخیص ≤ 15 دقیقه، ارتباط هر 15-30 دقیقه.
کانال های وظیفه: «# incident-warroom»، «# status-updates» (فقط حقایق).
Runbooks: لینک در هر هشدار + دستورات سریع ChatOps ('/rollback '، '/freeze'، '/scale ').
هشدارهای آموزشی: ماهانه (چک کردن افراد، کانال ها، ارتباط runabook).

8) حوادث: چرخه زندگی

1. تشخیص (هشدار/گزارش/synthetics) → تایید در تماس.
2. Triage: تعیین SEV/تحت تاثیر/فرضیه، اتاق جنگ باز است.
3. تثبیت: رول/بازگشت/پوسته پوسته شدن/phicheflags.
4. ارتباطات: قالب وضعیت (پایین را ببینید)، ETA/مراحل بعدی.
5. بسته شدن: تأیید بازیابی SLO.
6. بررسی پس از حادثه (RCA): پس از 24-72 ساعت، بدون اتهام، موارد اقدام.

قالب وضعیت) کوتاه (:
  • چه چیزی شکسته/آسیب دیده (منطقه/مستاجر/کانال)
  • هنگامی که شروع/SEV
  • اقدامات موقت (کاهش)
  • به روز رسانی وضعیت بعدی در N دقیقه
  • تماس (مدیر حوادث)

9) مشخصات iGaming: مناطق «درد» و هشدار

پرداخت/TTW: سهم زمان PSP، افزایش خرابی کد، TTW p95> 3m.
قله مسابقات: p99 API/بازی شروع زمان/تاخیر صف ؛ ارتقاء محدودیت ها/مقیاس خودکار.
نتیجه گیری از بودجه: SLA از backhoe/چک دستی، محدودیت های کشور.
ارائه دهندگان بازی: در دسترس بودن توسط استودیو، زمان شروع جلسه، قطره راه اندازی.
RG/انطباق: انفجار جلسات طولانی/» dogon»، بیش از آستانه - نه یک صفحه، بلکه یک بلیط + اطلاع رسانی به تیم 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 و اتوماسیون

هشدار خودکار ارسال با دکمه های عمل: توقف canary، Rollback، Scale + N.

اختصارات فرمان: '/incident start ', '/status update', '/call ', '/grafana '

رباتها زمینه را محکم می کنند: آخرین deploi، نمودار وابستگی، نمونه ها، بلیط های مرتبط.

12) کار پس از حادثه (RCA)

Factbox: جدول زمانی، چه چیزی را دید/سعی کرد، چه کار کرد.

علت ریشه ای: دلایل فنی و سازمانی

شناسایی و دفاع: که سیگنال کمک کرد/شکست خورد.
موارد اقدام: وظایف خاص (SLO/هشدار/کد/محدودیت/تست/runabook).
تاریخ و صاحبان: شرایط و مسئولیت ها ؛ جلسه پیگیری در 2-4 هفته.

13) چک لیست پیاده سازی

1. SLI/SLO را برای جریانهای کلیدی (API/Payments/Games/TTW) تعریف کنید.
2. تنظیم قوانین ضبط و هشدار چند رایت + مسیریابی Alertmanager.
3. تماس با چرخش، SLO واکنش و افزایش سرعت را وارد کنید.
4. هشدار لینک به runbooks و دستورات ChatOps.
5. پیکربندی پنجره های سرکوب/آرام، حاشیه نویسی انتشار/کار.
6. ایجاد آلارم های یادگیری و سناریوهای روز بازی (افت PSP، افزایش P99، افزایش تاخیر صف).
7. اندازه گیری کیفیت هشدار: MTTA/MTTR،٪ پر سر و صدا/نادرست، پوشش توسط SLO.
8. RCA های منظم و تجدید نظر در آستانه/فرایندها.
9. وضعیت ارتباطات تجاری/پشتیبانی (قالب ها) را وارد کنید.
10. همه چیز را به عنوان کد مستند کنید: قوانین، مسیرها، لینک های runabook.

14) ضد الگوهای

هشدار توسط «هر متریک →» هشدار fetig، نادیده گرفتن.
روشن نیست که چه چیزی «طبیعی» است و چه چیزی «در آتش است».
بدون سرکوب/مهار → تکراری بهمن.
صفحه در شب برای رویدادهای جزئی (SEV قابل مقایسه با Impact نیست).
هشدار بدون runbook/مالک.
اقدامات «دستی» بدون ChatOps/حسابرسی.
بدون RCA/موارد اقدام → تکرار حوادث.

خلاصه

هشدار و پاسخ یک فرآیند است، نه مجموعه ای از قوانین. لینک SLO با هشدار چند رایت، ساخت یک تشدید روشن در تماس، اضافه کردن ChatOps و runabook زندگی می کنند، به طور منظم انجام RCA ها و جلسات آموزشی. سپس حوادث کمتر مکرر، کوتاه تر و ارزان تر خواهد بود و نسخه ها حتی در ساعات گرم iGaming قابل پیش بینی تر خواهند بود.

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.