← Blog

Tek bir bulgunun yüzlerce kez tetiklenmesini nasıl durdurduk

Yeni bir normali asla kabul etmeyen bir dedektör, sonunda veritabanını değil kendini raporlar. Bunun kendi geliştirme PostgreSQL'imizde nasıl göründüğü, neyi değiştirdiğimiz ve sırada ne olduğu.

Sorun

Logstag Insights her veritabanının normalde nasıl davrandığını saat saat öğrenir ve bugün buna benzemediğinde bir bulgu üretir. Logstag sorunları, kimse bir kayıt açmadan önce böyle yakalar.

Kendi geliştirme ortamımızın arkasındaki PostgreSQL'de tek bir bulgu, "Sorgu hacmi +%93", bir haftadan uzun süre, yüzlerce kez tetiklendi. Bozuk bir şey yoktu. Trafik birkaç günde kabaca üç katına çıkmış ve o seviyede kalmıştı.

Insights her saati, yeni seviyeye henüz yetişememiş bir geçmişle karşılaştırıyordu; bu yüzden her saat olağandışı görünüyordu. Her seferinde haklıydı, ama yanlış şey hakkında: veritabanının yeni bir normali vardı ve dedektör bunu kabul etmiyordu.

İkinci vaka tam tersiydi. Çok sakin bir veritabanında "ortalama süre +%33", 1,21 ms'den 1,61 ms'ye bir değişim için Kritik olarak tetiklendi. Kâğıt üzerinde büyük bir değişiklik. Pratikte kimsenin fark etmeyeceği bir şey.

İki farklı hata

İlk bulgu ilk gününde haberdi, sonraki her gün gürültü. İkincisi hiç haber olmadı: neredeyse hiç dalgalanmayan bir veritabanı, her küçük değişikliği büyük bir sayıya çevirir. İkisi de yazdığımız teste göre doğruydu ve ikisi de kimsenin işine yaramadı.

Birinci düzeltme: bu hâlâ yeni mi?

Insights artık tek değil, iki soru soruyor. Bu, veritabanının uzun geçmişine göre olağandışı mı? Ve son birkaç güne göre de hâlâ olağandışı mı? Kısa bir sıçrama ikisinde de öne çıkar. Bir seviye değişikliği ilk gününde ikisinde de öne çıkar; böylece olduğu anda haberiniz olur. Yeni seviye oturduktan sonra son günlere göre artık öne çıkmaz: bulgu tetiklenmeyi bırakır ve kendiliğinden çözülür.

BiçimSonuç
Kısa bir sıçramaTetiklenir
Bir seviye değişikliği, ilk günündeTetiklenir: bu bir haber
Aynı seviye değişikliği, sonrasındaSessiz kalır, sonra çözülür
Yavaş bir artışNadiren tetiklenir: kayma bir olay değildir

Bir kural hiç değişmedi: eksik veri bir bulguyu asla susturmaz. Karar vermek için yeterli yakın geçmiş yoksa Insights uzun geçmişe döner ve tam eskisi gibi davranır. Verideki bir boşluk, gerçek bir sorunun gizli kalmasının sebebi asla olmamalı.

İkinci düzeltme: önemli olacak kadar büyük

Bir değişikliğin sayılması için artık pratikte bir fark yaratacak kadar büyük olması gerekiyor. Bu bir gürültü filtresi değil, neyin önemli olduğuna dair bir karar ve bilerek seçtik: kullanıcılarınızı etkileyen bir yavaşlama bu çıtayı aşar; çıtanın ayıkladığı ise kimsenin üzerine işlem yapmadığı bulgu sınıfıdır.

Neleri yapmadık

  • Tekrar sayısına sınır koymak. Gerçek, süren bir sorunu bir zamanlayıcıyla sessizliğe çevirirdi.
  • Bekleme süresi eklemek. Dedektörü hiç akıllandırmadan tekrarları gizlerdi.
  • İstatistiği baştan kurmak. Gerçekte gördüğümüz vakalarda aynı sonuç için her şeyi yeniden ayarlamak demekti.

Sırada ne var

Her biri okumaya değer, daha az bulgu, sürekli peşinden koşulan bir hedef. Manşetteki vakada çok daha az tekrar bekliyoruz ve Insights'ı gerçek iş yükleri üzerinde ayarlamaya devam ediyoruz; böylece size ulaşan şey gürültü değil, haber olur. Insights nasıl çalışır.