Observability nedir? Log, metric ve trace arasındaki fark nedir ve her biri ne için kullanılır?
Cevap
Observability, bir sistemin dışarıya verdiği sinyallerden içerideki durumunu anlayabilme yeteneğidir. Monitoring "bilinen sorunları" izlerken, observability "daha önce hiç görmediğiniz" bir sorunun nedenini bulmanızı sağlar. Üç temel sinyal vardır:
| Sinyal | Nedir | Sorusu | Araç örnekleri |
|---|---|---|---|
| Log | Zaman damgalı olay kayıtları | Tam olarak ne oldu? | Loki, Elasticsearch/OpenSearch, CloudWatch |
| Metric | Zaman içinde toplanmış sayısal değerler | Ne kadar, ne sıklıkla, trend ne? | Prometheus, Grafana, Datadog |
| Trace | Bir isteğin servisler arasındaki yolculuğu (span'lar) | Zaman nerede harcandı, hangi servis yavaş? | Jaeger, Tempo, Zipkin |
Log'lar: structured logging
Düz metin yerine JSON loglayın; böylece alanlara göre filtrelenebilir.
{"ts":"2026-10-22T10:15:02Z","level":"error","service":"order-api",
"trace_id":"4bf92f3577b34da6a3ce929d0e0e4736","user_id":"u_123",
"msg":"payment failed","error":"timeout after 2000ms"}- Her logda
trace_id/ correlation id olsun; böylece log ile trace birbirine bağlanır. - Parola, token, kart numarası gibi hassas verileri asla loglamayın.
Metric'ler: RED ve USE
- RED (servisler için): Rate (istek/sn), Errors (hata oranı), Duration (gecikme dağılımı, p50/p95/p99).
- USE (kaynaklar için): Utilization, Saturation, Errors.
- Ortalama gecikme yanıltıcıdır; percentile (histogram) kullanın.
- Metric label'larına
user_idgibi yüksek kardinaliteli değer koymayın; Prometheus'u şişirir.
Pratik akış
Alarm metric'ten gelir (hata oranı arttı) → trace ile hangi servis ve hangi çağrının yavaş olduğunu bulursunuz → ilgili log'larda hatanın detayını okursunuz.
Bugün standart yaklaşım, üç sinyali de OpenTelemetry ile üretip istediğiniz backend'e göndermektir.
İlgili Docker & DevOps soruları
- Distributed tracing nasıl çalışır? Trace context servisler arasında nasıl taşınır ve OpenTelemetry'nin rolü nedir?
- Rolling update, blue-green ve canary deployment stratejileri arasındaki farklar nelerdir?
- Ortam değişkenleri ve secret'lar (şifre, API anahtarı) güvenli şekilde nasıl yönetilir?
- CI/CD nedir? Tipik bir backend CI/CD pipeline'ının aşamaları nelerdir?
- İyi bir Dockerfile nasıl yazılır? Multi-stage build ne işe yarar?
- Docker Compose ne işe yarar? Basit bir örnekle açıklayın.
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.