Gözlemlenebilirlik и iz örneklemesi
1) Neden gözlemlenebilirlik
Gözlemlenebilirlik (O11y) üç soruya cevap verir: Ne oluyor, neden, nasıl düzeltilir. 4 sinyale dayanır:- Metrikler (agregalar, hızlı tepki verir);
- Günlükler (ayrıntılar ve adli tıp);
- İzler (çapraz kesme neden-sonuç ilişkileri);
- Profiller (prod modunda CPU/yığın/kilit çekişmesi).
Anahtar: sinyaller + telemetri ekonomisi (örnekleme, tutma, sıkıştırma) arasındaki korelasyon.
2) Sinyal haritası ve ilkeleri
2. 1 KIRMIZI/KULLANIM
KIRMIZI (API için): Oran (RPS), Hatalar (%5xx/4xx önemli), Süre (p50/p95/p99).
KULLANIM (kaynaklar için): Kullanım, Doygunluk, Hatalar (NIC, CPU, disk, kuyruklar).
2. 2 Ürün Değişmezleri
Bir SLO tanımlayın (örn. "p95 gecikme'/v1/ödemeler '≤ 300ms, hatalı bütçe 0. 30 gün içinde %5"). Uyarılar yalnızca SLO ihlal edildiğinde veya yakıldığında "çığlık atmalıdır".
2. 3 Bağlam
Bu/iş niteliklerini güvenli bir şekilde aktarmak için W3C Trace Context ('traceparent', 'tracestate') ve bagajı uygulayın (örn. 'tenant', 'region', PII yok).
3) Gözlenebilirlik mimarisi
SDK/otomatik enstrümantasyon: Hizmetlerde OpenTelemetry (OTel) (HTTP/gRPC/DB/istemciler).
Bir otobüs olarak OTel Toplayıcı: resepsiyon, zenginleştirme, örnekleme, ihracat (Prometheus, Tempo/Jaeger, Loki/ELK, ClickHouse).
- Metrikler: Prometheus/Mimir/VictoriaMetrics;
- Yollar: Tempo/Jaeger/Zipkin;
- Günlükleri: Loki/ELK/Vektör - S3 + deshevoye depolama;
- Profiller: Piroskop/Parca.
- Korelasyon: hizmet grafikleri, örnekler, p99 grafiğinden belirli bir ize geçiş.
4) İzleme Örneklemesi: Stratejiler
4. 1 Kafa tabanlı örnekleme
Basit ve ucuz uygulama (SDK/giriş).
Eksileri: Nadir hataları/yavaş sorguları kaçırabilir.
Ne zaman: Yüksek RPS, sıkı bütçeler, öngörülebilir bir pay gereklidir (örneğin, %1-5).
4. 2 Kuyruk tabanlı örnekleme
Karar, aralığın bitiminden sonra Collector'da verilir.
Anormalliklerin seçilmesi garanti edilebilir: hatalar, p99, belirli yönlendirmeler/kiracılar.
Eksileri: tamponlama, daha sert ve daha pahalı.
Ne zaman: "anlamlı" yollar ılımlı maliyetle gereklidir.
4. 3 Kombine model
Küresel kafa %1-5, artı kuyruk kuralları:'her zaman hataları/yavaş açıklıkları kaydedin "," kanarya trafiğinin %50'sini örnekleyin ",'bir olaydaki tüm ödeme yollarının izlerini kaydedin".
5) Dinamik örnekleme ve telemetri bütçesi
Bütçeye duyarlı: tutma hacmi ≤ N trails/min; Aşılırsa, eşikleri yükseltin (örneğin, yalnızca p99'u seçin. 5 +, yalnızca hata).
Rotaya/kiracıya göre kurallar: önemli uç noktalar/kiracılar - daha büyük bir pay ile.
Uyarlanabilir pencereler: patlamalar - geçici olarak hata/yavaş hızı artırır.
Kardinalite azaltma: normalize kullanıcı ajan, IP/ASN, squash yığın izleri, maske sırları.
6) Yapılandırmalar (referanslar)
6. 1 OpenTelemetri Toplayıcı - kuyruk örnekleme (yaml-fragment)
yaml receivers:
otlp: { protocols: { http: {}, grpc: {} } }
processors:
batch: { send_batch_size: 8192, timeout: 2s }
tail_sampling:
decision_wait: 5s num_traces: 100000 expected_new_traces_per_sec: 5000 policies:
- name: always-error type: status_code status_code: { status_codes: [ERROR] }
- name: slow-endpoints type: latency latency: { threshold_ms: 300 } # p95 цель
- name: important-routes type: string_attribute string_attribute: { key: http. target, values: ["/v1/payments", "/v1/payouts"] }
- name: tenant-eu1 type: string_attribute string_attribute: { key: tenant, values: ["eu-1"] }
- name: probabilistic-default type: probabilistic probabilistic: { sampling_percentage: 5. 0 }
exporters:
otlphttp/tempo: { endpoint: http://tempo:4318 }
prometheus: { endpoint: "0. 0. 0. 0:9464" }
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch, tail_sampling]
exporters: [otlphttp/tempo]
6. 2 Prometheus - örnekler (fragman)
Uygulamada, histogramları kaydederken, 'trace _ id'ile örnekler ekleyin. Grafana'da, "iğneler" üzerine tıklamalar bir ize yol açar.
yaml scrape_configs:
- job_name: api scrape_interval: 10s honor_labels: true static_configs: [{ targets: ["api:9100"] }]
exemplar_limit: 10
6. 3 Loki - günlüklerin maliyetini azaltmak
Etiketler yalnızca kararlıdır ('service', 'env', 'region', 'route _ class').
Yüksek kardinalite (request_id, user_id) - yükte, ancak redaksiyonla.
Örnek "başarılı" InfoLogs, herhangi bir hata/uyarı kaydedin.
6. 4 Jaeger/Tempo - tutma ve indeks
Ham izleri 3-7 gün, agregaları/simetrileri daha uzun süre saklayın.
Ucuz depolamada parke/blokları etkinleştirin (S3 uyumlu), indeksler kompakttır.
7) İzleme simülasyonu
7. 1 Adlandırma ve Nitelikler
hizmet. İsim ',' hizmeti. Sürüm ',' dağıtım. Çevre '.
'http. Yöntem ',' http. Rota ',' http. Hedef ',' http. status_code', 'net. akran. İsim '.
PII olmadan iş özellikleri: 'kiracı', 'bölge', 'ödeme _ sağlayıcı', 'oyun _ id'.
7. 2 Olaylar ve bağlantılar
Yayılma olayları: önemli noktalar (DB işleminin başlangıcı, retray, devre açık, önbellek özledim).
Bağlantılar: zapros - vebkhuk/sobytiye iletişim; EDA ve giden kutusu/gelen kutusu için kullanışlıdır.
7. 3 Örnek
Gecikme/boyut histogramlarına 'trace _ id' içeren örnekler ekleyin: Tek bir tıklamayla trace metric için gezinme.
8) Metrikler: ne ve nasıl
8. 1 Teknik
Rota/kiracı/sağlayıcıya göre KIRMIZI (PSP, KYC).
Пулы: 'db _ connections _ in _ use', 'http _ client _ in _ flight', 'queue _ depth'.
Stabilizasyon: yeniden denemeler, zaman aşımları, devre açık/yarı açık, hız limiti isabetleri.
Go/Java/Python çalışma zamanı: GC duraklatır, yığın, güvenli noktalar, GIL gecikmeleri.
8. 2 İş Metrikleri
Kayıt/oturum açma/depozito/sonuç, dönüşüm, başarısızlık 3DS/KYC, ters ibraz oranı.
Önemli özellikler: cüzdan zamanı, başarı oranı ödemesi.
8. 3 Kardinalite ve depolama
Açık kovalarla histogramlar (örn. '[50 100 200 300 500 1000 2000] ms').
Yüksek kardinaliteye sahip işaretlerden kaçının (ham user_id, request_id) - bunları günlüklere/parkurlara götürün.
9) Günlükler: standartlar ve korelasyon
Biçim: JSON + gerekli anahtarlar ('timestamp', 'level', 'message', 'trace _ id', 'span _ id', 'service', 'env').
Düzenleme: maske PAN, belirteçler, PII.
Örnekleme: 'Hata/uyarı' için %100, 'gürültülü' yollarda 'bilgi' için %5-20
İzlere bağlanma - 'trace _ id' aracılığıyla. Log dizeleri - "pivot" izlemek için ve tersi.
10) Satışlarda profilleme
CPU/heap/alloc/locks için sürekli profillemeyi (Pyroscope/Parca) etkinleştirin.
P99 zirvelerini sıcak yığınlarla ilişkilendirin; 7-14 gün boyunca saklayın.
11) SLO/kusurlu bütçe hakkında uyarı
SLO uyarıları: "Hatalı bütçe X %/saatten daha hızlı harcanır" (tahmin uyarıları).
Belirtiler, neden değil: CPU'ya değil, istemci seviyesine (RUM/edge veya per-route) uyarı.
Çoklu pencere, çoklu yanma oranı: 1 saatte %2 ve 6 saatte %5 - iki durum.
Planlı bozulma sırasında sessizlik: özellik bayrakları/kanarya sırasında eşik kayması.
12) Maliyet ve saklama
Hacim kotaları: yollar ≤ N TB/ay, günlükler - sıcak 3-7 günleri, soğuk S3 30-90 günleri, metrikler - aşağı örnekleme (1 dk. - 5 dk. - 1 h.).
Kuyruk kuralları, hatalı/yavaş tutarak × 10- × 100 hacmini azaltır.
En düşük maliyet sinyalleri - metrikler; En yüksek değerle - "doğru" yollar ve profiller.
13) Antipatterns
"Her zaman %100 izler" - maliyet, gürültü ve frenlerin patlaması.
Anahtarlar/maskeleme olmadan serbest formatta oturum açar.
Sonsuz etiket metrikleri (user_id/ip/full UA).
Hayır 'traceparent'/' bagaj' - ilişkilendirilemez.
SLO yerine CPU/yığın üzerinde uyarılar - fayda olmadan "yakar" sohbet.
Hata önceliği/yavaş olmadan "rastgele %1" örnekleme - değerli durumları kaybedin.
14) Gösterge panoları örnekleri (iskeletler)
API'ye Genel Bakış: RPS, sınıfa göre hata oranı, gecikme süresi p95/p99 (örnekler tıklanabilir), üst yönlendirmeler.
Sürüm/Kanarya: Eski/yeni sürüm metriklerinin karşılaştırılması, aykırı oran, açık devreler, yeniden denemeler.
PSP/KYC: Sağlayıcıların başarı oranı, gecikme ve başarısızlık, ödeme hatalarıyla korelasyon.
Infra: Kaynaklara göre KULLANIM, kuyruk doygunluğu, ağ damlaları.
15) iGaming/Finansın Özellikleri
Kritik yollar (depozitolar/sonuçlar): Yalnızca olaylar veya sınırlı pencereler için %100 izleme; Normal modda - kuyruk "hata/uzun gecikme ile tüm".
Bölge/kiracı: bagaja 'kiracı', 'yargı yetkisi', 'marka' ekleyin; Yargı yetkisine göre SLO'lar oluşturun.
Antifrod/bot filtresi: metrikler ve Risk API çözümlerinin izleri (allow/deny/challenge), challenge-pass-rate, velocity-hits.
Denetim/uyumluluk: PII olmadan gerekli minimum tutun; Sabit günlükler - ayrı bir devrede.
16) Prod Hazırlık Kontrol Listesi
- Uçtan uca yayılma ('traceparent', 'bagaj'), log/metrik/iz korelasyonu.
- Kuyruk örneklemeli OTel Toplayıcı (hatalar/yavaş/önemli yönlendirmeler) + olasılıksal varsayılan.
- KIRMIZI/KULLANIM metrikleri, açık kovalar, örnekler - ize geçiş.
- SLO ve hatalı bütçe uyarısı (iki zaman çizelgesi).
- Telemetri düzenlemeleri ve bütçe; Altörnekleme metrikleri; kütükler için soğuk hava deposu.
- Standartlaştırılmış JSON günlüğü, redaksiyon PII/sırları.
- Satışlarda profilleme dahil; Olay için "sıcak" yığınların panoları.
- Kanarya panoları ve sürüm karşılaştırması; "Kör noktalar" olmadan serbest bırakın.
- Runbook: Bir olayın örnekleme payını geçici olarak nasıl artırabilirim.
- Öznitelik/etiket adlandırma dokümantasyonu ve yüksek kardinalite inhibisyonu.
17) TL; DR
Korelasyon etrafında gözlemlenebilirlik oluşturun: KIRMIZI/KULLANIM - metrikleri örneklemektedir - izler - günlükler/profiller. Birleştirilmiş örnekleme yoluyla maliyeti yönetin: küçük kafa % + kuyruk kuralları (hatalar, yavaş, önemli yollar/kiracılar). Uyarılar - SLO ve hata bütçesinde. Retansiyonları ve kardinaliteyi kontrol altında tutun, OTel Collector'u "merkezi sinir sistemi'olarak kullanın. "Ödeme/yargı yolları için - öncelikli telemetri ve sıkı veri hijyeni.