Դիտարկումը 'լոգներ, մետրեր, հետքեր
Դիտարկումը 'լոգներ, մետրեր, հետքեր
1) Ինչո՞ ւ է դա անհրաժեշտ
Դիտողությունն այն է, որ համակարգը կարող է պատասխանել իր վիճակի վերաբերյալ չնախատեսված հարցերին։ Այն հիմնված է երեք հիմնական ազդանշանի վրա
Մետրիկները SLI/SLO-ի համար կոմպակտ ագրեգատներ են և ալերտինգը ախտանիշներով։
Հետքերը հարցումների պատճառահետևանքային շղթաներ են (end-to-end)։
Լոգները մանրամասն իրադարձություններ են հետաքննությունների և գործողությունների համար։
Նպատակը 'արագ RCA, ինդուկտիվ ալերտներ և կառավարվող կոմպոզիա error budget-ում։
2) Ճարտարապետության սկզբունքները
Միակ կոնտեքստը 'ամենուրեք մենք գնում ենք «trace _ id», «բանաձև _ id», «tenom _ id», «request _ id», «user _ agent», «client _ ip _ hash»։
Ստանդարտները ՝ OpenTelemetry (OTel) MSK/գործակալների համար, JSON-լոգարանների ձևաչափը (կանոնական, սխեմայով)։
Ախտանիշները> պատճառները 'ալերտիմը օգտագործողի ախտանիշներով (լատենտ/սխալ), ոչ թե CPU-ով։
Ազդանշանների կապը 'մետրից դեպի սպան (exemplars) նշված է հատուկ լույսերի մեջ' «trace _ id»։
Անվտանգությունն ու գաղտնիությունը 'PII-ի դիմակավորում լոգարաններում, ծածկագրում in transit/at rest, անփոփոխ ամսագրեր զբոսաշրջիկների համար։
Բազմաբնույթ 'անունների տարածությունների բաժանումը/2019/քաղաքական։
3) Ազդանշանների և սխեմաների տաքսոնոմիա
3. 1 Մետրիկա
RED (Rate, Errors, Duration) ծառայությունների և USE (Utilization, Saturation, Errors) համար ենթակառուցվածքի համար։
Типы: counter, gauge, histogram/summary. Լատենտության համար 'histogram ֆիքսված bucket' ami։
Exemplars: Հղում '«trace _ id» -ը հիստոգրամի «տաք» բիններում։
Մետրիկայի մինի-սխեման (տրամաբանություն)։ մոդել)։
name: http_server_duration_seconds labels: {service, route, method, code, tenant}
type: histogram buckets: [0. 01, 0. 025, 0. 05, 0. 1, 0. 25, 0. 5, 1, 2, 5]
exemplar: trace_id
3. 2 Հետքեր
Span = վիրահատություն '«name», «start/end», «attributes», «events», «status»։
W3C Trace Exprest-ը փոխակերպման համար։
Սեմպլացիա 'հիմնական (head) + դինամիկ (tail) + «կարևորության» կանոնները (սխալներ, բարձր p95)։
3. 3 Լոգներ
Միայն կառուցվածքային JSON-ը։ մակարդակները ՝ DEBUG/IV/WARN/ERROR։
Պարտադիր դաշտերը ՝ «ts _ utc», «level», «windows», «trace _ id», «tenium _ id», «env», «region», «host», «labels +»։
Արգելվում է ՝ գաղտնիքներ, հոսանքներ, PAN, գաղտնաբառեր։ PII-ը միայն թունիզացված/դիմակավորված է։
Լոգարի տողի (JSON) օրինակ
json
{"ts":"2025-10-31T12:05:42. 123Z","level":"ERROR","service":"checkout","env":"prod",
"trace_id":"c03c...","span_id":"9ab1...","tenant_id":"t-42","route":"/pay",
"code":502,"msg":"payment gateway timeout","retry":true}
4) Հավաքումը և տրանսպորտը
Express/Express (daemonset/sidecar) bufer է ռուսական անվադողերի/ingest (TMS/mTSA) վրա ռուսական ազդանշաններ։
Պահանջները ՝ back-pressure, retrai, deduplication, կարդինալության սահմանափակում (labels!), Պաշտպանություն «log storts» -ից։
Մետրիկները ՝ pox (Prometheus-միասին) կամ push OTLP-ի միջոցով։
Հետքերը ՝ OTLP/HTP (gRPC), tail-semplers կոլեկտորի վրա։
Լոգի 'տեղական հավաքումը (journald/docker/stdout) ռուսական պարսեր է։
5) Պահպանումը և վերականգնումը (tiered)
Մետրիկները ՝ տաք TSDB 7-30 օր (downsample-ից), ագրեգատները ավելի երկար ժամանակով (90-365 օր)։
Ուղիներ ՝ 1-7 օր լի է, ապա ագրեգատները/« կարևոր »ծառայություններից։ պահել ինդեքսները '0,5, «status», «error»։
Լոգի '7-14 օրվա տաք ինդեքսը, տաք 3-6 մեզ, արխիվը մինչև 1-7 տարեկան (կոմպլեքս)։ Աուդիտը WORM է։
Ծախսերի օպտիմիզացումը 'downsampling, DEBUG ֆիլտրը վաճառքում, պիտակների քվոտաները, հետքերի համար sampling։
6) SLI/SLO, alerting և հերթապահություն
SLI 'հասանելիությունը (հաջողակ հարցումների տոկոսը), լատենտությունը (p95/p99), 5xx-ի մասնաբաժինը, տվյալների թարմությունը, հաջողակ ջոյի մասնաբաժինը։
SLO 'SLI-ի նպատակը (օրինակ ՝ 99։ Հաջողության 9 տոկոսը 400 մզ է)։
Error budget: 0. 1% «սխալի իրավունքները» ֆիչֆրիզի/փորձերի կանոնները։
Ալերտինգը ախտանիշներով (օրինակ)
`ALERT HighLatency` если `p99(http_server_duration_seconds{route="/pay"}) > 1s` 5мин.
`ALERT ErrorRate` если `rate(http_requests_total{code=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0. 02`.
Սիլոս Ալերտները (CPU/Prok) միայն որպես ֆուտբոլիստ, առանց paging։
7) Ազդանշանների հարաբերակցությունը
Փոխաբերությունը «կարմիր» է exemplar-ում հատուկ «trace _ id» է նայում «դանդաղ» սպանը, որը ցույց է տալիս նույն «trace _ id» -ի միջոցով։
Հաղորդագրությունների հարաբերակցությունը '«version», «image _ sha», «feature _ flag»։
Տվյալների համար/ETL:
8) Սեմպլյացիան և կարդինալությունը
Պիտակները սահմանափակվում են պիտակներով (առանց «user _ id», «session _ id»); քվոտաներ/վալիդացիա գրանցման ժամանակ։
Հետքեր ՝ մենք փակցնում ենք head-sample (մուտքի) և tail-sample (կոլեկցիոների վրա) կանոններով. <<ամեն ինչ 5xx, p99, սխալները '100%>։
Լոգներ 'մակարդակներ և drosselling; հաճախակի կրկնվող սխալների համար 'համախմբող իրադարձություններ (deduae բանալին)։
Tail-sampling (հայեցակարգային, OTel Collector)։
yaml processors:
tailsampling:
decision_wait: 2s policies:
- type: status_code status_code: ERROR rate_allocation: 1. 0
- type: latency threshold_ms: 900 rate_allocation: 1. 0
- type: probabilistic hash_seed: 42 sampling_percentage: 10
9) Անվտանգությունն ու գաղտնիությունը
In Transit/At Rest: կոդավորումը (TFC 1։ 3, AEAD, KMS/HSM).
PII/գաղտնիքները 'altizers մինչև ուղարկումը, թունավորումը, դիմադրությունը։
Հասանելիություն 'ABAC/RBAC կարդալու համար; դերերի բաժանումը www.ers/readers/admins։
Աուդիտ 'անփոփոխ հասանելիության ամսագիր լոգարաններին/հետքերով։ արտահանումը ծածկագրված տեսքով է։
Բազմաբնույթ ՝ namespaces/tenault-labels քաղաքական գործիչների հետ։ մեկուսացում։
10) Միգրացիայի պրոֆիլները (բեկորները)
Prometheus (HTTP + alerting)
yaml global: { scrape_interval: 15s, evaluation_interval: 30s }
scrape_configs:
- job_name: 'app'
static_configs: [{ targets: ['app-1:8080','app-2:8080'] }]
rule_files: ['slo. rules. yaml']
slo. rules. yaml (օրինակ RED)
yaml groups:
- name: http_slo rules:
- record: job:http_request_duration_seconds:p99 expr: histogram_quantile(0. 99, sum(rate(http_server_duration_seconds_bucket[5m])) by (le,route))
- alert: HighLatencyP99 expr: job:http_request_duration_seconds:p99{route="/pay"} > 1 for: 5m
OpenTelemetry MSK (կեղծ)
python provider = TracerProvider(resource=Resource. create({"service. name":"checkout","service. version":"1. 8. 3"}))
provider. add_span_processor(BatchSpanProcessor(OTLPExporter(endpoint="otel-collector:4317")))
set_tracer_provider(provider)
with tracer. start_as_current_span("pay", attributes={"route":"/pay","tenant":"t-42"}):
business logic pass
Ծրագրի լոգները (stdout JSON)
python log. info("gw_timeout", extra={"route":"/pay","code":502,"trace_id":get_trace_id()})
11) Տվյալները/ETL և սթրիմինգը
SLI տվյալների համար 'թարմ (max lag), ամբողջական (rows vs expectation), «որակ» (vailidators/duplicates)։
Alerta: wwwwinds պատուհաններ, condumer lag, DLQ աճը։
Հարաբերակցություն ՝ «run _ id», «contaset _ urn», lineage իրադարձությունները։ սլայնների համար ուղիներ (տեղադրված է batch/part.ru)։
Kafka/NATS: չափումներ արտադրողը/կոնսյումերը, լագը/մերժումը; headers-ի հետքերը (ներառյալ 'traceparent')։
12) Ավելացում և eBPF (ազդանշան)
CPU/alloc/IO ցածր մակարդակի տաք ճանապարհները։ ավելացրեցին պատահականության վրա։
EBPF-telemetria (ցանցային ուշացումներ, MSO, ռուսական զանգեր), որը կապված է «trace _ id »/PID-ի հետ։
13) Դիտարկման փորձարկումը
Ազդանշանների պայմանագիրը 'մեթրիկի/պիտակների/հիստոգրամի արտահանման ստուգումը CI-ում։
Inthetic probes: RUM/սիմուլյացված հաճախորդներ արտաքին SLI-ի համար։
Chaos/Fire medills: Կախվածության անջատումը, դեգրադացիան, մենք նայում ենք, թե ինչպես են ալերտները և հերթապահները արձագանքում։
Smoke-ը վաճառում է. Հետպատերազմյան ստուգում, որ նոր էնդպոինտները ունեն մետրեր և հետքեր։
14) Արժեքի և վերահսկման արժեքը
Ազդանշանի/թիմի բյուջեները; Դեշբորդ «cost per signal»։
Կարդինալիզմը բյուջեի տակ (SLO cardinality), նոր պիտակների սահմանները։
Downsampling, վերականգնումներ տվյալների դասարաններում, «սառը» արխիվները և WORM-ը։
15) Վիրահատություն և SLO դիտարկման պլատֆորմներ
SLO պլատֆորմները ՝ 99։ Հաջողակ ինգեստերի 9 տոկոսը։ ձգձգումը մինչև մետրիկի ինդեքսը 30 c, logs 242 րոպե, trass 361 մգ։
Պլատֆորմի ալտերտերը 'ինժեներական լագը, դրոպների աճը, ստորագրության/սխալը, ածխաջրածինների լցումը։
DR/HA 'բազմազանություն, կրկնօրինակում, գենդերային/կանոնների պահեստային պատճեններ։
16) Չեկ թերթերը
Մինչ վաճառքը
- Ամենուրեք պտտվում է «trace _ id »/« բանաձև _ id»; JSON-լոգները սխեմայով։
- RED/USE մետրերը գիստոգրամներով; exemplar ռուսական ուղին։
- Tail-sampling ներառվում է; կանոնները 5xx/p99 = 100%։
- Alerts ըստ ախտանիշների + runibuki; հանգիստ ժամացույց/anti-flap։
- Altaizers PII; կոդավորումը at rest/in transit; WORM-ի համար։
- Ռետենցիա և բյուջեներ ծավալների/կարդինալության համար։
Վիրահատություն
- Ալերտերի ամսական ակնարկ (աղմուկ/ճշգրտություն), շեմերի թյունինգ։
- Error budget-ի զեկույցը և ֆինանսական միջոցները (ֆիչֆրիզ, hardening)։
- Dashbords/logs/հետքեր կրիտիկական ճանապարհների համար։
- Դասավորություններ և թարմացումներ runbook 's.
17) Runbook’и
RCA 'p99/2019 աճը
1. Բացել dashbord RED-ը «www.kout» -ի համար։
2. Exemplar-ի միջով անցնելը բացատրվում է «նեղ սպան» (օրինակ ՝ «gateway»)։ call`).
3. Բացեք «trace _ id» -ի լոգները, որոնք ցույց են տալիս թայմաուտներ/ռետրաններ։
4. Միացրեք fich-դրոշը RPS-ի սահմանաչափը, տեղեկացրեք կախվածության սեփականատերերին։
5. Դեպքից հետո RCA-ն, օպտիմիզացման հյուսետները, վերարտադրման թեստը։
Անոմալիան տվյալների մեջ (lag MSH)
1. SLI-ն «թարմ» կարմիր գիծ է ջոբի ուղու համար։
2. Ստուգել բրոքեր/DLQ լագը, կոնեկտորի սխալները։
3. Սկսել reprocess, տեղեկացնել սպառողներին (BI/ապրանք) կարգավիճակի ալիքի միջոցով։
18) Հաճախակի սխալներ
Լոգները առանց սխեմայի և առանց «trace _ id»։ Հետազոտությունները մի քանի անգամ հետաձգվում են։
Ենթակառուցվածքի ալերտները ախտանիշների փոխարեն։ Paging-ը գնում է «կաթի մեջ»։
Անսահման կարդինալություն։ Ծախսերի պայթյունը և անկայունությունը։
Բոլոր ճանապարհները 100 տոկոսն են։ Թանկ և անհրաժեշտ չէ. միացրեք խելացի սերմնացանը։
PII/գաղտնիքները լոգարաններում։ Միացրեք Altaizers-ը և կարմիր ցուցակները։
«Լուռ» ֆիչին։ Նոր կոդը առանց մետրիկ/trass/logs։
19) FAQ
Իսկ արդյո՞ ք պետք է հում պահենք լոգարանների տեքստը։
Օ 'Այո, բայց վերականգնման և արխիվների հետ։ Ալերտների և SLO-ի համար բավականին ագրեգատներ կան։ Աուդիտը WORM-ում է։
Ի՞ նչ ընտրել ուղիների համար 'head կամ tail sampling։
Օ 'Համակցեք' head-probabilistic-ը հիմնավորման համար + tail-rules սխալների և անոմալիաների համար։
Ինչպե՞ ս կապել օգտագործողի մետրերը և տեխնիկան։
Օ 'Ընդհանուր «trace _ id» և բիզնես պիտակների միջոցով («rope», «tenault», «plan»), ինչպես նաև ապրանքի (փոխադարձության) իրադարձությունների միջոցով, որոնք կապված են ուղիների հետ։
Ինչպե՞ ս չթուլանալ ալերտներում։
Օ 'Բիթեն ըստ ախտանիշների, տեղադրեք հանգիստ ժամացույց, deduplication, խումբը, SLO-ի գերակայությունը և լռելյայն տերը յուրաքանչյուր ալերտի վրա։
Կապված նյութեր
«Աուդիտ և անփոփոխ ամսագրեր»
«In Transit/At Rest»
«Գաղտնիքների կառավարում»
«Տվյալների ծագումը (Lineage)»
«Privacy by Design (GDPR)»
«Վեբհուկի առաքման երաշխիքները»