Siqnallar və bildirişlər sistemi
1) Rolu və məqsədləri
Siqnallar sistemi «mesajların göndərilməsi» deyil, qərarların qəbulu konturudur: vaxtında sapmaları vurğulayır, hərəkətləri təklif edir və vaxtında və sükut arasında tarazlığı saxlayır.
Məqsədlər:- MTTD/MTTR prioritetləşdirilməsi və aydın playbook ilə aşağı.
- Səs-küy azaldılması ilə alert fatigue (xəbərdarlıq yorğunluğu) azaldır.
- Bildirişdən birbaşa hərəkət verin (ack, snooze, runbook, avto yardım).
- Gizlilik və razılığa riayət edin (opt-in/opt-out, log saxlama).
2) Hadisələrin taksonomiyası və səviyyələri
2. 1 Hadisə növləri
Metrika/anomaliyalar (SRE, məhsul, maliyyə).
Biznes qaydaları (limitlər, frod, KYC, ödənişlər).
Sistemli (deploy, deqradasiya, lisenziyalar).
Xüsusi (davranış triggers, RG/məsul oyun).
2. 2 Əhəmiyyət səviyyələri (Severity)
Kritik - dərhal reaksiya, itki/təhlükəsizlik riski.
Yüksək - KPI/SLO-nun əhəmiyyətli pisləşməsi.
Orta - iş saatlarında fəaliyyət tələb olunur.
Low/Info - müşahidə/kontekst, digestlərdə avtomatik yığma.
2. 3 Priority
Matrix 'Impact × Urgency' → P1..P4. Kanal bağlama və SLA reaksiya.
3) Memarlıq və axınlar
Siqnal istehsalçıları → Hadisə Şinası → Normallaşma (enrich, dedup) → Korrelyasiya → Qaydalar (policy engine) → Marşrutlaşdırma → Çatdırılma Kanalları → Üstünlük Mərkəzi → Qeydlər/Analitika.
Əsas komponentlər:- Enricher: tenant, rol, region, playbook linkləri əlavə edir.
- Deduper: təkrarlanan hadisələri açar ilə qruplaşdırın.
- Correlator: hadisə əlaqədar siqnalları yapışdırmaq.
- Policy Engine: YAML/DSL qaydaları, quiet saatları, eskalasiya.
- Delivery: in-app, email, push, SMS, webhook, chat inteqrasiya.
4) Qaydalar və siyasət (YAML nümunəsi)
yaml policies:
- id: p_sre_critical match: { domain: "infra", severity: "critical" }
route:
primary: { channel: "pager", targets: ["oncall_sre"] }
fallback: { channel: "sms", delay: "2m" }
suppress:
flapping: {window: "10m," threshold: 5} # suppressing frequent twitching duplicates: {key: ["service, ""cluster,"" error _ code"], ttl: "15m"}
escalate:
after: "10m"
to: ["sre_manager"]
auto_assign: true
- id: p_product_medium match: { domain: "product", severity: "medium", kpi: "conversion" }
route:
primary: { channel: "inapp", audience: "product_owners" }
digest:
window: "1h"
max_items: 10 quiet_hours:
tz: "Europe/Kyiv"
ranges: ["22: 00-07: 00"] # only P1 digests/pager at this time
5) Deduplikasiya, korrelyasiya, flappinqin yatırılması
Dedup: qrup identifikatoru 'dedup _ key = hash (service' metric 'dim)'; TTL ≥ flapping pəncərəsi.
Korrelyasiya: Topologiya (xidmət → asılılıq), vaxt (± N min) və kontekstə (buraxılış, hadisə) bağlı siqnalları birləşdirin.
Flapping: «M dəqiqədə N hadisələri» həddi → histerezis və ya suppress qaldırmaq təklifi ilə bir «flapping detected» siqnalı.
6) Marşrutlaşdırma və RACI
Responsible: kim ilk bildiriş/tusk alır.
Accountable: SLA sonra eskalasiya kim.
Consulted: tred/chat kanalında kimə istinad etmək olar.
Informed: digest/nəticələr kimə gedəcək.
Rola və kontekstə görə təyin edin (tenant, region, məhsul axını).
7) Çatdırılma kanalları və nüanslar
Retrailer: 5xx/429/time → backoff + jitter; 'Retry-After' hörmət. İdempotentlik: vebhuklarda 'X-Notification-Id'.
8) Üstünlük Mərkəzi (Preferences Center)
Hadisə növlərinə, səviyyələrə, kanallara görə Opt-in/Opt-out.
Sükut cədvəli (quiet hours), 15/30/60 dəq əl snooze.
Eşik/həssaslıq (məsələn, anomaliya ≥ 3 σ).
Dil/lokal, vaxt/valyuta formatı.
Rollara bağlama: SRE/Product/Finance üçün presetlər.
Şəffaflıq: istifadəçinin niyə siqnal aldığını göstərmək (qaydaya keçid).
9) Məzmun dizaynı: mesaj strukturu
Kritik siqnal üçün şablon (P1):- Başlıq: qısa, tetikleyici ilə: «[P1] [PSP _ TR] 3DS uğursuzluqlarının kəskin artması (+ 12%)».
- Kontekst: dövr, təsirlənmiş seqmentlər/region, məlumat mənbəyi.
- Səbəb/fərziyyə: «18:20 UTC PSP_X buraxılışı ilə bağlıdır».
- SLA/son tarix: «10 dəqiqədən sonra eskalasiya».
- CTA: "playbook aç", "fallback aktiv PSP_Y", "Ack (30 dəq)".
- Linklər: qrafik, hadisə-tred, metrika, runbook.
- Metadata: 'trace _ id', 'incident _ id', 'dedup _ key'.
Ton: dram olmadan faktlar; ədədlər və ölçü vahidləri; şifrəni açmadan qısaltmalardan çəkinin.
Lokalizasiya: dəyişənlər → playsholderlər, köçürmələr resurslarda saxlanılır; ədədlər/tarixlər - lokal olaraq.
10) Bildirişlərdən hərəkətlər (Actionable)
Ack/Snooze vaxt parametrləri ilə.
Assign/Invite hadisə tred.
Runbook: kontekstin avtomatik doldurulması ilə həll addımları açmaq.
One-click remediation (təhlükəsiz yerdə): marşrutu dəyişdirin, limiti qaldırın, jobu yenidən başlatın (təsdiq və audit ilə).
Avtomatik doldurma ilə bilet (Jira/GitHub) yarat.
11) Siqnalların keyfiyyəti: metriklər və hədəflər
Precision (göndərilənlər arasında müvafiq pay) ≥ P1/P2 üçün 80%.
Recall (bütün hadisələr arasında aşkar payı) ≥ 70%.
Noise: istifadəçi üçün orta siqnallar/saat (hədəf tavan).
Ack-time p50/p95, Escalation rate, Snooze rate (səs-küy indikatoru kimi).
MTTD/MTTA/MTTR (domen və kanallar kontekstində).
Silenced-but-should-alert (qaydalara görə boşluqlar) - ayrıca dashboard.
12) Səs-küy idarəetmə: fəndlər
Histerezis və eşik üçün «sürüşmə pəncərələri».
Deteksiyadan əvvəl hamarlama (EWMA).
Aqreqasiya: 30 kiçik əvəzinə - top kontributorlarla bir batch/digest.
Kontekst limitləri: N-dən çox olmayan bildirişlər/saat/kanal/istifadəçi.
Avtomatik geribildirim: Əgər istifadəçi ardıcıl olaraq 3 × Snooze düyməsini basarsa → həddi artırmağı/kanalı dəyişdirməyi təklif edir.
13) Təhlükəsizlik, gizlilik, uyğunluq
Webhook üçün HMAC imzası, sirlərin rotasiyası, 'X-Key-Id'.
RBAC/ABAC: rollar/tenantlar üzrə siqnalların görünürlüyü.
PII-minimallaşdırma, log maskaları, fəaliyyət auditi (ack/assign/runbook).
Razılıq (consent) və bildiriş səbəbləri (qayda/siyasət) - payload.
Retention/TTL bildiriş log, Hadisələrin qanuni Hold.
14) Sxemlər və payload '
Hadisə (daxili)
json
{
"id": "sig_01HX",
"domain": "payments",
"severity": "high",
"priority": "P2",
"title": "The 3DS failure graph has grown to 8. 2% (+3. 1 pp), "
"occurred_at": "2025-11-03T17:55:00Z",
"context": { "psp": "PSP_X", "country": "TR", "release_id": "rel_241103_1820" },
"metrics": { "baseline": 5. 1, "current": 8. 2, "delta_pp": 3. 1 },
"dedup_key": "payments PSP_X TR 3DS_FAILURE",
"runbook": "rbk_psp_3ds_spike",
"slo": { "ack_deadline_sec": 600 }
}
Bildiriş (aqnostik kanal)
json
{
"notification_id": "ntf_91ab",
"signal_id": "sig_01HX",
"targets": ["oncall_payments"],
"channels": ["inapp","slack","webhook"],
"cta": [
{"id": "ack," "label": "Confirm (30 min)," "payload": {"ttl ":" 30m"}},
{"id": "runbook," "label": "Open playbook," "payload": {"id ": "rbk _ psp _ 3ds _ spike"}},
{"id": "fallback," "label": "Enable fallback, PSP_Y" "confirm": true}
],
"hmac": "sha256=AbCd..."
}
15) Məhsulda UX nümunələri
İnbox: Kritik/High/Other sekmələri, sayı nişanları.
Hadisə lenti: əlaqəli siqnallar, hərəkət zamanı, «nə edildi».
Filtrlər: rol, domen, region, vaxt, «yalnız cavabsız».
Siyahıda sürətli hərəkətlər (ack/snooze/assign).
Explain: «Niyə bunu görürsünüz» (qayda, eşik, məlumat).
Digestlər: TZ ilə lokallaşdırılmış səhər/axşam.
16) Test planı
Unit: dedup açarları, histerezis, flapping, payload serializasiyası.
Integration: marşrutlaşdırma, quiet hours, eskalasiya, kanal retrası.
E2E: anomaliyadan biletin bağlanmasına qədər P1 ssenarisi; P2 quiet hours → digest.
Chaos: kanal itkisi (SMTP/SMS), gecikmələr, uçqun siqnalları, clock-skew.
A11y/i18n: screen-readers, klaviatura ack/snooze, nömrələrin/tarixlərin lokalizasiyası.
17) Dashbord keyfiyyəti
Domenlər üzrə Precision/Recall.
Ack time p50/p95 və vaxtında təsdiqlənmiş pay.
Noise per user/hour və top səs-küylü qaydalar.
Escalation rate və «saxta eskalasiya».
Suppressed vs Delivered (nə qədər sıxışdırılmış/dejest daxil edilmişdir).
User feedback :/mesajlar, səs-küy şərhləri.
18) Çek vərəqləri
Dizayn
- Hadisələrin taksonomiyası və səviyyələri razılaşdırılmışdır
- quiet hours/eskalasiya siyasəti təsvir
- Dedup/korrelyasiya/fapping xüsusi
- Kanallar, retrajlar, vebhukların idempotantlığı
- Üstünlük Mərkəzi (opt-in/out, snooze)
- Məzmun şablonları və lokalizasiya
- Playbook və one-click fəaliyyət (audit ilə)
- Keyfiyyət metrləri və daşbordlar
Əməliyyat
- Rübdə bir dəfə eşik optimizasiyası
- A/B qaydaları (eşik, pəncərə, digest)
- Müntəzəm «Top səs-küy» və CAPA rəyləri
- Kanal sirlərinin rotasiyası (HMAC, SMTP, SMS)
- Siqnalizasiya testi (game days)
19) Tətbiq planı (3 iterasiya)
İterasiya 1 - Əsas kontur (2-3 həftə)
Taksonomiya, severity/priority, üstünlük mərkəzi (in-app + email).
Dedup, sadə açar/vaxt korrelyasiyası, quiet hours.
Mesaj şablonları, playbook, ack/snooze/assign.
İterasiya 2 - Etibarlılıq və səs-küyün azaldılması (3-4 həftə)
Flapping/histerezis, digestlər, chat inteqrasiyaları və vebhuklar (HMAC, retrailer).
SLA eskalasiyası, keyfiyyət daşbordları (precision/recall, noise).
One-click remediation (təsdiq və audit ilə).
İterasiya 3 - Optimallaşdırma və miqyas (davamlı)
Topologiya/relizlər üzrə korrelyasiya, astanaların avtomatik təklifləri.
A/B qaydaları, «eşik nə vaxt işləyir» proqnozu.
Səs-küy rəyləri və müntəzəm oyun günləri.
20) Mini-FAQ
Alert fatigue ilə necə mübarizə aparmaq olar?
Dedup, korrelyasiya, histerezis, digestlər və üstünlük mərkəzləri + müntəzəm səs-küy və A/B eşik icmalları.
Anomaliyalar üçün ML lazımdır?
Faydalıdır, lakin müəyyən edilmiş qaydalarla və izah edilə bilən hədlərlə başlayın. ML - Explain ilə bir əlavə kimi.
Niyə istifadəçilər «əlavə» məktublar alırlar?
Qaydaların matçlarını yoxlayın, quiet hours, «niyə çatdırıldı» auditini, kanal/saat limitlərini və Digest 'ləri seçin.
Yekun
Güclü siqnal sistemi ağıllı filtrasiya və düzgün prioritetləşdirmə + bir kliklə hərəkətlərdir. Taksonomiya və siyasətləri rəsmiləşdirin, dedup/korrelyasiya/histerezis tətbiq edin, istifadəçilərə nəzarət verin (preferences, snooze), etibarlı çatdırılma və şəffaflığı təmin edin «niyə aldım». Sonra siqnallar səs-küy mənbəyi deyil, idarəetmə alətinə çevriləcəkdir.