Gün bir için üretim izlenebilirliği başlangıç paketi
Gün bir için üretim izlenebilirliği başlangıç paketi: eklemeniz gereken asgari loglar, metrikler ve izler ile “yavaş” raporları için basit bir triage akışı.

Yeni bir uygulama gerçek kullanıcılara ulaştığında ilk ne bozulur
Genelde tüm uygulama birden gözden kaybolmaz. Çoğunlukla bir adım aniden yoğunlaşır, testlerde sorunsuz olan bir sorgu üretimde takılır veya bir bağımlılık zaman aşımına girer. Gerçek kullanıcılar gerçek çeşitlilik getirir: daha yavaş telefonlar, dalgalanan ağlar, beklenmedik girişler ve uygun olmayan zamanlardaki trafik sıçramaları.
Birisi “yavaş” dediğinde çok farklı şeylerden bahsediyor olabilir. Sayfa çok uzun sürede yükleniyor olabilir, etkileşimler gecikiyor olabilir, bir API çağrısı zaman aşımına uğruyor olabilir, arka plan işler birikiyor olabilir veya üçüncü taraf bir servis her şeyi yavaşlatıyor olabilir.
Bu yüzden panolardan önce sinyallere ihtiyacınız var. İlk gün, her uç nokta için mükemmel grafiklere gerek yok. Zamanın nereye gittiğini hızlıca cevaplayacak kadar log, metrik ve iz yeterlidir.
Erken aşamada aşırı enstrümantasyonun da gerçek bir riski vardır. Çok fazla etkinlik gürültü yaratır, maliyet getirir ve uygulamayı yavaşlatabilir. Daha da kötüsü, ekipler telemetriye güvenmeyi bırakır çünkü dağınık ve tutarsız hisseder.
Gerçekçi bir gün-bir hedefi basit olmalı: bir “yavaş” raporu geldiğinde, 15 dakikadan kısa sürede yavaş adımı bulabilmelisiniz. Tıkanmanın istemci render'ında mı, API handler ve bağımlılıklarında mı, veritabanı/önbellekte mi yoksa arka plan işlerinde/dış serviste mi olduğunu söyleyebilmelisiniz.
Örnek: yeni bir ödeme akışı yavaş hissediliyor. Dağ gibi araçlar olmadan bile “zamanın %95'i ödeme sağlayıcı çağrılarında” veya “sepet sorgusu çok fazla satır tarıyor” diyebilmek istersiniz. Koder.ai gibi araçlarla hızlıca uygulama geliştiriyorsanız bu gün-bir temel daha da önemli olur; çünkü hızlı göndermek, hızlı debug edebildiğinizde işe yarar.
Loglar, metrikler ve izler (traces) basitçe ne söyler
İyi bir üretim izlenebilirliği başlangıç paketi aynı uygulamanın üç farklı “görünümünü” kullanır; çünkü her biri farklı bir soruya yanıt verir.
Loglar hikayedir. Bir istek, bir kullanıcı veya bir arka plan işi için ne olduğunu söyler. Bir log satırı “order 123 için ödeme başarısız” veya “DB zaman aşımı 2s sonra” gibi ifadeler içerebilir; ayrıca request_id, user_id ve hata mesajı gibi detaylar da bulunur. Garip tekil bir sorun rapor edildiğinde, loglar genellikle bunun olup olmadığını ve kimi etkilediğini doğrulamanın en hızlı yoludur.
Metrikler skor tablosudur. Trendleyip alarmla besleyebileceğiniz sayılardır: istek hızı, hata oranı, gecikme yüzdelikleri, CPU, kuyruk derinliği. Metrikler bir şeyin nadir mi yoksa yaygın mı olduğunu ve kötüleşip kötüleşmediğini gösterir. Eğer gecikme herkes için 10:05’te arttıysa, metrikler bunu gösterecektir.
İzler (traces) haritadır. Bir trace tek bir isteği sisteminizde takip eder (web -> API -> veritabanı -> üçüncü taraf). Zamanın hangi adımda harcandığını adım adım gösterir. Çünkü “yavaş” neredeyse hiç büyük bir gizem değildir; genelde tek bir yavaş halka vardır.
Bir olay sırasında pratik bir akış şöyle görünür:
- Etkiyi doğrulamak için metrikleri kullanın (kaç kullanıcı, ne kadar kötü, ne zaman başladı).\n- En yavaş adımı bulmak için izleri kullanın (müdahale edebileceğiniz tek bir darboğaz).\n- Darboğazı açıklamak için logları kullanın (hangi hatalar, girdiler veya kenar durumları).
Basit bir kural: birkaç dakika sonra tek bir darboğaz işaret edemiyorsanız, daha fazla alarm eklemeye değil, daha iyi izlere ve izleri loglara bağlayan tutarlı ID'lere ihtiyacınız var.
Gün-bir kuralları: kaosu önlemek
Çoğu “bulamıyoruz” vakası verinin eksikliğinden ziyade aynı şeyin hizmetler arasında farklı şekilde kaydedilmesinden kaynaklanır. Gün birde birkaç ortak kural logların, metriklerin ve izlerin hızlıca hizalanmasını sağlar.
Başlamak için her deploy edilebilir birim için tek bir servis adı seçin ve bunu sabit tutun. Eğer checkout-api panoların yarısında checkout oluyorsa geçmişi kaybedersiniz ve alarmlar bozulur. Ortam etiketleri için de aynı şeyi yapın: küçük bir set seçin (prod ve staging gibi) ve her yerde kullanın.
Sonra her isteği takip etmeyi kolaylaştırın. Kenarda (API gateway, web sunucusu veya ilk handler) bir request_id oluşturun ve bunu HTTP çağrıları, mesaj kuyrukları ve arka plan işlerinde iletin. Bir destek bileti “10:42’de yavaşladı” diyorsa, tek bir ID ile tam logları ve trace'i tahmin etmeden çekebilirsiniz.
Gün birde işe yarayan bir kural seti:
- Kimlik: servis adı, ortam, sürüm (veya build SHA)\n- Korrelasyon: hizmetler ve işler arasında iletilen
request_id\n- Temel etiketler: rota (veya handler), method, status code, ve çok kiracılı iseniz tenant/org ID\n- İzleme operasyonları: operasyon adlarını endpoint veya arka plan işleri olarak adlandırın (rastgele fonksiyon isimleri değil)\n- Tutarlılık: tek bir isimlendirme stili ve zaman birimi
Zaman birimlerinde erken anlaşın. API gecikmesi için milisaniye, uzun işler için saniye seçin ve ona bağlı kalın. Karışık birimler görsellerin iyi görünmesine rağmen yanlış hikaye anlatır.
Somut örnek: her API duration_ms, route, status ve request_id logluyorsa, “tenant 418 için checkout yavaş” gibi bir rapor hızlıca filtrelenir, tartışma değil.
Gün-bir için minimum loglama
Eğer tek bir şey yapacaksanız logları aranabilir yapın. Bu yapılandırılmış loglarla (genelde JSON) ve her hizmette aynı alanlarla başlar. Düz metin loglar yerelde yeterli olabilir ama gerçek trafik, retry'ler ve birden fazla instance olunca gürültüye dönüşür.
İyi bir kural: bir olay sırasında gerçekten kullanacağınız şeyleri loglayın. Çoğu ekip şu soruları yanıtlamalı: Bu hangi istekti? Bunu kim yaptı? Nerede başarısız oldu? Neye dokundu? Bir log satırı bu sorulardan birine yardımcı olmuyorsa büyük olasılıkla gereksizdir.
Gün bir için küçük ve tutarlı alan seti filtreleme ve servisler arası birleştirme yapmanızı sağlar:
- Zaman damgası, seviye ve servis kimliği (service name, version, environment)\n- İstek korrelasyonu (
request_id, varsatrace_id)\n- Kim/nerede (user_idveyasession_id, rota, method)\n- Sonuç (status code,duration_ms)\n- Dağıtım bağlamı (region/instance, release veya commit)
Bir hata olduğunda, onu bir kez bağlamla loglayın. Bir hata tipi (veya kod), kısa bir mesaj, sunucu hataları için stack trace ve ilişkili upstream bağımlılığı (ör. postgres, payment provider, cache) ekleyin. Aynı stack trace'i her retry'de tekrar etmekten kaçının; bunun yerine request_id ekleyin ki zinciri takip edebilin.
Örnek: bir kullanıcı ayarları kaydedemiyor diyor. Bir request_id araması PATCH /settings üzerinde 500 gösteriyor, sonra Postgres zaman aşımı ve duration_ms bulunuyor. Tam payloadlara gerek yoktu; rota, kullanıcı/oturum ve bağımlılık adı yeterliydi.
Gizlilik loglamanın bir parçasıdır, sonradan yapılacak bir iş değil. Parolaları, tokenları, auth header'ları, tam istek gövdelerini veya hassas PII'yı loglamayın. Kullanıcıyı tanımlamanız gerekiyorsa, e-posta veya telefon yerine sabit bir kimlik veya hash'lenmiş bir değer loglayın.
Koder.ai üzerinde uygulama inşa ediyorsanız (React, Go, Flutter), bu alanları her üretilen servise baştan dahil etmek yararlı olur; böylece ilk olay sırasında “loglamayı düzeltmek” zorunda kalmazsınız.
Çoğu üretim sorununu yakalayan minimum metrikler
İyi bir başlangıç paketi, sistemin şu an sağlıklı olup olmadığını ve eğer değilse nerede sorun olduğunu hızlıca cevaplayan küçük bir metrik setiyle başlar.
Altın sinyaller
Çoğu üretim sorunu dört “altın sinyal”den biri olarak görünür: latency (cevaplar yavaş), traffic (yük değişti), errors (başarısızlıklar) ve saturation (paylaşılan bir kaynak doldu). Uygulamanızın her ana parçası için bu dört sinyali görebiliyorsanız, çoğu olayı tahmin etmeden triage edebilirsiniz.
Gecikme yüzdelikler olmalı, ortalamalar değil. p50, p95 ve p99 takip edin ki küçük bir kullanıcı grubunun kötü deneyimini görsün. Trafik için istek/s veya worker'lar için işler/dk ile başlayın. Hatalar için 4xx ve 5xx'u ayırın: 4xx artışı genelde istemci davranışı veya doğrulamaya işaret eder; 5xx artışı uygulama veya bağımlılıklara işaret eder. Doyma, “bir şeyimizin tükeniyor” sinyalidir (CPU, bellek, DB bağlantıları, kuyruk backlog).
Bileşene göre metrik kontrol listesi
Çoğu uygulamayı kapsayan minimum set:
- HTTP/API: istekler/s, p50/p95/p99 gecikme, 4xx oranı, 5xx oranı\n- Veritabanı: sorgu gecikmesi (en az p95), bağlantı havuzu kullanımı (in-use vs max), zaman aşımı sayısı, yavaş sorgu sayısı\n- Worker/kuyruk: kuyruk derinliği, iş çalışma süresi p95, retry'ler, dead-letter sayısı (veya başarısız işler)\n- Kaynaklar: CPU %, bellek kullanımı, disk kullanımı (ve I/O gerekiyorsa), container restart'ları\n- Dağıtım sağlığı: aktif sürüm, deploy sonrası hata oranı, restart döngüleri
Somut örnek: kullanıcılar “yavaş” dediğinde API p95 yükselip trafik sabit kalıyorsa, doyma kontrolü için DB havuzu kullanımına bakın. Eğer DB havuzu maksimuma yakınsa ve zaman aşımı artıyorsa muhtemel darboğaz orasıdır. DB normal görünüyorsa ama kuyruk derinliği hızla artıyorsa arka plan işler kaynakları yiyor olabilir.
Koder.ai ile uygulama geliştiriyorsanız, bu checklist'i gün bir bitmişlik tanımınızın parçası olarak ele alın. Uygulama küçükken bu metrikleri eklemek, ilk gerçek olay sırasında eklemekten daha kolaydır.
“Yavaş”u debug edilebilir kılan minimum izleme
Bir kullanıcı “yavaş” dediğinde loglar genelde ne olduğunu söyler, metrikler ne sıklıkta olduğunu gösterir. İzler ise bu isteğin içinde zamanın nereye gittiğini söyler. Bu tek zaman çizgisi bulanık bir şikayeti net bir düzeltmeye çevirmek için kritiktir.
Sunucu tarafından başlayın. Gelen istekleri uygulamanın ilk handler'ında instrument edin ki her istek bir trace üretebilsin. İstemci tarafı izleme bekleyebilir.
Gün bir için iyi bir trace, genelde slowness yaratan parçalara karşılık gelen span'lara sahip olur:
- Tüm isteği kapsayan request handler spanı\n- Her sorgu veya işlem için veritabanı spanı\n- Önbellek get/set çağrıları için span\n- Her dış HTTP çağrısı için span\n- İstek bir iş kuyruğuna koyduysa arka plan işi spanı
İzleri aranabilir ve karşılaştırılabilir kılmak için birkaç anahtar özniteliği tutarlı yakalayın.
Gelen istek spanı için route (şablon formunda), HTTP methodu, status kodu ve gecikmeyi kaydedin. DB spanları için DB sistemi (PostgreSQL, MySQL), işlem tipi (select, update) ve tablo adı eklenebilir. Dış çağrılarda bağımlılık adı (payments, email, maps), hedef host ve durum bilgisi olsun.
Örnekleme gün birde önemlidir; aksi halde maliyet ve gürültü hızla artar. Basit bir baş-temelli kural kullanın: tüm hataların ve yavaş isteklerin %100'ünü trace edin (SDK destekliyorsa) ve normal trafiğin küçük bir yüzdesini örnekleyin (1–10%). Trafik düşükken daha yüksek başlayın, sonra azaltın.
İyi bir görünüm: bir trace'te hikayeyi baştan sona okuyabiliyor olmanız. Örnek: GET /checkout 2.4s sürdü; DB 120ms, cache 10ms, dış ödeme çağrısı 2.1s ve retry içeriyordu. Artık sorun bağımlılıkta olduğu için doğru yere odaklanabilirsiniz. Bu, üretim izlenebilirliği başlangıç paketinin özü.
“Yavaş” raporları için basit bir triage akışı
Birisi “yavaş” dediğinde en hızlı kazanç o belirsiz hissi birkaç somut soruya çevirmektir. Bu başlangıç paketi triage akışı uygulamanız çok yeni olsa bile işe yarar.
5 adımlı triage
Sorunu daraltıp sonra kanıtı sırayla takip edin. Doğrudan veritabanına atlamayın.
- Kapsamı doğrulayın. Bir kullanıcı mı, bir müşteri hesabı mı, bir bölge mi yoksa herkes mi etkilendi? Ayrıca sorun Wi‑Fi ve hücreselde, birden fazla tarayıcı/cihaza da oluyor mu?\n2. Önce ne değişti kontrol edin. İstek hacmi mi sıçradı, hata oranı mı arttı yoksa sadece gecikme mi yükseldi? Trafik artışı genelde kuyruğa yol açar; hata artışı bir bağımlılığın bozulduğunu gösterebilir.\n3. Yavaşlamayı rota veya işe ayırın. Etkilenen uç nokta(lar)ın p95 gecikmesini kontrol edin ve en kötü olanı bulun. Tek bir rota yavaşsa oraya odaklanın; tüm rotalar yavaşsa paylaşılan bağımlılıklara veya kapasiteye bakın.\n4. Yavaş yol için bir trace açın. Son 15 dakikadaki yavaş isteğin trace'ini alın ve span'ları süreye göre sıralayın. Amaç tek bir cümle: “Zamanın çoğu X'te.”\n5. Bağımlılıkları doğrulayın ve rollback kararını verin. DB doyumunu, yavaş sorguları, önbellek isabet oranını ve üçüncü taraf yanıt sürelerini kontrol edin. Eğer yavaşlama deploy veya konfig değişikliğinden hemen sonra başladıysa rollback genellikle güvenli ilk adımdır.
Stabilize ettikten sonra bir küçük iyileştirme yapın: ne olduğunu yazın ve eksik olan bir sinyali ekleyin (ör. bölge etiketi, daha açıklayıcı sorgu etiketi vb.).
SSS
Gerçek kullanıcılar yeni bir uygulamaya başladığında genelde ilk ne bozulur?
Kenardan (API gateway, web sunucusu veya ilk handler) başlayın.
- Bir
request_idekleyin ve tüm iç çağrılara iletin. - Her istek için
route,method,statusveduration_mskaydedin. - Her rota için p95 gecikme ve 5xx oranını izleyin.
Bunlar genellikle sizi hızlıca belirli bir uç noktaya ve zaman aralığına götürür.
Gerçekçi bir ilk gün gözlemlenebilirlik hedefi nedir?
Varsayılan hedef şu olsun: 15 dakikadan kısa sürede yavaş adımı tespit edebilmelisiniz.
İlk günde mükemmel panolara ihtiyacınız yok. Cevaplamanız gereken yeterli sinyal şu sorulara yanıt vermeli:
- İstemci tarafı mı, API tarafı mı, veritabanı/önbellek mi, arka plan işleri mi yoksa dış bir bağımlılık mı soruna neden oluyor?
- Hangi rota veya iş türü etkilendi?
- Bu deploy veya konfigürasyon değişikliğinden sonra mı başladı?
Logları, metrikleri ve izleri ne zaman/niçin kullanmalıyım?
Birlikte kullanın; her biri farklı soru cevaplar:
- Metrikler: “Bu yaygın mı ve kötüleşiyor mu?” (oranlar, yüzdelikler, doyma)
- İzler (traces): “Bu isteğin içinde zaman nereye harcanıyor?” (yavaş adım)
- Loglar: “Bu kullanıcı/istek için tam olarak ne oldu?” (hatalar, bağlam)
Olay sırasında: etkisini metriklerle doğrulayın, darboğazı izlerle bulun, açıklamayı loglarla yapın.
Kaçınılmaz kaosu önlemek için hangi isimlendirme ve etiketleme kuralları gerekir?
Küçük bir kurallar seti seçin ve her yerde uygulayın:
- Sabit
service_name,environment(ör.prod/staging) veversion - Kenarda üretilen ve çağrılar ile işlerde taşınan bir
request_id - Tutarlı etiketler:
route,method,status_code, ve çok kiracılıysatenant_id - Süreler için tek bir zaman birimi (ör.
duration_ms)
Amaç, bir filtreyle hizmetler arasında gezinmek, her seferinde yeniden başlamamak.
İlk günde minimum hangi loglamayı eklemeliyim?
Varsayılan olarak yapılandırılmış loglar (çoğunlukla JSON) ve her yerde aynı anahtarlarla başlayın.
Günlük olaylarda hemen işe yarayan minimum alanlar:
timestamp,level,service_name,environment,versionrequest_id(varsatrace_id)route,method,status_code,duration_msuser_idveyasession_id(sabit bir kimlik, e-posta yerine)
Hataları bir kez, bağlamla birlikte loglayın (hata türü/kodu + mesaj + bağımlılık adı). Tekrarlanan denemelerde aynı stack trace'i çoğaltmayın.
Çoğu üretim sorununu yakalayan minimum metrikler nelerdir?
Her ana bileşen için küçük bir metrik setiyle başlayın; temel soru: sistem şu an sağlıklı mı, değilse neresi acıyor?
Altın sinyaller (golden signals):
- Gecikme: p50/p95/p99 (ortalama değil)
- Trafik: istekler/saniye (veya işler/dakika)
- Hatalar: 4xx vs 5xx
- Doyma: paylaşılan kaynak sınırı (CPU, bellek, DB bağlantıları, kuyruk)
Bileşen bazlı minimum kontrol listesi:
- HTTP/API: istekler/s, p50/p95/p99 gecikme, 4xx oranı, 5xx oranı
- Veritabanı: sorgu gecikmesi (en az p95), bağlantı havuzu kullanımı, zaman aşımları, yavaş sorgu sayısı
- Worker/kuyruk: kuyruk derinliği, iş çalışma süresi p95, retry/ölü-mesaj sayısı
- Kaynaklar: CPU %, bellek kullanımı, disk kullanımı, container yeniden başlatmaları
- Dağıtım sağlığı: mevcut sürüm, deploy sonrası hata oranı, yeniden başlatma döngüleri
Örnek: p95 gecikme yükselip trafik sabit kalıyorsa DB havuzu doyuma ulaşmış olabilir. Koder.ai ile uygulama geliştiriyorsanız, bu checklist'i gün bir tanımı olarak kabul edin.
“Yavaş” şikayetini anlaşılır kılan minimum izleme (tracing) kurulumu nedir?
Kullanıcı “yavaş” dediğinde loglar ne olduğunu, metrikler ne sıklıkta olduğunu, izler (traces) ise isteğin içinde zamanın nereye gittiğini söyler. Bu tek zaman çizgisi bulanık bir şikayeti net bir düzeltmeye dönüştürür.
Sunucu tarafından başlayın. İsteğin uygulamaya ilk giriş noktası (ilk handler) instrumente edilirse her istek bir trace üretebilir. İstemci tarafı izleme bekleyebilir.
Gün bir için iyi bir trace şu span'ları içerir:
- Tüm isteği kapsayan handler spanı
- Her sorgu veya işlem için veritabanı spanı
- Önbellek çağrıları (get/set) için span
- Ara bağımlılık için HTTP çağrı spanı
- Arka plan işi enqueuelendiğinde onun spanı
Aranan ve karşılaştırılabilir izler için bazı anahtar öznitelikleri tutarlı yakalayın. Gelen istek spanında rota (şablon formunda, ör. /orders/:id), HTTP methodu, status kodu ve gecikmeyi kaydedin. DB spanlarında DB sistemi (PostgreSQL, MySQL), işlem tipi ve tablo adı (kolaysa) olsun. Dış çağrılarda bağımlılık adı (payments, email, vs.), hedef host ve durum olsun.
Örnek iyi uygulama: tüm hataların ve yavaş isteklerin %100 trace edilmesi (SDK destekliyorsa), normal trafikten ise küçük bir örnekleme (1–10%). Trafik azsa başlangıçta örneklemeyi yüksek tutup zamanla azaltın.
“İyi” bir örnek: bir trace'te hikayeyi baştan sona okuyabiliyorsunuz: GET /checkout 2.4s sürdü, DB 120ms, cache 10ms, ve dış ödeme çağrısı 2.1s sürdü — sorun bağımlılıktaydı.
Birisi “yavaş” dediğinde basit bir triage akışı nedir?
Belirsiz bir hissi birkaç somut soruya dönüştürmek en hızlı kazançtır. Bu triage akışı yeni bir uygulama olsa bile işe yarar.
5 adımlı triage:
- Kapsamı doğrulayın: bir kullanıcı mı, bir müşteri hesabı mı, bir bölge mi yoksa herkes mi etkilendi? Wi‑Fi ve hücreselde, farklı tarayıcı/cihazlarda oluyor mu?
- Önce ne değişti kontrol edin: istek hacmi mi arttı, hata oranı mı yükseldi, yoksa sadece gecikme mi arttı? Trafik sıçraması genelde kuyruğa neden olur; hata artışı dış bir bağımlılığa işaret eder.
- Yavaşlamayı rota/işe bölün: p95 gecikmeyi rota bazında kontrol edin ve en kötü rotayı bulun. Tek bir rotaysa ona odaklanın; hepsi yavaşsa paylaşılan bağımlılıklara bakın.
- Yavaş yol için bir trace açın: son 15 dakikadaki yavaş bir isteğin trace'ini alın ve span'ları süreye göre sıralayın. Amaç bir cümle: “Zamanın çoğu X'te.”
- Bağımlılıkları doğrulayın ve rollback kararını verin: DB doyumu, yavaş sorgular, önbellek isabet oranı ve üçüncü taraf yanıt sürelerini kontrol edin. Eğer sorun deploy sonrası başladıysa rollback genelde güvenli ilk adımdır.
İstikrar sağlandıktan sonra küçük bir iyileştirme yapın: ne olduğunu yazın ve bir eksik sinyal ekleyin (ör. bölge etiketi, sorgu adı alanı vb.).
Beş dakikada yapılabilecek hızlı kontroller nelerdir?
Hemen zaman kaybetmemeniz için üç açıklayıcı soru ile başlayın:
- Kim etkilendi (bir kullanıcı, bir müşteri segmenti, herkes)?
- Hangi eylem yavaş (sayfa yükleme, arama, checkout, giriş)?
- Ne zamandan beri başladı (dakikalar önce, bir deploy sonrası, bu sabah)?
Sonra genelde sizi doğru yöne götüren birkaç sayıya bakın; mükemmel gösterge panosu aramayın, sadece “normalin üzeri” sinyalleri arayın:
- Mevcut hata oranı
- Etkilenen uç noktanın p95 gecikmesi
- Doyma: CPU, bellek, DB bağlantıları veya kuyruk derinliği
Eğer p95 yükselmiş ama hatalar sabitse, son 15 dakikadaki yavaş rota için bir trace açın. Tek bir trace genelde zamanın DB, dış API veya kilit bekleme gibi nerede geçtiğini gösterir.
Sonra bir log araması yapın: kullanıcı raporu varsa request_id ile, yoksa aynı zaman aralığındaki en yaygın hata mesajını arayın.
Son olarak, hemen hafifletme (scale up, rollback, özellik bayrağını kapatma) mı yoksa daha derin inceleme mi gerekeceğine karar verin.
Tahmin yürütmeden yavaş bir checkout nasıl teşhis edilir?
Yayın sonrası birkaç saat içinde destekten “Checkout 20–30 saniye sürüyor” raporları gelirse ve kimse kendi makinelerinde üretemiyorsa, triage süreci işe yarar.
Adımlar:
- Metriklere gidin ve belirtileri doğrulayın: p95 gecikme yalnızca
POST /checkoutiçin artmışsa diğer rotalar normalse daraltma başladı demektir. - Yavaş
POST /checkoutiçin bir trace açın; su şelalesi (waterfall) suçu gösterir. İki yaygın sonuç:PaymentProvider.chargespanı 18s sürüyor (çoğunluk bekleme).DB: insert orderspanı yavaş, sorgu dönmeden önce uzun bekleme var.
- Trace'teki
request_id(veya trace_id) ile logları kontrol edin: “payment timeout reached” veya “context deadline exceeded” gibi uyarılar ve yeni sürümde eklenen retry'ler görüyorsanız sorun ödeme sağlayıcısıdır. DB yolunda ise kilit bekleme veya eşik üstü yavaş sorgu logları olabilir.
Üç sinyal hizalandığında çözüm açık olur:
- Sürümü geri alın.
- Ödeme çağrısına açık bir timeout ekleyin ve retry sayısını sınırlayın.
- Bağımlılık gecikmesi için p95 metriği ekleyin ve DB için p95 sorgu gecikmesini izleyin.
Metrikler rotayı gösterdi, izler yavaş adımı gösterdi, loglar ise hata modunu ve tam isteği doğruladı—tahmin yok.
Olaylar sırasında en çok zaman kaybettiren yaygın hatalar nelerdir?
Çoğu zaman kaybı önlenebilir boşluklardan gelir: veri var ama gürültülü, riskli ya da ihtiyacınız olan tek detay eksik. Paket kullanılabilir kalmazsa kriz anında işe yaramaz.
Yaygın tuzaklar:
- Çok fazla ham gövde loglamak (storage maliyeti, aramalar ağır, hassas veri sızıntısı riski).
- Ortalama ile yetinmek; p95 ve p99'u kontrol etmemek.
- Yüksek kardinaliteli etiketler (tam kullanıcı ID'leri, e-postalar) ile metrik serilerinin patlaması.
- Kontekst içermeyen izler (rota adları ve bağımlılık isimleri yoksa görüntü anlamsız olur).
- Sürüm işareti yoksa deploy'un tetikleyip tetiklemediğini bilemezsiniz.
- Sahibinin belli olmadığı alarmlar; kimse ne yapacağını bilmiyorsa gürültüye dönüşür.
Küçük örnek: checkout p95 800ms'den 4s'e çıktıysa iki soruyu dakikalar içinde yanıtlamak istersiniz: deploy sonrası mı başladı ve zaman uygulamanızda mı yoksa bağımlılıkta mı geçiyor? Yüzdelikler, sürüm etiketi ve izlerde rota ile bağımlılık isimleri varsa hızlıca yanıtlayabilirsiniz.