Paýlanan ýollar
Paýlanan ýollar
1) Näme üçin we näme
Paýlanan marşrut, ähli haýyş ýoly boýunça amallary baglanyşdyrmagyň usulydyr: öň → API-şlýuz → mikroservisler → DB/nagt pullar → brokerler → joblar/paýlar.
Netije - span (span) -dan trace (trace), bu ýerde her span komponentiň atributlar, wakalar we status bilen işleýşini ýazga alýar. Bu RCA çaltlaşdyrýar, SLO-ny saklamaga kömek edýär we MTTR-ni peseldýär.
- Möhüm ýoluň we "dar ýerleriň" görünmegi.
- Alamatlaryň (metrikanyň) sebäpler (spanalar) we jikme-jiklikler (loglar) bilen baglanyşygy.
- Retraýlaryň, nobatlaryň, DLQ-leriň, janköýerleriň, gizlinlik "teshikleriniň" seljermesi.
2) Yzarlaýyş maglumatlarynyň modeli
Trace - 'trace _ id' jaň grafigi.
Span — операция: `name`, `kind` (SERVER/CLIENT/PRODUCER/CONSUMER/INTERNAL), `start/end`, `status`, `attributes`, `events`, `links[]`.
Attributes - açar bahasy (route, db. system, messaging. system, cloud. region we ş.m.).
Events - spanyň içindäki dessine bellikler (mysal üçin 'retry', 'cache _ miss').
Span Links - "ene-ata-çaga" (batçi, retrai, fan-in/out).
Resource - prosesiň/hyzmatyň meta-maglumatlary ('service. name ', wersiýa, gurşaw).
3) Kontekst we çydamlylyk
3. 1 W3C Trace Context
Sözbaşylar:- 'traceparent': 'version-traceid-spanid-flags' (baýdaklara sampling girýär).
- 'tracestate': wendor-aýratyn ýagdaý (iň az).
- Baggage - işewür kontekst üçin açarlar (çäkli, PII/syrsyz).
3. 2 Konteksti zyňmak
HTTP: `traceparent`/`tracestate`; gRPC: meta-maglumatlar; WebSocket: täzelenende we habarlarda;
Habarlar: headers-de (Kafka/NATS/RabbitMQ) - asyl mazmuny PRODUCER-de saklaýarys we CONSUMER-de geçirýäris.
Maglumatlar bazalary: konteksti "götermeýär" - atributlary spana ýazýarys (query, rows, db. system), ýöne manysy ýok.
4) Semplemek: nädip bankrot bolmaly däl
Head sampling (girelgede): ähtimal/düzgünlere görä (route, tenant, endpoint).
Tail sampling (kollektorda): "gyzykly" söwdalary - ýalňyşlyklary, uzyn p95/p99, seýrek ýollary saklaýarys.
Exemplars: gistogramma metrikleri anyk 'trace _ id' salgylanmalaryny saklaýar.
Maslahat: birleşmek - head 5-20% + tail-düzgünler 100% 5xx/timeout/p99 üçin.
5) Atributlar we taksonomiýa (hökmany iň pes)
Umumy:- `service. name`, `service. version`, `deployment. environment`, `cloud. region`, `http. route`, `http. method`, `http. status_code`, `db. system`, `db. statement '(gysgaldylan/maglumatsyz),' messaging. system`, `messaging. operation`, `peer. service`, `net. peer. name`, `tenant. id`, `request. id`.
Işewür bellikler: PII bolmasa seresaplylyk bilen. Mysal: 'order. segment`, `plan. tier`.
6) Asinxron ssenariýalar, nobatlar we söweşler
PRODUCER → CONSUMER: kontekstli SPAN PRODUCER döredýäris; habarda - headers (traceparent, baggage). CONSUMER SERVER/CONSUMER-span PRODUCER linkinden başlaýar (eger berk iýerarhiýa bolmasa).
Fan-out: bir giriş - köp otput → golçur ýa-da links.
Batch: CONSUMER her bir messageId ýa-da aýry-aýry kontekstlerde 'links' -den 'events' -den bir paket N habarlary okaýar.
DLQ: aýratyn span 'messaging. dlq. publish` с reason и count.
Retraýlar: 'event: retry' + 'retry. count 'atribut; has gowusy synanyşmak üçin täze CHILD-span.
7) Loglar we metrikler bilen integrasiýa
JSON-ny 'trace _ id '/' span _ id' → bilen ýazýarys.
RED/USE metrlerinde exemplars bar → p99-dan "erbet" ýatmaga gidýäris.
Ýollar wakalar arkaly tehniki signallary (garaşlylyk ýalňyşlyklaryny) we işewürlik signallaryny (öwrülişikleri) döredýär.
8) Öndürijiligi we bahasy
Wakalary semplemek we trottling.
Atributlaryň kardinallygyny azaltmak ('user _ id '/' session _ id' label!).
Eksportçy tarapyndan gysyş/batching; eksport wagtlarynyň çäkleri.
Saklamak: gyzgyn 1-7 gün, soňra - agregatlar/diňe "problemaly" söwdalar.
Çykdajy kategoriýalary: kollektorlar, indeksler, ammar, egress.
9) Howpsuzlyk we gizlinlik
In Transit: TLS 1. 3/mTLS ýygnamak agentleri; At Rest: şifrlemek, öz açarlary ("In Transit/At Rest şifrlemek").
PII we syrlar: atributlara/wakalara ýazmaýarys; önümçide tokenizasiýa/maskalama.
Köp kärendesi: 'tenant. id 'çeşme-bellik we giňişlikleriň izolýasiýasy, okamak syýasaty hökmünde; yzlara girmegi diňlemek ("Audit we üýtgemeýän magazinesurnallara" serediň).
10) Girizmegiň shemalary (salgylanma)
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 (bölek)
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 - kontekstiň geçirilmegi (düşünje)
PRODUCER: headers 'traceparent', 'baggage' goşýarys.
CONSUMER: Habar täze akymy başlasa - täze SERVER/CONSUMER-span c linkden headers-den kontekste.
11) Data/ETL и ML
Batch-payplaynlar üçin: batch/partition c 'dataset. urn`, `run. id`, `rows. in/out`, `freshness. lag`.
ML üçin: türgenleşik/ýürek, modeliň wersiýasy, latency, feature store.
Lineage: 'run. id` и `dataset. urn 'treysden maglumatlaryň gelip çykyşyna geçmäge mümkinçilik berýär.
12) SLO yzarlaýyş platformalary
Elýeterlilik ingestion: ≥ 99. 9%
Indekslemegiň gijä galmagy: ≤ 60 s p95
Head-sample örtügi: Esasy ugurlaryň 5-10% ≥
100% ERROR statusly we latency> "kritiki ýollar" katalogy boýunça bosagany saklamak
Platforma alertleri: damjalaryň ösüşi, eksport wagtlary, indeksator lag, kardinallygyň aşa gyzmagy.
13) Synag we barlamak
CI-de yzarlaýyş şertnamasy: esasy endpointlerde spanlaryň bolmagy, hökmany atributlar, dogry 'traceparent' şlýuzdan/proksiden geçýär.
Synthetic/rum-synaglar: daşary tarapdan treýsleri ýygnaýarlar.
Chaos/hadysalar: endikleri öçürmek, tail-sampleriň ýalňyşlyklary "saýlaýandygyny" barlamak.
Önümdäki smoke: goýberilenden soň - "ukusyzmy" we exemplar → trace.
14) Çek-listler
Önümden öň
- W3C Trace Context hemme ýerde zyňylar; Habar üçin - headers.
- Esasy head-sempleme goşuldy; 5xx/p99 üçin tail düzgünleri sazlandy.
- Hökmany atributlar: route, method, status, service. version, tenant. id.
- JSON logleri 'trace _ id '/' span _ id', exemplars bilen metrikler.
- PII sanitizatorlary; ýolda/dynç alyşda şifrlemek; giriş syýasaty.
- Daşbordlar: "möhüm ýol", "endikleriň ýalňyşlyklary", "retrailer/wagtlar".
Amal
- Atributlaryň kardinallygynyň her aýda gözden geçirilmegi; kwotalar.
- SLO boýunça tail-sampling sazlamak (az ses, ähli "gyzgyn" - nusgada).
- Geçiş metrika → exemplar → trace → logi bilen RCA okuw.
- Nobatlar, DLQ, ETL joblary üçin örtükleri barlamak.
15) Runbook’и
RCA: p99/pay
1. RED dashboard açyň; p99 binasyndan exemplar arkaly trasa geçmek.
2. "Dar" CLIENT-span tapyň (mysal üçin 'gateway. call '), barlamak' retry. count ', wagt.
3. Hyzmatyň/garaşlylygyň, sebitiň/zonanyň wersiýalaryny deňeşdiriň.
4. Pese gaçmagy açyň (kesişýän jogap/RPS çägi), garaşlylyk eýelerine habar beriň.
5. Fiksden soň - RCA we optimizasiýa üçin biletler.
DLQ
1. 'messaging' marşrutlaryny süzüň. dlq. publish`.
2. Sebäpleri barlaň (events), goýbermek bilen baglanyşdyryň.
3. Reprocess-i başla, CONSUMER-den wagtyny wagtlaýynça uzat, downstream eýelerine habar ber.
16) Ýygy-ýygydan ýalňyşlyklar
Şlýuzlar/brokerler arkaly kontekstiň ýaýramagy ýok. Çözgüt: middleware/interseptorlar, bitewi kitaphanalar.
Ähli söwdalar 100%. Gymmat we manysyz - tail-sempling ulanyň.
'trace _ id' -siz girelgeler. Korelýasiýa ýitýär → MTTR ↑.
Atributlarda PII. Gizläň/belläň; diňe tehniki mazmuny saklaň.
"Dilsiz" fon joblary. Spany batch/partition we 'run. id`.
Adyň tapawudy. Span atlary we atribut açarlary sözlügini giriziň.
17) FAQ
S: Head ýa-da tail sampling has gowudymy?
A: Kombinasiýa. Head esasy gatlagy berýär, tail anomaliýalaryň/ýalňyşlyklaryň saklanmagyny kepillendirýär.
S: Berk iýerarhiýa bolmazdan Kafka arkaly nädip yzarlamaly?
A: PRODUCER we CONSUMER arasynda span linklerini ulanyň; kontekst - headers.
S: Duýgur SQL bilen näme etmeli?
O: 'db. statement 'gysgaldylan/kadalaşdyrylan (manysyz) ýa-da' db. operation '+ ölçegleri/wagty.
S: Iş ölçegleri bilen nädip baglanyşmaly?
O: PII (plan/segment) bolmasa domen atributlaryny goşuň, spanyň içinde "iş tapgyrlary" wakalaryny ulanyň we exemplar boýunça öwrülişik metriklerinden geçiň.
- "Syn edilişi: ýazgylary, metrikleri, yzarlamalary"
- "Audit we üýtgemeýän žurnallar"
- "In Transit/At Rest şifrlemek"
- "Maglumatlaryň gelip çykyşy (Lineage)"
- «Privacy by Design (GDPR)»
- "Syr dolandyryşy"