L19 — SLO'ya bağlı bir alarm kur, bir kez ateşlet#
Modül:
E2· Süre: ~3 saat · Kırık lab: yok
E1'de bir SLI seçip error budget'ı hesapladın. Burada o eşiği bir alarma çevirirsin: hata oranı SLO'yu aştığında ateşleyen, çözülünce sönen bir kural. Sonra alarmı "gece 3'te uyandırmalı mı?" testine göre page / ticket / log diye sınıflar ve çözülmezse kime yükseleceğini (eskalasyon) yazarsın. Amaç kural yazmak değil; gürültü ile eylem çağıran alarmı ayırmak.
Gerekenler#
docker+docker compose(yerel; K8s gerekmez). Tarayıcı.
Görev#
- Alarm kuralını yaz.
starter/alerts.ymldosyasını sen oluştur. Hata oranı son 1 dakikada%1'i aşarsa ateşleyen bir kural yaz (app%5hatayla çalışır, yani eşiği geçecek): - Alertmanager'ı yapılandır.
starter/alertmanager.ymldosyasını sen oluştur: birroute+ birreceiveryeter (dış entegrasyon şart değil; alarm Alertmanager içinde "active" görünür). - Yığını başlat, alarmı gör.
cd starter && docker compose up -d # Prometheus: http://127.0.0.1:9090 (Status → Rules, Alerts) # Alertmanager: http://127.0.0.1:9093for:süresi dolunca alarmPENDING → FIRINGolur. Ateşlediğini bir yerden kanıtla (Prometheus Alerts sekmesi veya Alertmanager UI) vereport.txt'e yaz. - Sınıflandır. Bu alarmı ve en az iki örnek alarmı (biri kasıtlı gürültü, ör. "CPU %80")
report.txt'te bir tabloyla page / ticket / log diye ayır. Her satıra bir cümle gerekçe. - Eskalasyon. Alarm 15 dk içinde ack'lenmezse kime/nereye yükseleceğini bir cümleyle
report.txt'e yaz.
Kabul kriterleri#
-
bash verify.shsıfır hatayla geçiyor. -
starter/alerts.ymlhttp_requests_totalüzerine kurulu, ateşleyen bir alarm içeriyor. -
starter/alertmanager.ymlbirroute+receiveriçeriyor. -
report.txtalarmın ateşlediğinin kanıtını içeriyor (Prometheus/Alertmanager çıktısı). -
report.txtpage/ticket/log sınıflandırma tablosunu (biri gürültü örneği) ve eskalasyon kuralını içeriyor.
İpucu (çözüm değil)#
- Alarm semptoma bağlanmalı (kullanıcı etkisi = hata oranı), sebebe değil (CPU). "CPU %80" tek başına gece uyandırmaz — o bir ticket/log'dur.
for: 1malarmın anlık dalgalanmada değil, süregelen ihlalde ateşlemesini sağlar.- Alertmanager'da alıcı boş bir
receiverolabilir; alarm yineactivegörünür. Dış bildirim kurmana gerek yok — burada ölçtüğün şey kural, kanal değil.
Takılırsan solution/'a bak — ama önce kendin dene.