GH GambleHub

Բաշխված ուղիներ

Բաշխված ուղիներ

1) Ինչու՞ և ի՞ նչ է դա։

Բաշխված ուղին մի միջոց է, որը կապում է վիրահատությունները հարցման բոլոր ուղիների վրա ՝ API կողպեքների ճակատ, միկրովայրկյաններ, BD/kashi, brokers, job/wwww.pline։

Արդյունքը սպան (trace) է, որտեղ յուրաքանչյուր սպան գրանցում է բաղադրիչի աշխատանքը ածխաջրածինների, իրադարձությունների և կարգավիճակի հետ։ Սա արագացնում է RCA-ը, օգնում է պահել SLO-ը և նվազեցնել MTTR-ը։

Հիմնական նպատակները

Կրիտիկական ճանապարհի տեսանելիությունը և «նեղ վայրերը»։

Ախտանիշների (մետրիկայի) հարաբերակցությունը պատճառների (սպանի) և մանրամասների հետ (լոգներ)։

Ռետրերի վերլուծությունը, հերթերը, DLQ, ֆան-աուտները, լատենտության «պիլերը»։

2) Այս ուղու մոդելը

Trace-ը զանգերի գրաֆիկ է '«trace _ id»։

Span — операция: `name`, `kind` (SERVER/CLIENT/PRODUCER/CONSUMER/INTERNAL), `start/end`, `status`, `attributes`, `events`, `links[]`.

Attributes-ը բանալին է (roult, db. system, messaging. system, cloud. region և այլն)։

Events - ակնթարթային բջիջներ սպանի ներսում (օրինակ ՝ «retry», «cache _ miss»)։

Systel Links-ը կապեր է «ծնող-երեխայի» սահմաններից դուրս (մարտեր, ռետրաններ, fan-in/out)։

Resource-ը մետատվական գործընթացներ/108 ('108)։ name ', տարբերակը, շրջապատը)։

3) Համատեքստն ու հանդուրժողականությունը

3. 1 W3C Trace Context

Վերնագրեր

«traceparent»: «version-traceid-spanid-flags» (դրոշները ներառում են sampling)։

«tracestate» ՝ գենդերային հատուկ վիճակ (ըստ հաշվարկների)։

Baggage-ը բիզնես կոնտեքստի բանալին է (սահմանափակ, առանց PII/գաղտնիքների)։

3. 2 Ենթատեքստ

HTTP: `traceparent`/`tracestate`; GRPC 'մետատվյալներ; Intel Socket 'apgraide և հաղորդագրություններում։

Հաղորդագրությունները ՝ headers (Kafka/NATS/RabbitMQ) - պահպանում ենք սկզբնական ենթատեքստը SNER-ում և տեղափոխում ենք CONSUMER-ում։

Հիմքերը ՝ ոչ թե «կրում» ենթատեքստը 'տրամաբանելով ատրիբուտները սպանում (query, rows, db)։ ե.), բայց ոչ արժեքներ։

4) Սեմպլյացիա 'ինչպես չսպանվել

Head sampling (մուտքի վրա) 'հավանական/կանոններով (roult, tenae, endpoint)։

Tail sampling (կոլեկցիոների վրա), մենք պահպանում ենք «հետաքրքիր» թրեյսները 'սխալներ, երկար p95/p99, հազվագյուտ ճանապարհներ։

Exemplars: Histrams-ը պահպանում է հղումները հատուկ «trace _ id» -ի վրա։

Առաջարկություն 'համատեղել' head 5-20% + tail-կանոնները 100 տոկոսը 5xx/timeout/p99 համար։

5) Ատրիբուտներ և տաքսոնոմիա (առնվազն 108)

Ընդհանուր

`service. name`, `service. version`, `deployment. environment`, `cloud. region`, `http. route`, `http. method`, `http. status_code`, `db. system`, `db. statrone '(կրճատված/առանց տվյալների), «draging»։ system`, `messaging. operation`, `peer. service`, `net. peer. name`, `tenant. id`, `request. id`.

Բիզնես պիտակները 'ուշադիր, առանց PII։ Օրինակ '"order. segment`, `plan. tier`.

6) Ասինխրոն սցենարները, գծերը և մարտերը

SDER no CONSUMER 'մենք ստեղծում ենք span SDER համատեքստով։ 1922-ին 'headers (traceparent, baggage)։ CONSUMER-ը սկսում է SERS/CONSUMER-span-ը RTER-ում (եթե չկա խիստ հիերարխիա)։

Fan-out: մեկ կոմպոզիցիա շատ աուտպուտներ են ռուսական աղջիկները կամ links։

Batch: CONSUMER-ը կարդում է N հաղորդագրությունների տուփը, որը մեկ քնած է «events» -ից յուրաքանչյուր ID կամ «links» -ի վրա N առանձին ենթատեքստերի վրա։

DLQ 'առանձին span' draging։ dlq. publish` с reason и count.

Retray: 'event: retry' + 'retry։ count '71; խորհուրդ է տալիս CHILD-span-ը փորձել։

7) Լոգարանների և մետրերի ինտեգրումը

Լոգները գրում են JSON-ը '«trace _ id _ id» -ի հետ, որը դուրս է գալիս լույսից։

RED/USE-ի մետրիկները պարունակում են exemplars-ը P99-ից գնում ենք «վատ» քնած։

Հետքերը ստեղծում են տեխնոլոգիական (կախվածության սխալներ) և բիզնես ազդանշաններ (հակադարձում) իրադարձությունների միջոցով։

8) Արտադրողականությունը և արժեքը

Սեմպլյացիան և տրոտլինգը։

Ատրիբուտների կարդինալության նվազումը (ոչ մի "user _ id "/" session _ id 'որպես label!)։

Սեղմումը/անջատումը էքսպորտեր է։ արտահանման թայմաուտների սահմանները։

Պահեստավորում 'տաք 1-7 օր, հետո' ագրեգատներ/միայն «խնդրահարույց» թրեյսներ։

Ծախսերի կատեգորիաները 'կոլեկցիոներներ, ինդեքսներ, պահեստ, egress։

9) Անվտանգությունն ու գաղտնիությունը

In Transit: TLS 1. 3/mTSA կոլեկցիոներ 105; At Rest: կոդավորումը, սեփական բանալիները (տե՛ ս «In Transit/At Rest»)։

PII և գաղտնիքները 'չենք գրում ատրիբուտների/իրադարձությունների մեջ։ թունավորում/դիմակավորում։

Բազմաբնույթ ՝ "tenault. id 'որպես ռեսուրս պիտակ և տարածությունների մեկուսացում, կարդալու քաղաքականություն։ Հետքերի հասանելիության ստուգում (տե՛ ս «Աուդիտ և անփոփոխ ամսագրեր»)։

10) Իրականացման սխեմաները (հանրաքվեներ)

10. 1 OpenTelemetry MSK (կեղծ)

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 (հատված)

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 - ենթատեքստի փոխանցումը (հայեցակարգ)

MSER 'ավելացնում ենք headers' traceparent "," baggage "։

CONSUMER: Եթե հաղորդագրությունը նախաձեռնում է նոր հոսք 'նոր SVER/CONSUMER-span link-ից headers ենթատեքստից։

11) Data/ETL и ML

Batch-windowsplins-ի համար 'երգել է batch/partrons' aset։ urn`, `run. id`, `rows. in/out`, `freshness. lag`.

ML-ի համար 'դասընթացները/infess, մոդելի տարբերակը, latency, feature store։

Lineage: 'run։ id` и `dataset. urn 'թույլ են տալիս երրորդից անցնել տվյալների ծագման հաշվարկին։

12) SLO ճանապարհային պլատֆորմները

Ingestion: 3699։ 9%

Ուշացում մինչև ինդեքսավորումը '3660 p95-ից

Head-sample: 245-10 տոկոսը հիմնական երթուղիների

100 տոկոսը պահպանվում է REROR կարգավիճակով և latency> շեմն է կրիտիկական ճանապարհների վերանորոգման համար։

Պլատֆորմի ալտերտերը 'դրոպների աճը, էքսպորտի թայմաուտները, ինդեքսատորի լագը, վերարտադրելով կարդինալիզմը։

13) Փորձարկում և հավատարմագրում

CI-ի ուղու պայմանագիրը 'հիմնական էնդպոինտների վրա սպանների առկայությունը, պարտադիր ատրիբուտները, ճիշտ «traceparent» -ը թռչում է դարպասի/վրկ։

Internthetic/rum-փորձարկումներ. Նրանք հավաքում են հետքեր արտաքին կողմից։

Chaos/միջադեպերը 'կախվածության անջատումը, ստուգումը, որ tail-սեմպլերը «վերցնում է» սխալները։

Smoke-ը վաճառում է 'թողարկումից հետո' «քնած» և exemplar protres։

14) Չեկ թերթերը

Մինչ վաճառքը

  • Ամենուրեք վարձելու են W3C Trace Prodext-ը; հաղորդագրությունների համար 'headers։
  • Հիմնական head-սեմպլյացիան ներառված է. tail կանոնները 5xx/p99-ի համար վճռական են։
  • Պարտադիր ատրիբուտներ ՝ rome, method, status, 112։ version, tenant. id.
  • JSON Logs's 'trace _ id _ id', exemplars։
  • Altaizers PII; ծածկագրում/հանգստի համար; հասանելիության քաղաքականություն։
  • Dashbords: «կրիտիկական ճանապարհ», «կախվածության սխալներ», «retrai/timauta»։

Վիրահատություն

  • Ամսական վերլուծություն ատրիբուտների կարդինալության մասին; քվոտաներ։
  • SLO (ավելի քիչ աղմուկ, ամեն ինչ «տաք» - նմուշում)։
  • Կրթական RCA-ն, որը փոխում է մետրը wwww.exemplar-ի անցումը, trais-loga-ն է։
  • Ծածկույթի ստուգում հերթերի համար, DLQ, ETL ջոբների համար։

15) Runbook’и

RCA 'p99/ժամ աճը

1. Բացել RED-dashbord; bina p99-ից անցնել exemplar trace։

2. Գտնել «նեղ» CLIENT-span (օրինակ ՝ «gateway»)։ call '), ստուգել' retry։ count ', թայմաուտներ։

3. Համեմատել կոդավորման/կախվածության տարբերակները, տարածքը/գոտին։

4. Միացրեք դեգրադացիան (caliving պատասխանը/RPS), տեղեկացրեք կախվածության սեփականատերերին։

5. Ֆիքսից հետո RCA-ն և թիկետները օպտիմիզացման համար։

DLQ աճը

1. Trass ֆիլտրը 'draging։ dlq. publish`.

2. Ստուգել պատճառները (events), հարաբերել օրինագծի հետ։

3. Սկսել reprocess, ժամանակավորապես բարձրացնել թայմաուտը CONSUMER-ում, տեղեկացնել downstream սեփականատերերին։

16) Հաճախակի սխալներ

Ոչ մի ենթատեքստ չկա դարպասի/բրոկերների միջոցով։ Լուծումը 'middleware/interseptors, միասնական գրադարաններ։

Բոլոր հետքերը 100 տոկոսն են։ Թանկ և անիմաստ, օգտագործեք tail-sempling։

Լոգներ առանց «trace _ id»։ Կորցնում է MTTR-ի հարաբերակցությունը։

PII։ Քողարկեք/թոկենիզացրեք; պահեք միայն համապատասխան կոնտեքստը։

«Լուռ» ֆոնի ջոբները։ Ավելացրեք քնած/part.ru և 'run։ id`.

Անվանման տարբերությունը։ Մուտքագրեք սպանի անունների բառարանը և ատրիբուտները։

17) FAQ

Head կամ tail-ը ավելի լավ է։

Օ 'Համադրություն։ Head-ը տալիս է հիմնական շերտը, թաիլը երաշխավորում է անոմալիաների/սխալների պահպանումը։

Ինչպե՞ ս կարելի է ուղղել Kafka-ի միջոցով առանց խիստ հիերարխիայի։

Օ 'Օգտագործեք WPER-ի և CONSUMER-ի միջև։ համատեքստը headers-ում է։

Ի՞ նչ անել զգայուն SQL-ի հետ։

Օ 'db. stations 'կրճատված/նորմալացված (առանց արժեքների) կամ' db։ operation '+ չափսերը/ժամանակը։

Դե, ինչպե՞ ս կապել բիզնես մետրերի հետ։

Օ 'Ավելացրեք տիրույթի ատրիբուտները առանց PII (plan/segram), օգտագործեք սպանի ներսում «բիզնես քայլերի» իրադարձությունները և փոխակերպեք փոխարկվող մետրը exemplar-ով։

Կապված նյութեր

«Դիտարկումը 'լոգներ, մետրեր, հետքեր»

«Աուդիտ և անփոփոխ ամսագրեր»

«In Transit/At Rest»

«Տվյալների ծագումը (Lineage)»

«Privacy by Design (GDPR)»

«Գաղտնիքների կառավարում»

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։