Sağlık Kontrolü Uç Noktası: Uygulamanız Gerçekten Çalışıyor mu?

Basit HTTP kontrolünün sınırı, neyin kontrol edileceği, canlılık ve hazırlık ayrımı, ara durum, güvenlik ve kontrolün maliyeti. Sağlık Kontrolü Uç Noktası…

Sağlık Kontrolü Uç Noktası: Uygulamanız Gerçekten Çalışıyor mu?
İçindekiler
  1. Ana Sayfayı Sorgulamak Neden Yetmez?
  2. Neyi Kontrol Etmeli?
  3. İki Seviyeli Yaklaşım
  4. Yanıt Biçimi
  5. Ara Durum: Bozulmuş
  6. Güvenlik Boyutu
  7. Kontrolün Kendi Maliyeti
  8. Sonuç
  9. Sıkça Sorulan Sorular (SSS)
  10. Ana sayfayı sorgulamak neden yeterli değil?
  11. Neden iki farklı uç nokta gerekli?
  12. Dış servisleri de kontrol etmeli miyim?
  13. Sağlık uç noktası güvenlik riski mi?

Sağlık Kontrolü Uç Noktası: Uygulamanız Gerçekten Çalışıyor mu?

İzleme sisteminiz ana sayfayı sorguluyor ve "200 OK" alıyor. Yeşil ışık yanıyor. Ama veritabanı bağlantısı kopmuş, kuyruk durmuş ve kullanıcılar hata alıyor.

Bu yazı, gerçek anlamlı sağlık kontrolü kurmayı ele alıyor.

Ana Sayfayı Sorgulamak Neden Yetmez?

Basit bir HTTP kontrolünün gördüğü ve göremediği şeyler:

Görür Görmez
Web sunucusu ayakta mı Veritabanı erişilebilir mi
Ağ erişilebilir mi Önbellek servisi çalışıyor mu
Sayfa dönüyor mu Kuyruk işleniyor mu
Sertifika geçerli mi Disk dolmuş mu

Asıl sorun şudur: önbellekten sunulan bir ana sayfa, veritabanı tamamen çökmüş olsa bile başarıyla dönebilir.

Yani izlemeniz yeşil görünürken uygulamanız fiilen çalışmıyor olabilir. Bu, en tehlikeli izleme yanılgısıdır.

Neyi Kontrol Etmeli?

Anlamlı bir sağlık kontrolü, uygulamanın kritik bağımlılıklarını sınar:

  1. Veritabanı bağlantısı. Basit bir sorgu çalıştırın.
  2. Önbellek servisi. Yaz ve oku.
  3. Disk alanı. Yazılabilir mi, yer var mı?
  4. Kuyruk durumu. Birikme var mı?
  5. Kritik dış servisler. Ulaşılabilir mi?

Birinci maddede dikkat: bağlantı kurabilmek yeterli değildir, gerçekten bir sorgu çalıştırılmalıdır — çünkü bağlantı açık olup veritabanı yanıt veremez durumda olabilir.

Beşinci madde ise dikkatli ele alınmalıdır. Dış bir servisin çökmesi sizin sunucunuzu sağlıksız göstermemeli, aksi hâlde yük dengeleyici tüm sunucularınızı havuzdan çıkarabilir.

İki Seviyeli Yaklaşım

En sağlam yapı, iki farklı uç nokta tanımlamaktır:

  • Canlılık kontrolü: Süreç ayakta mı? Hafif ve hızlı.
  • Hazırlık kontrolü: İstek alabilecek durumda mı? Bağımlılıkları sınar.

Ayrım işlevseldir: canlılık başarısız olursa süreç yeniden başlatılır, hazırlık başarısız olursa yalnızca trafik gönderilmez.

Bu ayrım olmadan tehlikeli bir döngü oluşabilir. Veritabanı geçici olarak yanıt vermediğinde tek bir kontrol kullanılıyorsa, tüm uygulama sunucuları yeniden başlatılır — oysa sorun onlarda değildir.

Yanıt Biçimi

Sağlık kontrolü yalnızca durum kodu değil, ayrıntı da dönmelidir:

  1. Genel durum — sağlıklı, bozulmuş veya sağlıksız
  2. Her bağımlılığın ayrı durumu
  3. Yanıt süreleri
  4. Uygulama sürümü
  5. Çalışma süresi

İkinci madde teşhis süresini kısaltır: hangi bağımlılığın bozuk olduğunu doğrudan söyleyen bir yanıt, sorunu aramaya harcanan dakikaları ortadan kaldırır.

Dördüncü madde ise dağıtım sorunlarını yakalar. Sunucuların farklı sürümler bildirdiğini görmek, bir yayının eksik tamamlandığını anında gösterir.

Ara Durum: Bozulmuş

İkili bir sağlık kararı çoğu zaman yetersizdir:

Durum Örnek
Sağlıklı Tüm bağımlılıklar çalışıyor
Bozulmuş Önbellek kapalı ama site çalışıyor
Sağlıksız Veritabanı erişilemez

Orta durum önemlidir: önbellek servisi çökmüş bir uygulama yavaşlar ama çalışmaya devam eder — bu sunucuyu havuzdan çıkarmak durumu iyileştirmez, kötüleştirir.

Bu ayrım, uyarı politikanızı da belirler. Bozulmuş durum bir bildirim üretmeli ama gece yarısı kimseyi uyandırmamalıdır.

Güvenlik Boyutu

Sağlık uç noktası bilgi sızdırabilir:

  • Altyapı bileşenlerini açık eder. Hangi veritabanı, hangi servisler?
  • Sürüm bilgisi verir. Bilinen açıklar hedeflenebilir.
  • İç ağ adreslerini gösterebilir.
  • Hata mesajları ayrıntı sızdırabilir.

Çözüm ikili bir yapıdır: herkese açık uç nokta yalnızca sağlıklı ya da sağlıksız der, ayrıntılı sürüm kimlik doğrulaması gerektirir.

Ya da ayrıntılı uç nokta yalnızca iç ağdan erişilebilir olur. Yük dengeleyici ve izleme sistemi iç ağdan sorgular, dışarıya kapalıdır.

Kontrolün Kendi Maliyeti

Sağlık kontrolü sık çalıştırılır ve hafif olmalıdır:

  1. Ağır sorgular çalıştırmayın. Basit bir bağlantı testi yeterli.
  2. Sonucu kısa süre önbelleğe alın.
  3. Zaman aşımı tanımlayın. Kontrol kendisi takılmasın.
  4. Günlüğe yazmayın. Kayıtları şişirir.

Dördüncü madde pratik bir sorunu önler: saniyede bir sorgulanan bir uç nokta, günde on binlerce satır günlük üretir ve gerçek istekleri görünmez kılar.

Üçüncü madde ise kritik bir tuzağı kapatır. Zaman aşımı tanımlanmamış bir sağlık kontrolü, veritabanı yanıt vermediğinde askıda kalır ve izleme sistemi ne başarı ne hata alır.

Bu tür uç noktaları kendi yapılandırmanızda tanımlayabileceğiniz VDS kiralama yapılarında, iç ağ erişimi ve dış erişim ayrımını da doğrudan kurabilirsiniz.

Sonuç

Ana sayfayı sorgulayan bir izleme yanıltıcıdır: önbellekten sunulan bir sayfa, veritabanı tamamen çökmüş olsa bile başarıyla döner. Anlamlı bir kontrol kritik bağımlılıkları sınamalı ve iki seviyeye ayrılmalıdır — canlılık başarısız olursa süreç yeniden başlar, hazırlık başarısız olursa yalnızca trafik kesilir. Ara bir "bozulmuş" durumu tanımlayın: önbelleği çökmüş bir sunucuyu havuzdan çıkarmak durumu kötüleştirir. Ve ayrıntılı yanıtı dışarıya açmayın.

Sıkça Sorulan Sorular (SSS)

Ana sayfayı sorgulamak neden yeterli değil?

Çünkü önbellekten sunulan bir sayfa, veritabanı çökmüş olsa bile başarıyla döner. İzlemeniz yeşil görünürken uygulamanız fiilen çalışmıyor olabilir. Anlamlı bir kontrol, gerçek bir sorgu çalıştırarak bağımlılıkları sınamalıdır.

Neden iki farklı uç nokta gerekli?

Çünkü sonuçları farklıdır. Canlılık kontrolü başarısız olursa süreç yeniden başlatılır; hazırlık kontrolü başarısız olursa yalnızca trafik gönderilmez. Tek kontrol kullanırsanız, veritabanı geçici olarak yanıt vermediğinde tüm uygulama sunucuları gereksiz yere yeniden başlatılır.

Dış servisleri de kontrol etmeli miyim?

Dikkatli olun. Bir dış servisin çökmesi sizin sunucunuzu sağlıksız göstermemelidir — aksi hâlde yük dengeleyici tüm sunucularınızı havuzdan çıkarır. Dış servis durumunu bildirin ama genel sağlık kararını buna bağlamayın.

Sağlık uç noktası güvenlik riski mi?

Ayrıntılı yanıt dönüyorsa evet — altyapı bileşenlerinizi, sürümlerinizi ve iç adresleri açık eder. Herkese açık uç nokta yalnızca sağlıklı/sağlıksız demeli; ayrıntılı sürüm ya kimlik doğrulaması istemeli ya da yalnızca iç ağdan erişilebilir olmalıdır.