İzleyiciler ve uyarılar
İzlemeye değer bir koşul, izleniyor. mcpd bir zamanlayıcıyla değerlendirir, bulduğunu mandallar ve size bir kez söyler.
İzleyici nedir
İzleyici, mcpd'nin bir zamanlayıcıyla kendine sorduğu kayıtlı bir sorudur: bu projedeki hata oranı son beş dakikada yüzde beşin üstünde mi? Bu puanlayıcının ortalaması üzerinde anlaştığımız sayının altında mı? Arayüzün okuduğu deponun aynısını okur, yani bir izleyici ancak kendinizin de bakabileceği bir şeyi öne sürebilir.
Siz birini yapılandırana kadar izleyiciler kapalıdır. mcpd sizin için bir eşik tahmin etmez, çünkü kimsenin seçmediği bir eşik kimsenin güvenmediği bir eşiktir.
Monitor panel
6 watched · every 60s
Error rate
Threshold 5%
Two readings in the middle are —: too few runs in the window to judge. The lamp stays lit through them.
Mandallanır
Bir koşul sürerken her değerlendirmede tetiklenen bir izleyici bir gün içinde susturulur; susturulmuş bir izleyici ise hiç izleyici olmamasından kötüdür, çünkü kapsam varmış gibi görünür. Bu yüzden mcpd durumu değil geçişi bildirir: soruna girerken bir kez, çıkarken bir kez ve arada hiç.
Sessizlik iyileşme değildir
İnsanlara kesintiye mal olan kural budur. Trafik durduğunda pencere yargıya varmaya yetmeyecek kadar az çalıştırma tutar; akla ilk gelen uygulama da “bir sorun yok” deyip uyarıyı temizler. Oysa istek karşılamayı bırakmış bir ajan, hatadan kurtulma değil hatanın kendisidir.
İçinde çok az çalıştırma olan bir pencere, duran bir uyarıyı tam olduğu yerde bırakır. Bir izleyici yalnızca arkasında yeterli örnek olan bir okuma eşiğin içine döndüğünde normale döner.
Aynı gerekçe min_samples değerini belirler. Sakin bir saatteki
tek bir başarısız çalıştırma yüzde yüz hata oranıdır ve mcpd buna kusur
demeyecektir. Varsayılan yirmidir.
Neler izlenebilir
| İzlenen | Ölçtüğü |
|---|---|
error_rate | Penceredeki toplam çalıştırmaya oranla başarısız çalıştırmalar. |
latency_p95 | Doksan beşinci yüzdelik çalıştırma süresi, milisaniye olarak. |
cost | Penceredeki toplam harcama, fiyat kitabının para biriminde. |
score_mean | scorer_id ile adlandırılan tek bir puanlayıcının
ortalaması. Bir gecikme grafiğinin göremediği kalite regresyonunu
yakalayan budur.
|
trace_count | Penceredeki çalıştırmalar. Susmuş bir hattı yakalamak için below ile izleyin. |
step_count_divergence | Penceredeki, kendi tanımına göre alışılmadık sayıda adım atan çalıştırmalar. Buradaki tek izleyici olarak ölçtüğü şeyin biriminde bir eşiği yoktur. Kalıcı çalıştırmaları okur, trace'leri değil. |
run_repetition | Bir çalıştırmanın kendini ne kadar tekrarladığı: penceredeki çalıştırmalar üzerinden, herhangi birinin kendi tanımındaki tek bir düğümde yaptığı en yüksek deneme sayısının ortalaması. 1, hiçbir düğümün iki kez çalışmadığı anlamına gelir. Kalıcı çalıştırmaları okur, trace'leri değil. |
Eşik yanlış soruyken bir hedef
İzleyici, hata oranının şu anda yüzde beşin üstünde olup olmadığını sorar. SLO daha yararlı bir şey sorar: söz verdiğimiz hedefi kaçıracak mıyız ve oraya ne hızla gidiyoruz.
Fark önemlidir, çünkü bir eşik iki dakikalık bir sıçramayı yavaş bir sızıntıdan ayıramaz ve bu ikisi zıt karşılıklar ister. Eşiği sızıntıyı yakalayacak kadar sıkı ayarlayın, sıçrama sizi sabahın üçünde arar. Sıçramayı uyuyarak geçirecek kadar gevşek ayarlayın, sızıntı bir hafta boyunca sürer.
Bütçe ve onu tüketme hızı
Otuz gün üzerinden 0.995 hedefi, çalıştırmaların binde beşinin
başarısız olabileceğini söyler. Bu binde beşlik pay hata bütçesidir. 1'lik
bir tüketim hızı onu tam otuz günde harcar; 10'luk bir tüketim hızı üç günde
harcar.
mcpd tüketimi aynı anda iki pencerede ölçer ve yalnızca ikisi de aynı şeyi söylediğinde devreye girer: son bir saatte 14,4x üzerinde ve son altı saatte 6x üzerinde. İki durumu ayıran budur. Beş dakikalık bir kesinti bir saatlik sayıyı oynatır, altı saatliği oynatamaz, yani çağrı çıkarmaz. Bütün öğleden sonra süren bir sızıntı ikisini birden oynatır.
Ona güvenmeden önce bilmeye değer: %99,5 hedefinde bu eşikler yaklaşık %7,2
hata oranına karşılık gelir. Sabit %5 başarısızlık oranı bütçeyi on kat hızlı
tüketir ve onu erken bitirir, ama kimseyi uyandırmaz. Bunun için
budget_remaining değerini izleyin ve daha erken haberdar olmak
istiyorsanız bir score_mean veya error_rate
izleyicisi bulundurun.
{
"slos": [
{
"id": "support-availability",
"name": "99.5% of support runs succeed over 30 days",
"project": "support-desk",
"objective": 0.995,
"window_days": 30,
"min_samples": 20,
"webhook": "https://hooks.example.com/mcpd"
}
]
} GET /v1/api/slos her hedefi başarı oranı, kalan bütçe oranı ve
iki tüketim hızıyla birlikte döndürür.
POST /v1/api/slos/{id}/ack birini onaylar.
İzleyicilerle tam olarak aynı şekilde mandallanır ve onaylanırlar; yargıya
varmak için fazla ince bir pencere de duran bir uyarıyı hiç temizlemez.
budget_remaining, bütçe aşıldığında sıfırda durmak yerine
negatife geçer. Sıfır ile "hedefi yüz katıyla kaçırdık" farklı durumlardır ve
sayı hangisi olduğunu söyler.
Bir tane yapılandırmak
İzleyiciler komut satırında değil bir JSON dosyasında durur, çünkü bir eşik, bir pencere ve bir karşılaştırma tek bir seçeneğe sığmaz ve kod gibi gözden geçirilmelidir. Dosya bir Kubernetes ConfigMap olarak olduğu gibi bağlanır.
{
"monitor_interval_seconds": 60,
"monitors": [
{
"id": "support-error-rate",
"name": "Support agent error rate above 5%",
"project": "support-desk",
"watch": "error_rate",
"compare": "above",
"threshold": 0.05,
"window_seconds": 300,
"min_samples": 20,
"webhook": "https://hooks.example.com/mcpd"
},
{
"id": "relevance-regression",
"name": "Answer relevance fell below 0.8",
"project": "support-desk",
"watch": "score_mean",
"scorer_id": "answer_relevance",
"compare": "below",
"threshold": 0.8,
"window_seconds": 3600
}
]
} izleyiciler kurulu olarak başlatın
mcpd serve --config-file ./mcpd.json
Bilinmeyen bir anahtar yok sayılmak yerine başlangıcı düşürür.
threshold içindeki, sessizce hiçbir şeyi izlemeyen bir yazım
hatası mevcut en kötü sonuçtur, bu yüzden mcpd onu sesli olarak reddeder.
Bir izleyicinin tanımını değerlendirmeden saklamak için
"enabled": false ayarlayın. Kaç tanesinin kurulu olduğunu
mcpd config yazdırır.
Bir geçiş nereye gider
Her geçiş yapılı alanlar olarak loglanır: izleyici kimliği, proje, eşik ve ölçülen değer. Böylece bir log hattı onu bir cümleyi ayrıştırmadan yönlendirebilir. Zaten bir tane çalıştırıyorsanız bütün tümleştirme budur.
Bir izleyiciye webhook verin, mcpd geçişi ayrıca POST etsin. Gövde
bilerek geneldir: Slack, PagerDuty, Opsgenie ve her iş akışı aracı gelen bir
webhook kabul eder; payload'ı bunlardan birine göre biçimlendirmek, zamanla
eskiyen bir dizi sağlayıcı tümleştirmesini sürdürmek demek olurdu.
{
"monitor_id": "support-error-rate",
"name": "Support agent error rate above 5%",
"project": "support-desk",
"condition": "tripped",
"watch": "error_rate",
"threshold": 0.05,
"value": 0.5,
"samples": 40,
"detail": "error rate is 0.5000, threshold above 0.0500, over 40 run(s)",
"at": "2026-08-28T02:13:54.687391446Z"
} Başarısız bir teslim loglanır ve düşürülür. Yeniden denemek ya değerlendirme döngüsünü engellerdi ya da kalıcı bir giden kuyruk gerektirirdi; sessizce geride kalabilen bir uyarı yolu ise görünür biçimde bir iletiyi kaçırandan kötüdür.
Okumak ve onaylamak
GET /v1/api/monitors her izleyiciyi mandallanmış koşuluyla, son
okumasıyla ve ne zaman devreye girdiğiyle birlikte döndürür.
POST /v1/api/monitors/{id}/ack birini onaylar. Onaylamak,
koşul temizlenmiş gibi yapmadan geçişi susturur: izleyici hâlâ eşiği aşarken
onaylanmış kalır ve sayı toparlandığında kendiliğinden normale döner. Kimsenin
susturmayı geri almayı hatırlaması gerekmez.
İzleyici durumu bellekte tutulur ve her açılışta okumalardan yeniden kurulur. Kalıcı değildir, çünkü çoktan toparlanmış bir uyarıyı dirilten bir yeniden başlatma, yeniden değerlendiren bir yeniden başlatmadan daha kötü bir hatadır.
Sonraki
-
Bir
score_meanizleyicisinin baktığı puanlayıcılar: Regresyon testi. - Hiçbir izleyicinin kapsamadığı, mcpd'nin kendi sağlığı: İşletme.
- Her seçenek ve dosya ayarı: Yapılandırma.