Alarm kuralları

Alarm kuralı bir projeye bağlıdır ve hangi olayların hangi bildirim kanallarına gideceğini belirler. Kanal seçilmezse organizasyonun tüm aktif kanalları kullanılır.

Kaynak Tetikleyen
Monitor Ardışık başarısızlık eşiği, SSL ve alan adı bitiş eşikleri
Issue Yeni hata, tekrar sayısı eşiği
Log Bir zaman penceresinde eşleşen log sayısı (eşik ya da sessizlik)

Log alarmı

Log alarmı, son N dakikada koşula uyan log sayısını izler. Koşul log aramasıyla aynı dili konuşur: panelde aradığınızı kurala yazarsanız aynı sonucu alırsınız.

Alan Açıklama
logQuery Mesajda aranacak ifade (tırnak, OR, -hariç desteklenir); boşsa tüm mesajlar
logMinLevel Verbose, Debug, Information, Warning, Error, Fatal — bu seviye ve üstü sayılır
logEnvironment Yalnızca bu ortam (ör. production)
logThreshold Eşik (log sayısı)
logWindowMinutes Pencere, 1–1440 dakika
logBelowThreshold false: sayı eşiğe ulaşınca (hata patlaması). true: sayı eşiğin altına düşünce
curl -X POST https://api.errorbird.com/api/v1/alert-rules \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{ "projectId": "<project-id>", "sourceType": "Log", "name": "Ödeme timeout",
        "condition": { "logQuery": "timeout", "logMinLevel": "Error",
                       "logEnvironment": "production",
                       "logThreshold": 20, "logWindowMinutes": 5 } }'

Log sessizliği

logBelowThreshold: true ve logThreshold: 1 ile kurulan kural, pencere boyunca hiç log gelmezse tetiklenir. Çöken ama hata fırlatamayan bir uygulama, durmuş bir kuyruk tüketicisi ya da log göndermeyi bırakmış bir sunucu böyle yakalanır; hata alarmı bunları göremez, çünkü ortada hata yoktur.

Nasıl değerlendirilir

Kaydetmeden denemek

Eşiği tahminle kurmak, kuralı ya hiç çalmayan ya da sürekli çalan bir alarma çevirir. Panelde Şu anki loglarla dene düğmesi kuralı kaydetmeden gerçek loglarla çalıştırır:

curl -X POST https://api.errorbird.com/api/v1/projects/<project-id>/log-alert-preview \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{ "logQuery": "timeout", "logMinLevel": "Error", "logThreshold": 20, "logWindowMinutes": 5 }'
# { "count": 20, "countIsCapped": true, "wouldTrigger": true, "from": "…", "to": "…" }

Log alarmları servis kesintisi sayılmaz: kanalda sessiz saat tanımlıysa aralık bitince gönderilir.

Yükseltme (escalation)

Kesinti alarmı gittikten sonra kimse üstlenmezse, yükseltme politikası sırayla başka kanallara haber verir: nöbetçi uyanmadıysa 10 dakika sonra ekip lideri, o da görmediyse 30 dakika sonra herkes.

curl -X POST https://api.errorbird.com/api/v1/escalation-policies \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{ "organizationId": "<org-id>", "name": "Gece nöbeti",
        "steps": [ { "delayMinutes": 10, "channelIds": ["<lider-kanalı>"] },
                   { "delayMinutes": 30, "channelIds": ["<ekip-kanalı>"] } ] }'

Politika bir monitör kuralına bağlanır (escalationPolicyId). İlk alarm kuralın kendi kanallarına gider; basamaklar onun üstüne eklenir. En fazla 5 basamak, gecikmeler alarmdan itibaren dakika cinsinden ve artan sıradadır.

Basamak "o hafta kim nöbetteyse ona" gitsin istiyorsanız basamağa bir nöbet takvimi kanalı koyun. PagerDuty ya da Opsgenie kullanıyorsanız yükseltmeyi oraya bırakmak da bir seçenektir: bu kanallar kesintide olay açar ve nöbet çizelgesi platformun kendi kurallarıyla işler (bkz. Bildirim kanalları).

Üstlenme

Politikalı alarmlar üstlenme bağlantısı taşır. Bağlantı bir onay sayfası açar; düğmeye basılınca kesinti üstlenilir ve bekleyen basamaklar gönderilmez. Bağlantıyı açmak tek başına üstlenmez: mesajlaşma uygulamaları ve e-posta tarayıcıları bağlantıları önceden açar, bu yüzden işlem düğmenin arkasındadır.

Panelde monitör sayfasındaki kesinti satırında Üstlen düğmesi de vardır; orada üstlenen kişinin adı kayda geçer.

curl -X POST https://api.errorbird.com/api/v1/incidents/<incident-id>/acknowledge \
  -H "Authorization: Bearer <token>"

Nöbet takvimi

Nöbet takvimi "bu hafta kim nöbette" sorusunu yanıtlar. Ekip üyeleri sırayla, sabit uzunlukta vardiyalarla nöbet tutar; izin ve takaslar için nöbet değişikliği eklenir. Takvim tek başına bildirim göndermez: Nöbet takvimi türündeki bir bildirim kanalına bağlanır ve o kanala giden alarm, o an nöbette olan kişiye e-posta ve mobil push olarak ulaşır. Kişi değiştikçe kanalı ya da alarm kuralını düzenlemeniz gerekmez.

curl -X POST https://api.errorbird.com/api/v1/on-call-schedules \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{ "organizationId": "<org-id>", "name": "Altyapı nöbeti",
        "timeZone": "Europe/Istanbul", "rotationHours": 168,
        "startsAt": "2026-10-12T09:00:00+03:00",
        "participants": ["<ayse-user-id>", "<burak-user-id>", "<cem-user-id>"] }'

curl -X POST https://api.errorbird.com/api/v1/notification-channels \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{ "organizationId": "<org-id>", "type": "OnCall", "name": "Nöbetçi",
        "scheduleId": "<schedule-id>" }'

Nöbet değişikliği

Belirli bir aralıkta nöbeti başkası tutar (izin, hastalık, takas). Aralık bitince sıra takvime döner. Üst üste binen değişikliklerde en son ekleneni geçerlidir. Tek değişiklik en fazla 30 gün sürer; geçmişte kalan aralık için eklenemez. Değişiklik eklemek ve silmek üye yetkisiyle yapılır; takvimi kurmak ve değiştirmek yönetici işidir.

curl -X POST https://api.errorbird.com/api/v1/on-call-schedules/<schedule-id>/overrides \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{ "userId": "<cem-user-id>", "startsAt": "2026-10-14T09:00:00+03:00",
        "endsAt": "2026-10-16T09:00:00+03:00" }'

Kim nöbette, ne zaman devrediyor

curl https://api.errorbird.com/api/v1/on-call-schedules/<schedule-id> \
  -H "Authorization: Bearer <token>"
# { "name": "Altyapı nöbeti", "current": { "fullName": "Ayşe Yılmaz",
#   "overrideId": null, "shiftEndsAt": "2026-10-19T06:00:00+00:00" }, … }

curl "https://api.errorbird.com/api/v1/on-call-schedules/<schedule-id>/shifts?from=2026-10-12T00:00:00Z&to=2026-10-26T00:00:00Z" \
  -H "Authorization: Bearer <token>"
# { "shifts": [ { "fullName": "Ayşe Yılmaz", "startsAt": "…", "endsAt": "…", "overrideId": null }, … ],
#   "overrides": [ … ] }

Çizelge değişikliklerle birlikte hesaplanır (varsayılan şimdiden 14 gün, en fazla 62 gün). Panelde Nöbet sayfası şu anki nöbetçiyi, bir sonraki devri ve 14 günlük çizelgeyi gösterir. Bir nöbet kanalına bağlı takvim silinemez; önce kanalı silin ya da başka takvime bağlayın.