Health Check "up" ama kullanıcılar hata alıyor; neden?
Kısa cevap
Health Check yalnızca kendi profilinde tanımlı adresi, portu, yolu ve beklentiyi sınar; kullanıcı isteği ise başka bir yoldan, başka bir Host ile ve TR7'nin aksiyon, limit ve güvenlik katmanlarından geçerek gider. Bu yüzden önce hatayı kimin ürettiği ayrılır. HTTP Logs'ta Backend Service değeri TR7 ise istek hiçbir Kurum Servisine ulaşmamıştır (kullanılabilir sunucu yok, kuyruk, WAF ya da Bot/DDoS engeli); bir Kurum Servisi adı görünüyorsa kesin ayrım Debug Mode Logs'taki Termination State ile yapılır: Normal ise hatayı Kurum Servisi üretmiştir ve health check uygulamanın asıl işlevini sınamıyordur; Server timeout ya da TR7 intercepted ise 504 ya da 502'yi TR7 üretmiştir.
Olası Nedenler
| Neden | Nasıl anlaşılır | Bakılacak sayfa |
|---|---|---|
| Yüzeysel health check (yalnızca port ya da her durumda 200 dönen /health) | Backend service = sunucu adı, durum 5xx, Termination state Normal; aynı istek sunucuya doğrudan gönderilince de hata | Sunucu arızalı ama TR7 hâlâ trafik gönderiyor; neden? · TCP port kontrolü ile HTTP kontrolü arasındaki fark nedir; hangisini seçmeliyim? |
| Health check başka bir Host ya da sanal siteyi sınıyor | Denetim IP adresiyle, kullanıcı alan adıyla gidiyor | Health Check'te Host / SNI belirtebilir miyim (Virtual domain)? |
| Tek sunucu hatalı | Live Stats'ta yalnızca o sunucunun 5xx/s değeri yüksek | Sunucu düzeltilir ya da bakıma alınır (Maintenance Mode ne yapar?) |
| Sunucu hiç denetlenmiyor | Live Stats'ta durum No Check | Health Check ne işe yarar; atamazsam ne olur? |
| Kullanılabilir sunucu yok ya da kuyruk süresi doldu | 503, Backend service = TR7; Termination state While queued · Server timeout | Kullanıcılar "503 Service Unavailable" / "No Available Server" görüyor; ne yapmalıyım? |
| Server Timeout doldu | 504, Backend service = sunucu adı; Termination state During response headers · Server timeout | 504 Gateway Timeout alıyorum; hangi timeout'u kontrol etmeliyim? |
| Geçersiz ya da çok büyük başlıklı yanıt | 502, Backend service = sunucu adı; Termination state During response headers · TR7 intercepted | 502 Bad Gateway alıyorum; olası nedenler nelerdir? |
| Güvenlik katmanı engeli | 403 ya da 418 (ya da kuralda seçilen kod); Backend service = TR7, Debug Mode Logs'ta Security Action dolu | Meşru kullanıcılar engelleniyor; hangi kuralın engellediğini nasıl bulurum? |
| İstek başka bir koşullu bloğa gidiyor | Belirli yollarda hata; o bloğun sunucuları down ya da blok boş | Hiçbir koşul eşleşmezse trafik nereye gider? |
| Sunucular bakımda | Live Stats'ta durum Maintenance; health check sürer ama sunucu trafik almaz | Maintenance Mode ne yapar? |
| Karar gecikmesi | Hata arızadan sonraki birkaç saniyede görülüyor | Health Check sonucu trafiğe kaç saniyede yansır? |
Kesin kural: HTTP Logs'taki Backend Service değeri, istek için bir Kurum Servisi seçilmediyse TR7, yanıt önbellekten verildiyse Cache, seçildiyse o Kurum Servisinin adıdır. Bu yüzden bir sunucu adı görmek hatayı sunucunun ürettiğini tek başına göstermez; TR7, sunucuya bağlandıktan sonra yanıt gelmediğinde 504, geçersiz yanıt geldiğinde 502 üretir ve kayıtta yine o sunucunun adı yazılır.
Nereden İzlenir?
| Ekran | Yol | Ne gösterir |
|---|---|---|
| HTTP Logs | Load Balancer vServices → vService → Logs & Tracking | Hatalı isteklerin durum kodu, Backend service ve Response source değeri |
| Debug Mode Logs | Aynı sekmede (vService Debug Mode'dayken) | Termination state, Retries, Security Action |
| Live Stats → Backend Services | vService → Live Stats | Sunucu başına durum (Healthy, Unhealthy, Maintenance, No check) ve 4xx/s, 5xx/s |
| Backend Response Code Distribution | vService → Dashboard | Durum kodu sınıflarının Kurum Servislerine dağılımı |
Nasıl Teşhis Edilir?
- Kullanıcının gördüğü tam durum kodu alınır.
- Left Monitor Panel → Load Balancer vServices → vService → Logs & Tracking → HTTP Logs açılır; Filter panelinde Status Class kartından
4xxya da5xxseçilir ve Backend Service kartına bakılır (Filter). Kayıt yoksa vService'te Log Profile açık değildir. - Değer TR7 ise istek hiçbir Kurum Servisine ulaşmamıştır: 503 ise Kullanıcılar "503 Service Unavailable" / "No Available Server" görüyor; ne yapmalıyım?, 403 ya da 418 ise Meşru kullanıcılar engelleniyor; hangi kuralın engellediğini nasıl bulurum? izlenir.
- Değer bir sunucu adıysa HTTP vService'in Status alanı Debug Mode yapılır, hata yeniden üretilir ve Debug Mode Logs ekranında Termination state okunur (Bir isteğin neden başarısız olduğunu loglardan nasıl anlarım (termination state)?). Değer
Normalise yanıtı sunucu üretmiştir;During response headers · Server timeout504'ü,During response headers · TR7 intercepted502'yi TR7'nin ürettiğini gösterir. - Yanıtı sunucu ürettiyse Live Stats'taki 5xx/s kolonundan ya da Dashboard'daki Backend Response Code Distribution panelinden hatanın tek sunucuda mı, hepsine yayılmış mı olduğu ayrılır. Aynı istek sunucuya doğrudan gönderilir ve health check profili (Check Type, Path + Query, Virtual Domain (Host/SNI), Expected Status Codes, Content Check Mode) gerçek kullanıcı isteğiyle karşılaştırılır.
- Yeşil görünen sunucunun gerçekten denetlendiği Live Stats'taki durumdan (No Check, Maintenance) kontrol edilir.
- İnceleme bitince Status yeniden Enabled yapılır; Debug Mode kendiliğinden kapanmaz.
Sık Karıştırılan Noktalar
- "Port açıksa uygulama çalışıyordur." TCP port denetimi yalnızca bağlantının kurulduğunu sınar; uygulama hatalarını yakalamaz. Uygulamanın asıl işlevini sınayan HTTP ya da HTTPS denetimi kullanılır (Uygulamamda health check için nasıl bir /health endpoint'i tasarlamalıyım?).
- "Backend service sütununda sunucu adı varsa hatayı sunucu üretmiştir." 502 ve 504'ü TR7 üretir ama kayıtta yine sunucunun adı yazılır; ayrım Termination state ile yapılır.
- "Backend service = TR7 olan 503 sunucu arızasıdır." Bu durumda istek hiçbir sunucuya gitmemiştir: kullanılabilir sunucu yoktur, istek kuyrukta beklemiş ya da yönlendirme bir sunucu bulamamıştır.
- "Bakımdaki sunucu yeşil görünüyorsa trafik alıyordur." Maintenance Mode'da health check sürer ama sunucu trafik almaz.
- "Ekrandaki hata sayfası uygulamanındır." vService'te Show Content for Backend Service Errors tanımlıysa sunucunun hataları da özel sayfayla gösterilir; kaynak loglardan belirlenir.
Dokümantasyonda nasıl yapılır
