Uyarılar ve Bildirimler: PagerDuty, Opsgenie
Uyarılar ve Bildirimler: PagerDuty, Opsgenie
1) Neden ayrı bir uyarı platformu
Amaç, doğru kişiye/ekibe anında ve alakalı bir sinyal vermek ve olay sürecini başlatmaktır: tanıma (ack), tırmanma, iletişim, ölüm sonrası. PagerDuty ve Opsgenie vermek:- Servislere/etiketlere/ortamlara göre yönlendirme.
- Tırmanma ve programlar (görevde, güneşi takip et).
- Olay tekilleştirme/korelasyon.
- Sessiz pencereler (bakım/dondurma) ve müzik kuralları.
- İzleme, CI/CD ve ChatOps ile entegrasyonlar.
Destek: SLO-eşik, uyarı, kişi/makine, runbook, geri alma, düzeltme, postmortem.
2) Sinyal modeli ve şiddeti
Önerilen ölçek:- Kritik (sayfa) - SLO ihlali/para yolu hatası (para yatırma/çekme), kullanılabilirlikte düşüş, yakma oranı.
- Yüksek (sayfa/bilet) - belirgin SLO dökümü olmadan önemli bozulma.
- Orta (bilet) - kapasite, sırtın bozulması, yeniden ödeme.
- Düşük (bilgilendirme) - eğilimler, uyarılar.
Kural: yalnızca SLO veya açık iş tetikleyicisine göre sayfa.
3) Yönlendirme mimarisi
1. Kaynak (Prometheus/Alertmanager, Grafana, bulut izleme, kendi webhooks).
2. Шлюз (PagerDuty/Opsgenie hizmeti/entegrasyonu).
3. İlkeler: etiketlere göre yollar ('hizmet', 'env', 'bölge'), önem derecesi, yük.
4. Eskalasyon: görev seviyelerinin sırası (L1 - L2 - menedzher).
5. İletişim: ChatOps kanalları, durum sayfaları, postalar.
Anahtar etiketleri örneği (standartlaştırma)
'servis', 'env', 'bölge', 'sürüm', 'çalışma kitabı', 'release _ id', 'rota', 'kiracı' (eğer B2B/çok kiracı).
4) Çağrı ve eskalasyon programları
Programlar: Birincil/ikincil, роли (SRE, DBRE, Sec).
Rotasyonlar: gündüz/gece, güneşi takip et, hafta sonu.
Geçersiz kılmalar: Ayrılma/hastalık.
Eskalasyon: Ack-timeout 5-10 dakika - sonraki katman. Çalışma saatlerine göre - profil departmanına; Dışarıda - nöbetçi platform.
İpucu: Geceleri kısa tırmanma adımlarını (daha az yorgunluk) ve gün boyunca daha uzun tutun (bağlam var).
5) Alertmanager ile entegrasyon (temel desen)
yaml receivers:
- name: pagerduty pagerduty_configs:
- routing_key: ${PAGERDUTY_ROUTING_KEY}
severity: '{{ if eq. Labels. severity "critical" }}critical{{ else }}error{{ end }}'
class: '{{.Labels. service }}'
component: '{{.Labels. env }}'
group: '{{.Labels. region }}'
description: '{{.Annotations. summary }}'
details:
service: '{{.Labels. service }}'
env: '{{.Labels. env }}'
runbook: '{{.Annotations. runbook }}'
release: '{{.Annotations. release }}'
route:
receiver: pagerduty group_by: ["service","env","region"]
group_wait: 30s group_interval: 5m repeat_interval: 2h
Opsgenie (webhook)
yaml receivers:
- name: opsgenie opsgenie_configs:
- api_key: ${OPSGENIE_API_KEY}
responders:
- name: "SRE Primary"
type: team priority: '{{ if eq. Labels. severity "critical" }}P1{{ else }}P3{{ end }}'
details:
trace: '{{.Labels. trace_id }}'
runbook: '{{.Annotations. runbook }}'
6) Gürültü, deadup ve korelasyon
Dedup anahtarı: kararlı bir parmak izi kullanın (örneğin, servis + rota + kod).
Gruplama: Hizmet/ortama göre'grup _ by ', böylece 5xx basamaklı düzinelerce sayfa oluşturmaz.
Sessiz/sessiz pencereler: geçiş/sürüm/yük testleri sırasında.
Bir nedenden dolayı bastırma: "api-gateway @ prod" için zaten bir P1 olayı varsa, çocuk P2/P3 bastırın.
Anti-pattern: SLO üzerinde onaylanmış bir etkisi olmayan CPU/Bellek tarafından sayfa.
7) Sürümler ve otomatik eylemlerle bağlantı
Kanarya depresyonu ile, PagerDuty/Opsgenie SLO kapısından bir uyarı alır - CI/CD'deki webhook - duraklat/geri al (Argo Rollouts/Helm).
Alert şunları içerir: 'release _ id','image. Etiket, boru hattı ve geri dönüş runbook referans.
Ek açıklamalardaki runbook link örneği
runbook: https://runbooks. company/rollback/api-gateway#canary
8) ChatOps ve İletişim
Slack/Teams'de bir bilete bağlanan bir olay kanalını otomatik olarak oluşturma.
Slash- команды: 'ack', 'assign @ user', 'status set', 'postmortem start'.
Durum sayfası - P1/P2'da otomatik olarak güncellenir.
9) Olay yaşam döngüsü (minimum)
1. Tetik (SLO/sensörlerden uyarı).
2. Sayfa (birincil çağrı).
3. Ack (onay, TTA).
4. İletişim (kanal/durum).
5. Hafifletme (geri alma/özellik-bayrak/izolasyon).
6. Çözüm (TTR)
7. Postmortem (zaman çizelgesi, nedenler, eylemler, dersler, görev sahibi).
Rol kiti: IC (olay komutanı), Ops kurşun, Comms, Scribe.
10) Yük taşıma alanları (normalleştirme)
json
{
"service": "payments-api",
"env": "prod",
"region": "eu-central-1",
"severity": "critical",
"event_class": "slo_burn",
"summary": "Withdraw 5xx > 0. 5% for 10m",
"runbook": "https://runbooks/payments/withdraw-5xx",
"release_id": "rel-2025-11-03-14-20",
"image": "ghcr. io/org/payments:1. 14. 2",
"trace_id": "8a4f0c2e9b1f42d7",
"annotations": { "canary": "25%" }
}
11) Sinyal kaynaklarının entegrasyonu
Prometheus/Alertmanager, SLO/RED'in ana kaynağıdır.
Grafana Alerting, panolar/iş metrikleri için daha kolaydır.
OpenTelemetry/SpanMetrics - rotaya göre gecikme/hata.
K8s olaylar - küme arızaları (kontrol düzlemi, PDB ihlalleri).
DB/Kuyruklar - lag/locks/replication.
Uygulama webhook'ları - etki alanı sinyalleri (PSP hatası, sahtekarlık dalgalanması).
12) Politikalar ve Uyum
Politikaları, programları, mutaları oluşturmak/değiştirmek için RBAC.
Denetim: Durumu tanıyan/atayan/değiştiren, zaman damgaları.
Yüklerde PII minimizasyonu (kullanıcının e-postası/telefonu yerine bilet kimliği).
DR-planı: PagerDuty/Opsgenie kullanılamadığında ne yapacağız (geri dönüş kanalı).
13) Vaka Çalışmaları (PagerDuty vs Opsgenie)
14) Sessiz pencereler ve donlar
Freeze: Planlanan serbest bırakma pencerelerinde çağrı yapmayı yasaklayarak yalnızca P1 bırakır.
Etiket ezberleme: 'env = stage', 'region = dr', 'service = batch'.
Geçici sessize alma: veritabanlarını/yük testlerini taşırken - açık bir sahibiyle.
15) Performans ölçümleri (uyarılar için SRE/DORA)
MTTA/MTTR (ekipler/hizmetler/vardiyalar tarafından parçalanır).
Runbook'lu uyarıların yüzdesi (hedef ≥ %95).
Sayfa uyarılarının SLO'ya göre paylaşımı (hedef ≥ %90).
Kullanışlı/gürültülü oranı (hedef ≥ 3:1).
Otomatik eylemlerin %'si (webhook aracılığıyla duraklat/geri al) - büyür.
14/30 gün içinde ölüm sonrası eylem öğelerini yak.
16) Anti-desenler
Kullanıcıyı etkilemeden donanıma (CPU, disk) göre sayfa.
'Group _ by' yokluğu - uyarıların "fırtına".
Sessiz pencereler yoktur - bültenler her şeyi kırmızıya boyar.
'Servis/env/runbook' olmayan yükler - yönlendirilemez/üzerine hareket edilemez.
Tek bir önem ölçeği ve kuralları yoktur (her kaynak farklıdır).
Kimsenin tamir etmediği "ebedi" uyarılar (uyarı borcu).
17) Uygulama kontrol listesi (0-45 gün)
0-10 gün
Önem derecesini hizalayın ve etiketleri/ek açıklamaları standartlaştırın.
PagerDuty/Opsgenie'de hizmetler oluşturun, zamanlamaları ve temel yükselmeleri yapılandırın.
Alertmanager/Grafana'yı bağlayın, 'group _ by've deadup'ı etkinleştirin.
11-25 gün
SLO uyarıları girin (çoklu pencere yazımı), bir bağlantı çalışma kitabı ekleyin.
ChatOps'u yapılandırın: otomatik kanallar, ack/assign komutları.
Sürümlerde/geçişlerde sessiz pencereleri etkinleştirin.
26-45 gün
Kanaryalar (webhooks) için otomatik duraklatma/geri alma özelliğini entegre edin.
MTTA/MTTR raporlarını girin ve hijyene dikkat edin (gürültü temizliği).
Postmortem standardize ve eylem öğeleri üzerinde kontrol.
18) Hazır snippet'ler
Grafana Uyarı - PagerDuty (JSON vücut haritalama)
json
{
"routing_key": "${PAGERDUTY_ROUTING_KEY}",
"event_action": "trigger",
"payload": {
"summary": "{{.RuleName }}: {{ index. Labels \"service\" }}",
"severity": "{{ if eq (index. Labels \"severity\") \"critical\" }}critical{{ else }}error{{ end }}",
"source": "grafana",
"component": "{{ index. Labels \"env\" }}",
"group": "{{ index. Labels \"region\" }}"
},
"links": [
{ "href": "{{.DashboardURL }}", "text": "Dashboard" },
{ "href": "{{ index. Labels \"runbook\" }}", "text": "Runbook" }
]
}
Uyarıdan Webhook> Argo Rollouts duraklatması
bash curl -X POST "$ARGO_API/rollouts/pause" \
-H "Authorization: Bearer $TOKEN" \
-d '{"name":"api-gateway","namespace":"prod"}'
Opsgenie - Yönlendirme Kuralı (sözde)
yaml if:
tags: ["service:payments","env:prod"]
severity: ["P1","P2"]
then:
route_to: "SRE-Payments"
notify: ["Primary OnCall","Secondary"]
19) Sonuç
Uyarıların güçlü bir konturu bir süreç + disiplindir: SLO odaklı tabakalaşma, yetkin yönlendirme ve yükseltme, düzgün etiketler ve yükler, sessiz pencereler, ChatOps ve otomatik eylemler (duraklatma/geri alma). Bütçe ve UX üzerinden PagerDuty veya Opsgenie'yi seçin, ancak aynı gürültü, görev ve sorumluluk kurallarına bağlı kalın - o zaman sayfa nadir, doğru ve kullanışlı olacak ve olaylar kısa ve yönetilebilir olacaktır.