Çok Bölgeli Sağlık Kontrolü Toplayıcısı İnşa Etmek

São Paulo'daki bir kullanıcı çalışmayan bir uç düğüme (edge node) denk gelir. Hata raporu oluşturmaz. Sekmeyi kapatır ve başka bir şey izlemeye başlar.

Normal bir çalışma süresi (uptime) monitörü bunu kaçırır. Çoğu monitör tek bir konumdan sorgulama yapar. O tek noktadan bakıldığında her şey yolunda (yeşil) görünür.

Gerçek kullanıcılar zaman aşımı (timeout) yaşarken, durum sayfamız %100 çalışma süresi gösteriyordu. Tek bir küresel sağlık kontrolü bize yalan söylüyordu.

İşte gerçeği söyleyen bir sistemi nasıl inşa ettiğimiz.

Sorun: Örnekleme Yanlılığı (Sampling Bias)

Eğer monitörünüz tek bir veri merkezindeyse, sadece tek bir gerçekliği görür. Singapur ve São Paulo uç noktalarınız bağlantıları koparıyor olsa bile durumu "yeşil" olarak raporlayabilirsiniz.

Video trafiği bunu daha da kötüleştirir. Yaygın bölgesel hatalar şunları içerir:

Tek bir "200 OK" yanıtı size neredeyse hiçbir şey söylemez.

Sağlık İçin Üç Kuralımız:

Durum kodlarının ötesine geçtik. Sağlığı üç metrik kullanarak tanımlıyoruz:

Çözüm: Çok Bölgeli Sorgulama (Multi-Region Probing)

Tek bir büyük monitör kullanmayı bıraktık. Bunun yerine, ucuz bölgesel VPS örneklerine küçük Go ikili dosyaları (binaries) dağıtıyoruz.

Her sorgulayıcı (prober):

Depolama için SQLite kullanıyoruz. Basittir ve iş yükümüzü sıfır ek yükle (overhead) yönetir. Önceden toplanmış veriler yerine ham örnekleri saklıyoruz. Bu, geçmişi yeniden puanlamamıza veya daha sonra belirli hataları ayıklamamıza (debug) olanak tanır.

Sır: Çoğunluk (Quorum)

Ağlar gürültülüdür. Tek bir düşen paket bir kesinti (outage) değildir.

Yanlış alarmları önlemek için bir çoğunluk (quorum) sistemi kullanıyoruz. Bir uç noktayı yalnızca birden fazla bölge hemfikir olduğunda "çevrimdışı" (down) olarak bildiriyoruz. Eğer bir bölge bir hata görüyor ancak diğerleri görmüyorsa, ekibe sayfa (page) göndermiyoruz. Bu tasarım tercihi, yanlış alarmlarımızın %90'ını ortadan kaldırdı.

Temel Dersler:

Ağır bir gözlemlenebilirlik platformuna ihtiyacınız yok. Yerel problara, ham veriye ve gürültü karşısında paniklemeyi reddeden bir kurala ihtiyacınız var.

Kaynak: https://dev.to/ahmet_gedik778845/building-a-multi-region-health-check-aggregator-for-video-cdn-edges-2865