Mikroservis mimarilerinde Datadog veya New Relic gibi APM platformları milyon span başına $1.70 ücret alarak aylık $3.000 ila $15.000+ fatura çıkarır. Uygulama içinde yapılan klasik rastgele örnekleme (Head-Sampling) ise kritik üretim hatalarını ve gecikme patlamalarını kaçırmanıza yol açar. Açık kaynaklı OpenTelemetry Collector Contrib'in kuyruk tabanlı örnekleme (Tail-Based Sampling) işlemcisiyle; dağıtık izleri bellekte toplayın, HTTP 5xx hatalarını ve 500 ms'den yavaş tüm izleri %100 saklayarak rutin sağlıklı istekleri filtreleyin. Span veri hacmini %85-%92 düşürerek SaaS faturalarınızda dev tasarruf sağlayın.
Klasik Head-Sampling gibi körlemesine örneklemek yerine; istek tamamlandığında hata veya yavaşlık varsa %100 saklar.
# /etc/otelcol-contrib/config.yaml
# OpenTelemetry Collector Contrib: Tail-Based Sampling Yapılandırması
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
http:
endpoint: 0.0.0.0:4318
processors:
memory_limiter:
check_interval: 1s
limit_percentage: 80
spike_limit_percentage: 20
batch:
send_batch_size: 10000
timeout: 2s
# KUYRUK TABANLI ÖRNEKLEME: Tüm iz (trace) tamamlanana kadar bekler
tail_sampling:
decision_wait: 8s # Dağıtık mikroservislerin izinin tamamlanması için bekleme süresi
num_traces: 100000 # Bellek içi eşzamanlı iz tamponu
expected_new_traces_per_sec: 2000
policies:
# 1. Kural: Hata içeren (HTTP 5xx / Exception) tüm izleri %100 sakla!
- name: preserve-errors
type: status_code
status_code: { status_codes: [ERROR] }
# 2. Kural: 500 ms'den uzun süren tüm yavaş izleri %100 sakla!
- name: preserve-slow-traces
type: latency
latency: { threshold_ms: 500 }
# 3. Kural: Kritik ödeme/sipariş rotalarını %100 sakla!
- name: preserve-checkout
type: string_attribute
string_attribute:
key: http.route
values: ["/api/checkout", "/api/payment"]
# 4. Kural: Sağlıklı rutin HTTP 200 isteklerini %5'e düşür
- name: sample-routine-200
type: probabilistic
probabilistic: { sampling_percentage: 5.0 }
exporters:
otlp/datadog:
endpoint: https://api.datadoghq.com
headers:
"dd-api-key": "${DATADOG_API_KEY}"
otlp/tempo:
endpoint: tempo:4317
tls:
insecure: true
service:
pipelines:
traces:
receivers: [otlp]
processors: [memory_limiter, tail_sampling, batch]
exporters: [otlp/datadog, otlp/tempo]Mikroservis mimarisine geçen modern yazılım ekipleri, tek bir HTTP isteğinin arkasında veritabanı, Redis önbellek, iç gRPC çağrıları ve dış API sorgularıyla birlikte 5 ila 20 span ürettiğini görür. Saniyede 500 istek alan bir sistem ayda 7.7 milyardan fazla span üretir. Datadog veya Dynatrace'e bu veriyi ham olarak basmak ayda on binlerce dolar harcamak demektir.
İstek henüz uygulamanın kapısına geldiğinde (%10 veya %5 ihtimalle) zar atılır. İsteğin hata alıp almayacağı veya veritabanında kilitlenip 3 saniye sürüp sürmeyeceği henüz bilinmez. Sonuç: Üretimde kullanıcıların karşılaştığı kritik 500 hatalarının %90'ı çöpe gider ve hata ayıklanamaz.
İzler OpenTelemetry Collector'da birkaç saniye (ör. 8s) tamponlanır. İz tamamlandığında incelenir: Hata var mı? Evet ➔ %100 sakla. Süre >500ms mi? Evet ➔ %100 sakla.Sadece sorunsuz tamamlanan ve değeri düşük 200 OK sağlık kontrolü istekleri %5 seviyesine seyreltilir.
memory_limiter işlemcisi ani trafik dalgalanmalarında OOM çökmesini engeller.