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-ը որպես «կենտրոնական նյարդային համակարգ»։ Մետրոպոլիտենի/միգրացիոն ճանապարհների համար գերակայական հեռաչափություն է և տվյալների խիստ հիգիենան։