GH GambleHub

Paylanmış izlər

Paylanmış izlər

1) Nə üçün və nədir

Paylanmış track bütün sorğu yolu boyunca əməliyyatları əlaqələndirmək üçün bir yoldur: ön → API-şluz → mikroservislər → DB/caches → brokerlər → joblar/payplaynlar.
Nəticə - span (span) trace (trace), burada hər span atributları, hadisələri və statusu olan komponentin işini qeyd edir. Bu RCA sürətləndirir, SLO saxlamağa kömək edir və MTTR-ni azaldır.

Əsas məqsədlər:
  • Kritik yolun və «dar yerlərin» görünüşü.
  • Səbəbləri (span) və detalları (logi) ilə simptomların (metriklərin) korrelyasiyası.
  • Retras analitikası, növbələr, DLQ, fan-autlar, latentlik «mişarları».

2) Tracking data modeli

Trace - 'trace _ id' ilə zəng qrafiki.
Span — операция: `name`, `kind` (SERVER/CLIENT/PRODUCER/CONSUMER/INTERNAL), `start/end`, `status`, `attributes`, `events`, `links[]`.
Attributes - açar dəyəri (route, db. system, messaging. system, cloud. region və s.).
Events - span daxilində ani etiketlər (məsələn, 'retry', 'cache _ miss').
Span Links - «valideyn-uşaq» (batches, retrai, fan-in/out) xaricində əlaqələr.
Resource - proses/xidmət ('service. name ', versiya, mühit).

3) Kontekst və dözümlülük

3. 1 W3C Trace Context

Başlıqlar:
  • 'traceparent': 'version-traceid-spanid-flags' (bayraqlar sampling daxildir).
  • 'tracestate': satıcı-spesifik vəziyyət (minimum).
  • Baggage - biznes kontekstinin açarları (məhdud, PII/sirr olmadan).

3. 2 Kontekstin atılması

HTTP: `traceparent`/`tracestate`; gRPC: meta məlumat; WebSocket: yeniləmə və mesajlarda;

Mesajlar: headers-də (Kafka/NATS/RabbitMQ) - orijinal konteksti PRODUCER-də saxlayırıq və CONSUMER-də köçürürük.
Bazalar: kontekst daşımır - atributları spana daxil edirik (query, rows, db. system), lakin əhəmiyyəti yoxdur.

4) Sampling: necə iflas etməmək

Head sampling (girişdə): ehtimal/qaydalara görə (route, tenant, endpoint).
Tail sampling (kollektorda): «maraqlı» treysləri saxlayın - səhvlər, uzun p95/p99, nadir yollar.
Exemplars: histogram metrikləri xüsusi 'trace _ id' linklərini saxlayır.
Tövsiyə: birləşdirmək - baş 5-20% + tail qaydaları 100% üçün 5xx/timeout/p99.

5) Atributlar və taksonomiya (minimum məcburi)

Ümumi:
  • `service. name`, `service. version`, `deployment. environment`, `cloud. region`, `http. route`, `http. method`, `http. status_code`, `db. system`, `db. statement '(qısaldılmış/məlumatsız),' messaging. system`, `messaging. operation`, `peer. service`, `net. peer. name`, `tenant. id`, `request. id`.

Biznes etiketləri: diqqətlə, PII olmadan. Nümunə: 'order. segment`, `plan. tier`.

6) Asinxron ssenarilər, növbələr və batçlar

PRODUCER → CONSUMER: kontekstlə span PRODUCER yaratmaq; mesajda - headers (traceparent, baggage). CONSUMER SERVER/CONSUMER-span PRODUCER linkindən başlayır (ciddi iyerarxiya yoxdursa).
Fan-out: bir giriş - çox autputs → qız span və ya links.
Batch: CONSUMER N mesaj paketini oxuyur → hər messageId və ya N ayrı kontekstlərdə 'links' ilə bir span.
DLQ: ayrı span 'messaging. dlq. publish` с reason и count.
Retrailər: 'event: retry' + 'retry. count 'atribut; tercihen yeni CHILD-span cəhd.

7) Log və metriklər ilə inteqrasiya

JSON-u 'trace _ id '/' span _ id' → ilə yazırıq.
RED/USE metrləri exemplars → p99 zirvələrindən «pis» yuxulara gedirik.
Trass hadisələr vasitəsilə texniki siqnallar (asılılıq səhvləri) və biznes siqnalları (çevirmə) yaradır.

8) Performans və dəyəri

Sampling və trottling hadisələr.
Atributların kardinallığının azaldılması (heç bir 'user _ id '/' session _ id' label kimi!).
Ixracatçı tərəfindən sıxılma/batching; ixrac vaxtı sərhədləri.
Saxlama: isti 1-7 gün, sonra - aqreqatlar/yalnız «problemli» treys.
Xərcləmə kateqoriyaları: kollektorlar, indekslər, saxlama, egress.

9) Təhlükəsizlik və məxfilik

In Transit: TLS 1. 3/mTLS kollektor, agentlər; At Rest: şifrələmə, öz açarları (bax: «Şifrələmə In Transit/At Rest»).
PII və sirləri: atributlar/hadisələr yazmaq deyil; prodüserdə tokenizasiya/maskalama.
Çox icarə: 'tenant. id 'resurs-etiket və məkan izolyasiyası, oxu siyasəti kimi; İzlərə giriş auditi (bax: «Audit və dəyişməz jurnallar»).

10) Tətbiq sxemləri (referans)

10. 1 OpenTelemetry SDK (psevdokod)

python from opentelemetry import trace from opentelemetry. sdk. trace import TracerProvider from opentelemetry. sdk. resources import Resource from opentelemetry. sdk. trace. export import BatchSpanProcessor from opentelemetry. exporter. otlp. proto. grpc. trace_exporter import OTLPSpanExporter

provider = TracerProvider(resource=Resource. create({
"service. name":"checkout","service. version":"1. 12. 0","deployment. environment":"prod"
}))
provider. add_span_processor(BatchSpanProcessor(OTLPSpanExporter(endpoint="otel-collector:4317", insecure=True)))
trace. set_tracer_provider(provider)
tr = trace. get_tracer("checkout")

with tr. start_as_current_span("POST /pay", attributes={
"http. route":"/pay","http. method":"POST","tenant. id":"t-42"
}):
business logic, external API call and pass DB

10. 2 OTel Collector - tail sampling (fraqment)

yaml processors:
tailsampling:
decision_wait: 2s policies:
- type: status_code status_codes: [ERROR]
- type: latency threshold_ms: 900
- type: probabilistic sampling_percentage: 10 exporters:
otlphttp: { endpoint: http://trace-backend:4318 }
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch, tailsampling]
exporters: [otlphttp]

10. 3 Kafka - kontekstin ötürülməsi (konsepsiya)

PRODUCER: headers 'traceparent', 'baggage' əlavə edin.
CONSUMER: mesaj yeni bir axın başlatırsa - yeni SERVER/CONSUMER-span c link kontekstində headers.

11) Data/ETL и ML

Batch payplayns üçün: batch/partition ilə 'dataset span. urn`, `run. id`, `rows. in/out`, `freshness. lag`.
ML üçün: məşq/inference, model versiyası, latency, feature store.
Lineage ilə əlaqə: 'run. id` и `dataset. urn 'trace-dən məlumatların mənşə qrafikinə keçməyə imkan verir.

12) SLO izləmə platforması

Accessibility ingestion: ≥ 99. 9%

Indeksləşdirməyə qədər gecikmə: p95 ilə ≤ 60

Head-sample əhatə: ≥ 5-10% əsas marşrutlar

100% ERROR statusu və latency ilə treyslərin saxlanması> «kritik yollar» kataloqu üzrə eşik

Platformanın alertləri: damarların böyüməsi, ixrac vaxtları, indeksator gecikməsi, kardinallığın həddindən artıq qızması.

13) Test və yoxlama

CI-də izləmə müqaviləsi: əsas end nöqtələrində spanların olması, məcburi atributlar, düzgün 'traceparent' şluz/proxy vasitəsilə uçur.
Synthetic/rum-testlər: xaricdən treys toplayın.
Chaos/insidentlər: asılılığın kəsilməsi, tail-samplerin səhvləri «seçdiyini» yoxlamaq.
Smoke prod: buraxıldıqdan sonra - «yuxu var» və exemplar → trace.

14) Çek vərəqləri

Məhsuldan əvvəl

  • W3C Trace Context hər yerdə atılacaq; mesajlar üçün - headers.
  • Əsas baş yığma daxildir; 5xx/p99 üçün tail qaydaları özelleştirilmiş.
  • Məcburi atributlar: route, method, status, service. version, tenant. id.
  • JSON qeydləri 'trace _ id '/' span _ id', exemplars ilə metriklər.
  • PII dezinfeksiyaedicilər; yolda/dinc şifrələmə; giriş siyasəti.
  • Daşbordlar: «kritik yol», «asılılıq səhvləri», «retrai/taymautlar».

Əməliyyat

  • Atributların kardinallığının aylıq icmalı; kvotalar.
  • SLO tail sampling sazlama (daha az səs-küy, bütün «isti» - nümunə).
  • Keçid metrik → exemplar → trace → log ilə RCA təlim.
  • Növbələr, DLQ, ETL-joblar üçün örtüklərin yoxlanılması.

15) Runbook’и

RCA : /pay üçün p99 artım

1. RED Dashboard açın; binadan p99 exemplar trace.
2. «Dar» CLIENT span (məsələn, 'gateway. call '), yoxlamaq' retry. count ', taymautlar.
3. Xidmət/asılılıq versiyalarını müqayisə edin, region/zona.
4. Deqradasiyanı aktivləşdirin (caching cavab/RPS limiti), asılılıq sahiblərini xəbərdar edin.
5. Fiksdən sonra - RCA və optimizasiya üçün biletlər.

DLQ sıçrayış

1. 'messaging. dlq. publish`.
2. Səbəbləri yoxlayın (events), reliz ilə əlaqələndirin.
3. reprocess başlamaq, müvəqqəti CONSUMER vaxtını artırmaq, downstream sahiblərinə bildirin.

16) Tez-tez səhvlər

Şluzlar/brokerlər vasitəsilə heç bir kontekst yoxdur. Həll: middleware/interceptors, vahid kitabxanalar.
Bütün treydlər 100%. Bahalı və mənasız - tail-sampling istifadə edin.
'trace _ id' olmadan qeydlər. Korrelyasiya itirilir → MTTR ↑.
Atributlarda PII. Maskalama/tokenizasiya; yalnız texniki konteksti saxlayın.
«Səssiz» fon jobları. batch/partition və 'run yuxu əlavə edin. id`.
Adın uyğunsuzluğu. Span adları və atribut açarları lüğətini daxil edin.

17) FAQ

S: Head və ya tail sampling daha yaxşıdır?
A: Kombinasiya. Baş əsas təbəqə verir, tail anomaliyaların/səhvlərin qorunmasına zəmanət verir.

S: Sərt iyerarxiya olmadan Kafka vasitəsilə necə izləmək olar?
A: PRODUCER və CONSUMER arasında span links istifadə edin; kontekst - headers.

S: Həssas SQL ilə nə etmək lazımdır?
O: 'db. statement 'qısaldılmış/normallaşdırılmış (heç bir dəyəri), və ya' db. operation '+ ölçüləri/vaxt.

S: Biznes metrləri ilə necə əlaqələndirmək olar?
A: PII (plan/segment) olmadan domen atributlarını əlavə edin, span daxilində «iş mərhələləri» hadisələrindən istifadə edin və exemplar konversiya metriklərindən keçin.

Əlaqəli materiallar:
  • «Müşahidə: loqlar, metriklər, izlər»
  • «Audit və dəyişməz jurnallar»
  • «Transit/At Rest şifrələmə»
  • «Məlumatların mənşəyi (Lineage)»
  • «Privacy by Design (GDPR)»
  • «Sirlərin menecmenti»
Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.