
Konseptler
- Uyarı — kural. Ne kontrol edileceğini (tetikleyici), ne sıklıkta (değerlendirme aralığı), ne zaman kırılmış sayılacağını (bileşik mantık), ne kadar acil olduğunu (önem) ve kime/nereye bildirileceğini (kanallar) belirtir.
- Olay — bir uyarı tetiklendiğinde ne olur. Bir uyarının aynı anda en fazla bir açık olayı vardır. Tekrarlanan ihlaller aynı olayın kanıtını günceller. Olaylar bir operatör tarafından çözülür; kural tetiklemeyi durdurduğunda otomatik çözümleme planlanmıştır ancak şu anda etkinleştirilmemiştir.
- Kanal — bir bildirimin gittiği yer: e-posta, Slack, genel webhook veya panoda. Her uyarı herhangi bir kombinasyon ekleyebilir.
default kuruluştur). Olaylar bireysel bir operatöre triaj için atanabilir.
Tetikleme türleri
Beş tür, her birinin kendine ait JSON özellikleri vardır. “Kırılmış”ı nasıl tanımlamak istediğinize uyan birini seçin. Pano yeni uyarı formu aynı özellikleri sizin için oluşturur ve tetikleme türünü seçtikçe koşul düzenleyicisini değiştirir:
1. metric_threshold
En basiti. Kapalı bir listeden bir metrik, bir operatör, bir eşik ve bir zaman penceresi seçin.
| Metrik | Ne saydığı |
|---|---|
event_count | Penceredeki toplam olaylar |
error_count | event_type = 'error' VEYA error_type IS NOT NULL olan herhangi bir olay |
error_rate | error_count / event_count (0..1) |
p95_latency_ms | duration_ms olan tüm olaylar arasında quantile(0.95)(duration_ms) |
p99_latency_ms | quantile(0.99)(duration_ms) |
token_sum | SUM(input_tokens + output_tokens) |
>, >=, <, <=, == (ayrıca gt, gte, lt, lte, eq olarak kabul edilir).
İsteğe bağlı filtreler: environment, event_type.
Örnek spec:
2. custom_sql
Önceden ayarlanmış metrikler kapsamayan her şey için. Operatör tarafından sağlanan SQL, işlemci bunu çalıştırmadan önce aynı /queries/run korumasından geçer (yalnızca SELECT/WITH, tek ifade, 10.000 satır sınırı). İki mod:
- satırlar modu (no
op/value): sorgu en az bir satır döndürür döndürmez uyarı tetiklenir. - değer modu: sorgu bir sütunu
metric_valueolarak takma ad oluşturmalıdır; işlemci ilk satırınmetric_valuesiniopkullanarakvaluea karşılaştırır.
3. evaluation_score
agenteye.evaluations okunur ve adlandırılmış bir puanın bir pencere boyunca ortalaması karşılaştırılır.
min_count tek örnek aykırılıklarına karşı koruma sağlar; işlemci pencerede en az N değerlendirme mevcut olana kadar tetiklenmez.
4. eval_compound
Birkaç değerlendirici puanı arasında aynı anda ortaya çıkan kalite gerilemeleri yakala. evaluation_score tek bir adlandırılmış puanı izlerken, eval_compound birden çok değerlendirme puanı koşulunu tek bir uyarıya birleştirir ve sonuçlarını seçilen mantıkla birleştirir; böylece bir kural “helpfulness düşerse VEYA hallucination yükselirse tetikle”, “yalnızca helpfulness VE tool-efficiency her ikisi de düşerse tetikle” veya “bu üçten en az 2si ihlal ederse tetikle” ifade edebilir.
Her koşul agenteye.evaluationsden adlandırılmış bir puanın ortalamasını paylaşılan pencere boyunca okur ve bunu kendi operatörü ve eşiği ile test eder. Boolean sonuçları daha sonra combinator tarafından birleştirilir:
| Combinator | Mantık | Tetiklenir |
|---|---|---|
"any" | VEYA | en az bir koşul ihlal edilirse |
"all" | VE | her koşul ihlal edilirse |
{ "at_least": N } | N-içinden-M | en az N koşul ihlal edilirse |
combinator:"any","all"veya{ "at_least": N }.conditions[]: her{ score_key, op, value }, diğer tetikleyicilerle aynı operatörleri kullanarak (>,>=,<,<=,==).window_secs: her koşula uygulanan paylaşılan geri izleme (varsayılan3600).min_count: o koşul ihlal edilmeden önce koşul başına minimum değerlendirme sayısı; pencerede çok az örneği olan bir koşul “ihlal edilmedi” olarak sayılır (varsayılan1).environment: isteğe bağlı; her koşulu bir ortama kısıtlar.
5. per_event
“X ile eşleşen herhangi bir olay geldi” uyarıları için. Toplama yok; işlemci geri izleme penceresinde bir eşleşme görür görmez tetiklenir.
| Alan | Amaç |
|---|---|
agent_id | Hataları belirli bir aracıya (Error sayfasında gösterilen) kısıtla. |
error_type | Tüm hatalardan ziyade belirli bir hata sınıfına (TimeoutError gibi) kısıtla. |
message_contains | payload.messagee karşı büyük/küçük harfe duyarsız alt dize eşleştirmesi. Aynı aracıdan her hataya karşı uyarı vermeden belirli bir arıza modunu yakalamak için kullanışlıdır (örneğin prompt is too long). 200 karakterle sınırlı; desen değil, değişmez bir dize olarak eşleştirilir. |
lookback_secsi kabaca uyarının eval_interval_secssine eşleşecek şekilde ayarlayın.
/errorsten kısayol: hatalar görünümündeki her hata grubunun temsilci satırının ve bir hata olayı için oturum olayı ayrıntı panelinin, /alerts/newi bu satırın event_type + ortamına kili bir per_event tetikleyicisinin önceden doldurulmuş olarak açan bir + alert düğmesi vardır; mevcut olduğunda error_typeden kaynak alan bir ad dahil. Yine kanalları seçer ve geri izlemeyi onaylarsınız, ancak eşleyici sizin için doldurulmuştur. Operatörler düğmenin görünmesi için alerts:write gerekir.
Bileşik mantık (N içinden M)
Her uyarının tetikleyiciye ek olarak iki tam sayı kontrol düğmesi vardır:eval_window: kaç son değerlendirmeye bakılacağı (varsayılan 1)min_breaches: uyarı tetiklenmeden önce kaç tanesinin ihlal edilmesi gerektiği (varsayılan 1)
1 of 1 (varsayılan) “ilk ihlalde tetikle”dir. 3 of 5 “kuralın son 5 değerlendirmeden 3’ünü ihlal ettiğinde tetikle” anlamına gelir, tek bir kötü ölçüm gürültü olduğu titrek sinyaller için kullanışlıdır. İşlemci uyarı başına bir halka arabelleği tutar; durumu kendiniz yönetmek zorunda değilsiniz.
Değerlendirme aralığı
eval_interval_secs işlemcinin kuralınızı ne sıklıkta çalıştıracağını kontrol eder. [30, 86400] ile sınırlandırılmıştır. Panodaki Presets: 1m / 5m / 15m / 1h. Temel alınan sinyalin ne kadar hızlı hareket ettiğine eşleşen bir aralık seçin: 15 saniyede değerlendirilen 5 dakikalık bir hata oranı uyarısı CPU’yu boşa harcar; bir olay başına uyarı kısa bir geri izleme gerektirir veya tick’ler arasındaki olayları sessizce bırakacaktır.
Kanallar
Her uyarı bu dördünün herhangi bir kombinasyonunu ekleyebilir. Kanala özgü kimlik bilgileri (Slack webhook URL’si, genel webhook URL’si + imzalama sırrı, varsayılan e-posta alıcıları)/settings tarafından bir kez yapılandırılır ve her uyarıdan anahtar ile referans gösterilir. Bu şekilde bir Slack kanalı her birin kendi webhook URL kopyasını depolaması gerekmeden birçok uyarıya hizmet verebilir.
Üç harici kanal türü (e-posta, Slack, webhook) ayrıca kuruluş çapında bir kill anahtarı alerts.enabled_channels tarafından geçit oluşturulmuştur. Tetiklenen bir uyarı bu sette olmayan bir kanal türü eklediğinde, işlemci bunu atlar ve durum skipped_disabled ve hedef <channel_disabled> olan bir alert_notifications satırı kaydeder (tüm Slack teslimatını global olarak duraklatmanıza izin vererek her kuralı düzenleme gerekmeden). Panodaki kanal her zaman izin verilir. Bkz. Yapılandırma.
E-posta
OTP giriş e-postalarını göndererek aynı SMTP taşımasını yeniden kullanır. Alıcılar şu sırada çözümlenir:- Kanala özgü
recipients[]geçersiz kılması (boş olmadığında). alerts.email_default_recipientsayarı (e-posta dizelerinin bir dizisi).
<smtp_unconfigured> olan bir alert_notifications satırı kaydeder böylece denetim izi yanlış yapılandırmayı görünür kılar.
Slack
Bir gelen webhook URL’sine Block Kit iletisi gönderir.- Varsayılan URL:
alerts.slack_default_webhook(/settingsiçinde ayarlanır). - Uyarı başına geçersiz kılma: kanalın
webhook_setting_keysini başka herhangi bir URL türü ayar anahtarına ayarlayın, örneğinalerts.slack_oncall,alerts.slack_costs.
:rotating_light: / :warning: / :bell:) içerir ve ileti olay sayfasına derin bağlantı veren bir düğme taşır.
Genel webhook
PagerDuty, Opsgenie veya kendi alım uç noktanız için bir JSON-POST entegrasyonu. Gövde şekli:alerts.webhook_signing_secret ayarlandığında, istek X-AgentEye-Signature: sha256=<hex> başlığı içerir, sırrı kullanarak gövdenin HMAC-SHA256’sı. Yükü güvenmeden önce alıcı tarafında doğrulayın.
Başlık X-AgentEye-Event alert.firing / alert.test taşır. (alert.resolved planlanan otomatik çözümleme özelliği için ayrılmıştır ve şu anda yayınlanmamaktadır.)
Panodaki
Harici teslimat yok: uyarı basitçe pano olayları sayfasının yüzeylendiği biralert_notifications satırı yazar. Kuralı ayarlarken ve harici bir sistemi spam yapmak istemiyorsanız veya operatörlerin normal triaj sırasında kontrol ettiği düşük aciliyet uyarıları için kullanışlıdır.
Olay yaşam döngüsü
- firing — işlemci az önce olayı açtı veya başka bir ihlal algıladı. Tetikleme bildirimi tam olarak bir kez yayılır (olayın
notified_firing_atzaman damgasına göre geçit oluşturulmuş). - acknowledged — bir operatör
/incidents/:idüzerinde ack düğmesine bastı. Olay hala açık olarak kabul edilir; sonraki ihlaller kanıtını yeniden bildirmeden günceller. - resolved — bir operatör resolve düğmesine bastı. Kural tetiklemeyi durdurduğunda otomatik çözümleme planlanmıştır ancak şu anda etkinleştirilmemiştir, bu nedenle açık bir olay bir operatör bunu çözene kadar açık kalır.


Gerekli İzinler
Yazarlık uyarı kuralları ve triaj olayları ayrı kaygılar ve ayrı hibeler olan şey; bu nedenle on-call’a bir olaya erişim verebilir kuralları yeniden yazma yeteneği vermeden.alerts:read: uyarı kurallarını görüntüle.alerts:write: uyarı kuralları oluştur, düzenle, sil ve test bildirimi tetikle.incidents:read: olayları görüntüle.incidents:write: uyarıya bağlı olmayan manuel (ad-hoc) olaylar açılır.incidents:ack: olayları onayla, ata, yorum yap ve çözümle.
EskiAPI anahtarlarında (alerts:ack. Eskialerts:acktoken’ına sahip anahtarlar ve operatörler çalışmaya devam eder:incidents:ackolarak onurlandırılır (veincidents:readima eder), böylece mevcut on-callerlar kimlik bilgileri yeniden yayınlamadan erişimlerini korurlar. Yeni hibelerincidents:*ailesiyle verin.
POST /keys) ve operatörlerde (PUT /users/:id) hibe verin. Pano PermGate, bir izin eksik olduğunda ilgili düğmeleri kilitler; eylemin yanında // 403 göreceksiniz.
E-posta alıcı seçici. Uyarı editörünün alıcı seçici kuruluşunuzun üyelerini listeler böylece onları ada göre seçebilirsiniz.alerts:readveyaalerts:writetutan herhangi bir operatör için yükler; bu amaç için takımınızın dizinini görüntülemek herhangi birusers:readgerektirmez ve seçici yalnızca üye e-posta adreslerini döndürür, asla tam kullanıcı kayıtlarını döndürmez.
Yapılandırma
İşlemci tarafından tüketilen ortam değişkenleri:| Var | Varsayılan | Amaç |
|---|---|---|
ALERT_WORKERS | 1 | Sunucu örneği başına worker görevleri. Çoğu dağıtımın sadece bir tane gerekir. |
ALERT_CLAIM_BATCH | 16 | Tek bir worker tick işlemlerinin maksimum uyarı sayısı. |
ALERT_POLL_IDLE_SECS | 5 | Kuyruk boş olduğunda worker uyku. |
ALERT_REQUEST_TIMEOUT_MS | 15000 | Tetikleyici başına değerlendirme zaman aşımı. |
DASHBOARD_URL | https://app.befailproof.ai | Bildirimler içinde olay sihir linkini oluşturmak için kullanılan başlangıç. Pano ana bilgisayarınıza ayarlayın. |
/settingsten yönetilen, env değil):
alerts.email_default_recipients(email_list): e-posta dizeleri JSON dizisi — e-posta kanalları için varsayılan alıcılar.alerts.slack_default_webhook(url): varsayılan Slack gelen-webhook URL’si.alerts.webhook_default_url(url): varsayılan genel-webhook URL’si.alerts.webhook_signing_secret(secret): HMAC-SHA256 anahtarı. GET yanıtında her zaman""olarak döndürülür; döndürmek için yeni bir değer yazın.alerts.enabled_channels(channel_set): uyarı tetiklendiğinde gönderilenin kuruluş çapında harici kanal türleri kümesi; üçü de varsayılan (email,slack,webhook). Bir türü buradan çıkarmak, her kuralı düzenlemeden tüm uyarılar için bu kanalı global olarak bastırır. Panodaki kanal her zaman teslim edilir ve bu ayardan etkilenmez.
Yeni bir uyarıyı doğrula
Yeni bir uyarıya güvenmeden önce:- Bunu en az bir bildirim kanalı ile etkinleştirilmiş olarak kaydedin.
- Uyarı ayrıntı sayfasından test seçin ve her yapılandırılmış hedefin sentetik bildirimi almasını doğrulayın.
- İlk gerçek ihlaldan sonra, olayın Incidents altında görünmesini ve ölçülen değerinin karşılık gelen pano sorgusuyla eşleşmesini doğrulayın.
Sorun Giderme
| Belirti | Olası Nedeni |
|---|---|
| Uyarı asla tetiklenmez | enabled = false, veya hiçbir kanal eklenmemiş veya temel CH sorgusu 0 satır döndürür. Kanalları doğrulamak için test kullanın; metriği doğrulamak için /queries/run kullanın. |
| Slack bildirimi eksik | alerts.slack_default_webhook (veya uyarı başına geçersiz kılma anahtarı) ayarlanmamıştır: <unset:…> satırları için alert_notifications.target kontrol edin; veya slack türü alerts.enabled_channels içinde global olarak devre dışı bırakılmıştır: durum skipped_disabled ve hedef <channel_disabled> olan alert_notifications satırlarını kontrol edin. |
| Genel webhook 401 | Alıcı bir imza gerektirir ancak alerts.webhook_signing_secret ayarlanmamıştır. Alıcıda HMAC’ın hmac_sha256(secret, body) eşleşip eşleşmediğini doğrulayın. |
| E-posta “tüm gönderiler başarısız oldu” | SMTP kimlik bilgileri yanlış veya from adresi yayın tarafından reddedilir. OTP e-postalarını gönderip göndermeyen aynı yüzey: bunlar işe yarıyorsa SMTP taşıması iyidir. |
| Olay tekrar tekrar açılır | Bileşik düğmeler çok agresiftir: min_breaches veya eval_window’ü yükseltmeyi deneyin böylece geçici artışlar çözdüğünüz olayları yeniden açmazsınız. |

