Kural Motoru (Rule Engine)

Callert, gelen alarmları (Incident) kime, nasıl ve ne zaman ileteceğine "Kurallar" aracılığıyla karar verir.

Nasıl Çalışır?

Her proje için birden fazla kural tanımlayabilirsiniz. Bir incident oluştuğunda, Callert kuralları sırayla (öncelik sırasına göre) çalıştırır. Eşleşen tüm kuralların aksiyonları toplanır ve tekrar eden aksiyonlar tekilleştirilir.

Projede aktif bir bakım penceresi (Maintenance Window) varsa bildirimler bastırılır (suppressed) ve timeline’a bir event yazılır.

Kural Yapısı

BileşenAçıklama
Match ConditionsAlarmın bu kurala uyması için gereken şartlar.
  • Severity: CRITICAL, HIGH, MEDIUM, LOW, INFO
  • Source: webhook, uptime-kuma, prometheus, heartbeat, http-check
  • Regex: title + description üzerinde regex eşleşmesi
  • Tags: env:production, team:backend vb.
ActionsEşleşme durumunda yapılacak işlemler.
  • Notify: Kullanıcı ID, email, telefon veya Rol (OWNER, ADMIN, RESPONDER).
  • Channel: CALL, SMS, EMAIL.

Örnek Senaryolar

Senaryo 1: Production Down

Sadece CRITICAL alarmlar için.

{ "matchConfig": { "severity": ["CRITICAL"], "tags": { "env": "production" } }, "actions": [ { "type": "CALL", "targets": ["OWNER"] }, { "type": "SMS", "targets": ["OWNER"] } ] }

Bu kural, sadece severity = CRITICAL ve env = production olan alarmlar için OWNER'ı arar ve SMS gönderir. Eğer alarm HIGH veya env = staging ise bu kural tetiklenmez, dolayısıyla bu kuraldan kaynaklı bir arama beklememelisiniz.

Senaryo 2: Low Priority

Önemsiz uyarılar için sadece email.

{ "matchConfig": { "severity": ["LOW", "INFO"] }, "actions": [{ "type": "EMAIL", "targets": ["OWNER"] }] }

Bu kural bilerek CALL veya SMS üretmez; sadece email gönderir. Eğer severity = LOW olan bir alarm için arama bekliyorsanız, bu kural tasarım gereği bunu yapmayacağı için ek bir CALL kuralı tanımlamanız gerekir.

Özet: Bir alarm için arama bekleyip alamadıysanız, öncelikle kuralın matchConfig kısmında severity, source ve tags filtrelerinin gerçekten uyup uymadığını kontrol edin. Sonrasında Actions içinde ilgili kullanıcılara CALL/SMS tanımlı olduğundan emin olun.