GH GambleHub

Observability и trace sampling

1) Ինչու է Observability-ը

Observability (O11y) պատասխանում է երեք հարցին, թե ինչ է կատարվում, ինչու է դա շտկվում։ Այն հիմնված է չորս ազդանշանի վրա

Մետրիկները (ագրեգատները, արագ արձագանքում են);

Լոգներ (մանրամասներ և ֆորենզիկա);

Թրեյսները (պատճառահետևանքային կապերի միջոցով);

Պրոֆայլները (CPU/heap/www.k entention)։

Բանալին այն է, որ ազդանշանների միջև հարաբերակցությունը + հեռաչափության տնտեսությունը (էմպիլացիա, վերափոխում, սեղմում)։

2) Ազդանշանների քարտեզը և սկզբունքները

2. 1 RED/USE

RED (API): Rate (RPS), Errors (% 5xx/4xx կարևոր), Duration (p50/p95/p99)։

USE (ռեսուրսների համար) 'Utilization, Saturation, Errors (NIC, CPU, սկավառակ, գծեր)։

2. 2 Ապրանքի ինվարանտներ

NO SLO (օրինակ "p95 լատենտ "/v1/payments" 36300, սխալ բյուջե 0։ 5 տոկոսը 30 օրվա ընթացքում")։ Ալերտները պետք է «բղավեն» միայն SLO-ի խախտման կամ դրա այրման ժամանակ։

2. 3 Համատեքստը

Ներդրեք W3C Trace Disext («traceparent», «tracestate») և baggage-ը անվտանգ փոխանցելու համար այդ/բիզնես ատրիբուտները (օրինակ ՝ «tenae», «region», առանց PII)։

3) Դիտարկման ճարտարապետությունը

MSK/ինքնավարություն ՝ OpenTelemetry (OTel) ծառայություններում (HTTP/gRPC/DB/հաճախորդներ)։

OTel Collector-ը որպես անվադողեր 'ընդունելով ռուսական էքսպորտը (Prometheus, Tempo/Jaeger, Loki/ELK, ClickHouse)։

Մոսկվան

Մետրիկները ՝ Prometheus/Mimir/Victorium Metrics;

Թրեյսներ ՝ Tempo/Jaeger/Zipkin;

Լոգներ ՝ Loki/ELK/Vector no S3 + էժան պահեստ;

Podails: Pyroscope/Parca։

Հարաբերակցություն 'ծառայությունների գրաֆիկներ, exemplars, p99 գրաֆիկից կոնկրետ թրեյս։

4) Տաքսինգի սեմպլացիա. ռազմավարություն

4. 1 Head-based sampling (մուտքի մոտ, մինչև ելքի իմացությունը)

Պարզ և կատարյալ կոմպոզիցիա (SDK/ingress)։

Մինուսներ 'կարող է բաց թողնել հազվագյուտ սխալներ/դանդաղ հարցումներ։

Երբ բարձր RPS-ն, խիստ բյուջեները, պահանջում են կանխատեսելի մասը (օրինակ, 1-5 տոկոսը)։

4. 2 Tail-based sampling (ելքի վրա, իմանալով արդյունքը)

Որոշումը կայացվում է Collector-ում 'սպանի ավարտից հետո։

Դուք կարող եք երաշխավորված ընտրել անոմալիաներ 'սխալներ, p99, հատուկ ռոտացիաներ/տենանտներ։

Մինուսները 'բուֆերիզացիա, ավելի բարդ և թանկ։

Երբ անհրաժեշտ է «նշանակալի» հետքեր չափավոր արժեքով։

4. 3 Համակցված մոդել

Համաշխարհային head 1-5 տոկոսը, գումարած tail-կանոնները '«միշտ պահպանել սխալները/slow-spans», «50 տոկոսը canary-2019», «պահպանել բոլոր հիբրիդային ուղիները պատահականության ժամանակ»։

5) Դինամիկ մոդելավորումը և հեռուստատեսության բյուջեն

Budget-a.ru: Պահել N treiss/min փաթեթների ծավալը։ ավելացնելիս 'բարձրացնել շեմերը (օրինակ, վերցնել միայն p99։ 5+, error-only).

Rules by rome/tenae: կարևոր էնդպոինտա/tenants - ավելի մեծ մասնաբաժինով։

Հարմարվողական պատուհաններ 'արագությունը ժամանակավորապես ավելացնում է սխալների/դանդաղ։

Կարդինալության նվազումը 'նորմալացրեք user-agent, IP/ASN, squash stack traces, դիմեք գաղտնիքները։

6) Գեորգի (հանրաքվեներ)

6. 1 OpenTelemetry Collector - tail-sampling (yaml-հատված)

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

Գրառման ժամանակ ավելացրեք exemplars '«trace _ id» -ից։ Grafana-ում «ասեղների» տեսահոլովակները տանում են թրեյսի։

yaml scrape_configs:
- job_name: api scrape_interval: 10s honor_labels: true static_configs: [{ targets: ["api:9100"] }]
exemplar_limit: 10

6. 3 Loki - լոգարանների արժեքի նվազում

Աղյուսակները միայն կայուն են («07», «env», «region», «rope _ class»)։

Բարձր կարդինալությունը (request _ id, user _ id) payload-ում է, բայց redaction-ով։

Սեմպուլիզացրեք «հաջողակ» նախկին լոգները, պահպանեք բոլոր սխալները/նախազգուշացումները։

6. 4 Jaeger/Tempo - retenshn և ինդեքս

Պահեք 3-7 օրվա հում թրեյսները, ագրեգատները/սիմետրիան ավելի երկար են։

Միացրեք parquet/blocks էժան պահեստում (S3-համատեղելի), ինդեքսները կոմպակտ են։

7) Թրեյսինգի մոդելավորումը

7. 1 Անուն և ատրիբուտներ

`service. name`, `service. version`, `deployment. environment`.
`http. method`, `http. route`, `http. target`, `http. status_code`, `net. peer. name`.

Բիզնես ատրիբուտներ առանց PII: «tenault», «region», «payment _ provider», «game _ id»։

7. 2 Իրադարձություններ և կապեր

Eurovents: կարևոր կետեր (DB գործարքների սկիզբը, retray, circuit open, cache miss)։

Links: կապ www.ebhuk/իրադարձություն; օգտակար է EDA-ի և www.box/inbox-ի համար։

7. 3 Alexemplars (exemplars)

Ավելացրեք գիստոգրամներին latency/size օրինակներ '«trace _ id»։

8) Metriki: Ի՞ նչ և ինչպե՞ ս։

8. 1 Տեխնիկական

RED/tenantam/պրովայդերներ (PSA, KYC)։

Пулы: `db_connections_in_use`, `http_client_in_flight`, `queue_depth`.

Կայունացում ՝ retries, timeouts, circuit open/half-open, rate-limit hits։

Go/Java/Python runtime: GC դադար, heap, safepoinae, GIL ուշացումներ։

8. 2 Բիզնես մետր

Գրանցումներ/տրամաբանական/դեպոզիտներ/եզրակացություններ, փոխադարձություններ, 3DS/KYC ձախողումներ, chargeback-ratio։

Կարևոր ֆիչին 'Time-to-wallet, success-rate payout։

8. 3 Կարդինալություն և պահեստավորում

Գիստոգրամները ակնհայտ buckets (օրինակ ՝ "[50,100,300,3000,1000,200,000)։

Խուսափեք բարձր կարդինալությամբ պիտակից (rultuser _ id, request _ id) - դիմեք logs/treiss։

9) Լոգներ ՝ ստանդարտներ և հարաբերակցություն

Ձևաչափը 'JSON + անհրաժեշտ բանալիներ («timestamp», «level», «www.ru», «trace _ id»)։

Խմբագրում 'դիմակ PAN, հոսանքներ, PII։

Սեմպլինգը '100 տոկոսը «error/warn», 5-20 տոկոսը «աղմկոտ» ճանապարհների համար։

Թրեյսների կապումը '«trace _ id» -ի միջոցով։ Լոգ տողերը «pivot» են թրեյսի և հակառակը։

10) Pupoyling-ը վաճառքում

Միացրեք inus profiling (Pyroscope/Parca) CPU/heap/alloc/winks համար։

Փոխկապակցեք p99 պիկի տաք ապակիների հետ։ պահեք 7-14 օր։

11) Ալերթինգը SLO/սխալ հաշվարկով

SLO-alerts: «սխալ բյուջեն ծախսվում է ավելի արագ, քան X/ժամ» (կանխատեսող ալտերտերը)։

Ախտանիշները, ոչ թե պատճառները 'հաճախորդի մակարդակը (RUM/edge կամ 71-rout), այլ ոչ թե CPU-ի վրա։

Multi-2019, multi-burn rate: 2 տոկոսը 1 ժամվա ընթացքում և 5 տոկոսը 6 ժամվա ընթացքում երկու պայմաններ են։

Տիշինան պլանավորված դեգրադացիայի ժամանակ 'ֆիկ դրոշների/կանարեյկայի ժամանակ շեմերի տեղաշարժը։

12) Արժեքը և ռենտենշը

Ծավալի քվոտաները ՝ N TB/mes, logs - տաք 3-7 օր, սառը S3 30-90 օր, metrics - downsampling (1 րոպե 245 րոպե 241 ժամ)։

Tail-rules-ը նվազեցնում է 10- 100100-ի ծավալը, պահպանելով սխալ/դանդաղ։

Ամենափոքր արժեքով ազդանշանները մետրիկներ են։ առավելագույն արժեքով '«ճիշտ» թրեյսներ և պրոֆիլներ։

13) Անտիպատերնի

«100% թրեյզներ միշտ», արժեքի պայթյուն, աղմուկ և արգելակ։

Լոգները ազատ ձևաչափով առանց կոդավորման/դիմակավորման։

Մետրիկները անսահման պիտակների հետ (user _ id/ip/fox UA)։

Ոչ «traceparent »/« baggage» - կորլեացիան անհնար է։

CPU/heap-ում SLO-ի փոխարեն, չատը «այրում» առանց օգուտների։

Սեմպիլացիան «1%» առանց առաջնահերթության/slow - կորցնում եք արժեքավոր դեպքեր։

14) Dashbords (կմախքներ)

API Overview: RPS, error-rate դասարաններում, latency p95/p99 (exemplars clicabelnes), լավագույն roots։

Releault/Canary: Համեմատություն հին/նոր տարբերակի, www.ier-rate, բաց-circuits, retries։

PMS/KYC: success-rate պրովայդերների, latency-ի և հրաժարվելու, payout սխալների հետ հարաբերակցությունը։

Infra: USE ռեսուրսներով, saturation հերթերով, drops ցանցով։

15) iGaming/ֆինանսական առանձնահատկությունները

Քննադատական ճանապարհներ (դեպոզիտներ/եզրակացություններ): 100 տոկոսը թրեյսինգը միայն միջադեպերի կամ սահմանափակ պատուհանների ժամանակ։ նորմալ ռեժիմում 'թաիլ «ամեն ինչ սխալմամբ/երկար լատենտով»։

Տարածաշրջանը/տենանտը 'ավելացրեք' tenault ', "jurisdiction", "brand' baggage; կառուցեք sLO իրավասություն։

Անտիֆրոդ/բոտ ֆիլտրը 'Risk API լուծումների մետրերը և թրեյլերը (allow/deny/challenge), challenge-pass-rate, velocity-hits։

Audit/complaens: Պահել նվազագույն անհրաժեշտ, առանց PII; անփոփոխ ամսագրերը առանձին բովանդակության մեջ են։

16) Չեկ-թուղթ պատրաստակամության համար

  • Անցումային քարոզչություն («traceparent», «baggage»), լոգարանների/metric/treiss հարաբերակցությունը։
  • OTel Collector-ը tail-sampling (errors/slow/կարևոր routs) + probabilistic medical։
  • RED/USE մետրերը, որոնք ակնհայտ են buckets, exemplars-ը, անցում դեպի թրեյս։
  • SLO և alerting սխալմամբ (երկու ժամանակավոր մասշտաբներ)։
  • Վերականգնման և հեռաչափության բյուջե. downsampling metric; cold storage լոգարանների համար։
  • Ստանդարտացված JSON-log, redaction PII/գաղտնիքները։
  • Pupailing-ը վաճառքում ներառված է. dashbords «տաք» stacks պատահականության համար։
  • Կանարյան դաշնամուրներ և տարբերակների համեմատություն։ արտադրություն առանց «կույր գոտիների»։
  • Runbook: Ինչպե՞ ս ժամանակավորապես բարձրացնել հետմահու մասնաբաժինը պատահականության ժամանակ։
  • Ատրիբուտների/նետերի նեյմինգը և high-cardinality արգելքը։

17) TL; DR

Ստեղծեք հարաբերակցության շուրջ դիտարկումը 'RED/USE/exemplars/treiss/pupails։ Կառավարեք համակցված sempliation 'փոքր head% + tail կանոնները (սխալներ, դանդաղ, կարևոր երթուղիներ/tenants)։ Ալերտները SLO-ով և ռուսական սխալներով։ Պահպանեք վերափոխումները և կարդինալությունը վերահսկողության տակ, օգտագործեք OTel Collector-ը որպես «կենտրոնական նյարդային համակարգ»։ Մետրոպոլիտենի/միգրացիոն ճանապարհների համար գերակայական հեռաչափություն է և տվյալների խիստ հիգիենան։

Contact

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

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

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

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

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

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