Չափման հոսք
1) Ինչո՞ ւ պետք է դիտարկել դիտումը
Արագ RCA-ը և MTTR-ի նվազումը 'ախտանիշից րոպեում։
SLO կառավարումը 'սխալների չափումը/լատենտությունը, ալերտինգը սխալմամբ։
Ածխաջրածինների վերահսկումը 'քարքարոտ կափարիչներ, auto-rollback մետրերով։
Անվտանգությունն ու աուդիտը 'հասանելիության, անոմալիայի, Legal Hold-ի ճանապարհները։
FinOps-թափանցիկությունը 'պահպանման/հարցումների արժեքը, cost-per-SLO-ն։
Մեթոդաբանություններ ՝ Golden Signals (latency/traffic/errors/saturation), RED, USE։
2) Ապակու սկզբնական ճարտարապետությունը
Բաղադրիչները շերտերով
Հավաքումը/2019: Exporters, Promtail/Fluent Bit, OTel MSK/Instr, Blackbox-probes։
Шина/ingest: Prometheus remote_write → Mimir/Thanos, Loki distributors/ingesters, Tempo/Jaeger ingesters.
Մոսկվա ՝ օբյեկտիվ S3/GCS/MinIO (երկար ցրտ), SSD (տաք շարքեր)։
Հարցումներ/տեսողական ՝ Grafana (վահանակներ, SLO-vigets), Kibana (եթե ELK)։
Կառավարումը 'Alertmanager/Գրաֆան Ալերտներ, ծառայողական կատալոգներ, RBAC, գաղտնիք մենեջեր։
Patterns 2019
Dised (Grafana Cloud/ամպային ծառայություններ) - արագ և ավելի թանկ ծավալի վրա։
Corf-hosted-ը K8s-ում ամբողջական վերահսկողություն է, անհրաժեշտ է նաև FinOps-ը։
3) Տվյալների ստանդարտները 'միասնական «դիտարկման սխեման»
3. 1 (Prometheus/OpenMetrance)
Պարտադիր պիտակները ՝ «env», «region», «cluster», «namespace», «namespace», «version», «tenae» (եթե մուլտֆիլմ-տենանտ), «endpoint»։
Անվանումը '"www.ake _ cult", վերջածանցները' _ total "," _ seconds "," _ bytes "։
Գիստոգրամներ 'ֆիքսված «buckets» (SLO-կողմնորոշված)։
Կարդինալություն 'մի ներառեք «user _ id», «request _ id» պիտակների մեջ։
3. 2 Լոգներ
Ձևաչափը 'JSON; պարտադիր դաշտերը 'ts', «level ',» «env',» «trace _ id», «codice _ id», «www.g»։
PII 'դիմակավորում գործակալին (PAN, հոսանքներ, e-mail և այլն)։
Loki-պիտակները 'միայն ցածր կարդինալություն («app», «namespace», «level», «tenae»)։
3. 3 Հետքեր
OTel semantica: '07։ name`, `deployment. environment`, `db. system`, `http.`.
Սեմպլինգը 'p99-ի ճանապարհները' «always _ on »/tail-sampling, մնացածը '« parent/ratio »։
ID-ի տեղադրումը 'դարձրեք «trace _ id/բանաձև _ id» լոգերի և չափումների մեջ (labels/fields)։
4) M-L-T (Metrance/Logs/Traces)
Ալերտի գրաֆիկայից (մետրիկ) պատրաստված է ֆիլտրված լոգներ '«trace _ id» -ի միջոցով, որը պարունակում է կոնկրետ ուղի։
Մայրուղուց (դանդաղ սպան) բացատրվում է հատուկ բեքանդի մեթրիկի հարցումը սպանի սահմաններում։
Systilldown կոճակները պանելներում '«լոգարաններին» և «ուղիների» վրա փոփոխականների փոխարինմամբ («env», «ԱՄՆ դոլար», «trace _ id»)։
5) OpenTelemetry Collector: Ստանդարտ pline pline
yaml receivers:
otlp:
protocols: { http: {}, grpc: {} }
prometheus:
config:
scrape_configs:
- job_name: kube-nodes static_configs: [{ targets: ['kubelet:9100'] }]
processors:
batch: {}
memory_limiter: { check_interval: 1s, limit_mib: 512 }
attributes:
actions:
- key: deployment. environment value: ${ENV}
action: insert tail_sampling:
decision_wait: 5s policies:
- name: errors type: status_code status_code: { status_codes: [ERROR] }
- name: important-routes type: string_attribute string_attribute: { key: http. target, values: ["/payments","/login"] }
- name: probabilistic type: probabilistic probabilistic: { sampling_percentage: 10 }
exporters:
otlphttp/mimir: { endpoint: "https://mimir/api/v1/push" }
otlphttp/tempo: { endpoint: "https://tempo/api/traces" }
loki:
endpoint: https://loki/loki/api/v1/push labels:
attributes:
env: "deployment. environment"
service: "service. name"
service:
pipelines:
metrics: { receivers: [prometheus, otlp], processors: [memory_limiter, batch], exporters: [otlphttp/mimir] }
logs: { receivers: [otlp], processors: [batch], exporters: [loki] }
traces: { receivers: [otlp], processors: [memory_limiter, attributes, tail_sampling, batch], exporters: [otlphttp/tempo] }
6) Alerting: SLO և multi-burn
Գաղափարը 'ալտերտիմը ոչ թե «CPU> 80 տոկոսը» մակարդակում, այլ Error Budget սպառման վրա։
PromQL ձևանմուշները
promql
5-minute error rate err_ratio_5m =
sum(rate(http_requests_total{status=~"5.."}[5m])) /
sum(rate(http_requests_total[5m]))
Quick burn (1m window)
(err_ratio_1m / (1 - SLO)) > 14. 4
Slow burn (30m)
(err_ratio_30m / (1 - SLO)) > 2
Լատինականությունը (գիստոգրամ)
promql latency_p95 =
histogram_quantile(0. 95, sum by (le) (rate(http_request_duration_seconds_bucket[5m])))
7) Dashbords 'կառուցվածք 108
00 _ Overview - պլատֆորմը ՝ SLO, p95, 5xx%, capacity, ակտիվ միջադեպեր։
10 _ Lenta.ru - ծառայություններ ՝ RPS, p95/p99, սխալներ, ալգորիթմներ (ծանոթություններ)։
20 _ Infra - K8s/noda/storid/ցանց, etcd, վերահսկիչներ։
30_DB/Queues — PostgreSQL/Redis/Kafka/RabbitMQ.
40 _ Edge/CDN/WAF - ingress, LB, WAF կանոնները։
50 _ Conthetic - aptaim և headless սցենարներ։
60 _ Cost/FinOps - պահեստավորում, հարցումներ, տաք/սառը, կանխատեսում։
Յուրաքանչյուր վահանակ 'նկարագրություն, միավորներ, սեփականատեր, runbook հղում, www.illdown։
8) Logs: LoGQL գործնական
logql
API errors
{app="api", level="error"} = "Exception"
Nginx 5xx in 5 minutes
{app="nginx"} json status=~"5.." count_over_time([5m])
Extract Fields
{app="payments"} json code!="" unwrap duration avg()
9) Հետքեր ՝ Trance QL և ֆոկուսներ
Գտնել ամենափոքր սպանները
{ service. name = "api" } duration > 500ms
Սանդվիչը «դանդաղ SQL-ն դանդաղ խնդրով»
{ name = "HTTP GET /order" } child. span. name = "SELECT" & child. duration > 50ms
10) Սինթետիկ և ապթայմ
Blackbox-exporter: HTTP/TCP/TSA/RTS թեստերը 243 տարածաշրջաններից/ASN-ից։
Headless: login/deposit սցենարները։
Medrum-alerts: աշխատելը, եթե 242 տարածաշրջաններ տեսնում են մերժումը։
Կարգավիճակ-էջ 'ավտոմատ ապդեյտներ + ձեռքով մեկնաբանություններ։
11) Պահեստավորում և վերականգնում
Մետրիկները ՝ տաք 7-30 օր (արագ շարքեր), downsampling/recording rules, սառը օբյեկտիվ պահեստ (ամիսներ)։
Լոգները ՝ տաք 3-7 օր, հետո S3/GCS ինդեքսով (Loki chunk store/ELK ILM)։
Հետքերը ՝ 3-7 օր 'always _ on' + երկար պահեստավորում ընտրության համար (tail-sampled/ընտրովի)։
Առաջարկություններ
Ռոլովերը չափի և ժամանակի։ բյուջե (քվոտաներ/լիմիտներ)։
Առանձնահատուկ քաղաքականություններ ռուսական/stage և անվտանգության տվյալների համար։
12) Multi-tenanty-ը և հասանելի են
Բաժանեք «tenault »/« namespace »/Spaces, ինդեքսը-փամփուշտներ և թույլտվություններ։
Թեգիրուզեք ռեսուրսները բիլինգի համար '«tenault», «www.ru», «team»։
Հիբրիդային dashbords/alerta - հատուկ թիմերի տարածություններում։
13) Անվտանգությունն ու կոմպլենսը
TMS/mTSA գործակալներից մինչև բեկենդները, HMAC-ը մասնավոր health-ի համար։
RBAC կարդալու/ձայնագրելու, բոլոր հարցումների և ալերտների աուդիտ։
PII խմբագրությունը եզրին; գաղտնիքների արգելքը լոգարաններում. DSAR/Legal Hold.
Մեկուսացում 'առանձին պարամետրեր/նյարդեր զգայուն ածխաջրերի համար։
14) Ֆինոպս 'դիտարկման արժեքը
Մենք նվազեցնում ենք պիտակների կարդինալությունը և տրամաբանությունը ingest-ում (ոչ թե պահանջներով)։
Sampling trass + նպատակային always-on քննադատական ճանապարհների համար։
Downsampling/recording rules ծանր ագրեգատների համար։
Հազվագյուտ հասանելիության արխիվացումը սառը օբյեկտի մեջ։
Метрики: `storage_cost_gb_day`, `query_cost_hour`, `cost_per_rps`, `cost_per_9`.
15) CI/CD և դիտարկման թեստերը
Linting metric/logs CI-ում 'կարդինալիզմի պայթյունի արգելք, հիստոգրամ/միավոր ստուգում։
Direract-դիտարկման թեստերը 'պարտադիր չափումներ/լոգարանների դաշտեր, «trace _ id» middleware-ում։
Canary 'օրինագծերի ծանոթությունները գրաֆներում, SLO-avto-rollback-ում։
16) Օրինակներ ՝ արագ հարցումներ
Լավագույն էնդպոինտները սխալներով
promql topk(10, sum by (route) (rate(http_requests_total{status=~"5.."}[5m])))
CPU throttling:
promql sum by (namespace, pod) (rate(container_cpu_cfs_throttled_seconds_total[5m])) > 0
Kafka lag:
promql max by (topic, group) (kafka_consumergroup_lag)
Լոգանքներից մինչև հետքեր (Loki no Tempo), փոխանցեք «trace _ id» որպես Tempo UI/dashbord։
17) Ապակու որակը 'չեկ թերթ
- Metric/logs/trass և չափման միավորներ։
- «trace _ id» լոգոտներում և մետրերում, www.illdown-ից։
- Multi-burn SLO-alerts առանց ֆլամպինգի (www.rum/multi-2019)։
- Downsampling, հարցումների քվոտաներ, սահմաններ քայլ/միջակայք։
- Retenshn և պահեստային դասարանները տեղադրված են և օգտագործվում։
- RBAC/աուդիտ/PII խմբագրությունը ներառված է։
- Dashbords 'սեփականատեր, runbooks, 242-3 էկրան, արագ պատասխանը։
- FinOps-dashbord (ծավալը, արժեքը, ամենաբարձր բարբառները)։
18) Իրականացման պլանը (3 իտացիա)
1. MVP (երկու շաբաթ): Prometheus no Mimir, Loki, Tempo; OTel Collector; հիմնական dashbords և SLO-alerts; blackbox-փորձարկումներ։
2. Scale (3-4 շաբաթ) 'tail-sampling, downsampling, ingest, RBAC/Spaces, FinOps-dashbords։
3. Մոսկվան (4 + շաբաթ) 'SLO-ի, հիմնական ուղիների headless սինթեզի, Legal Hold, SLO պորտֆելը և հաշվետվությունները։
19) Anti-patterna
«Գեղեցիկ գրաֆիկներ առանց SLO» - ոչ մի գործողություն չկա, ոչ էլ օգուտներ։
Պիտակները բարձր կարդինալությամբ («user _ id», «request _ id») հիշողության և արժեքի պայթյուն են։
Առանց JSON-ի և առանց «trace _ id» - ոչ մի հարաբերակցություն չկա։
Alertas-ը ախտանիշների փոխարեն 'աղմուկ և այրում on-call։
Ռեթենշն քաղաքական քաղաքականության բացակայությունը ծախսերի անվերահսկելի աճն է։
20) Mini-FAQ
Ի՞ նչ ընտրել 'Loki կամ ELK։
ELK բարդ որոնման/ճակատների համար; Loki-ը ավելի էժան է և ավելի արագ grep-նման կոդերի համար։ Հաճախ օգտագործում են հիբրիդ։
Արդյո՞ ք բոլոր ճանապարհներն անհրաժեշտ են։
Այո, գոնե հիմնական ճանապարհների վրա (login, www.kout, payments) tail-sampling-ով, դա կտրուկ արագացնում է RCA-ն։
Ինչպե՞ ս սկսել զրոյից։
OTel Collector www.Mimir/Loki/Tempo-ը տեղադրված է հիմնական SLO և blackbox-փորձարկումներ, այնուհետև dashbords և burn-alerts։
Արդյունքը
Դիտարկման հոսքը ոչ թե ցրված գործիքների հավաքածու է, այլ համակարգված համակարգ 'մեկ տվյալների ստանդարտներ, որոնք համապատասխանում են M-L-T-ի հարաբերակցությանը SLO-alerting և սինթեզիկա ռուսական անվտանգությանը և FinOps-ին։ Միացրեք OTel-ը, ավելացրեք wwww.illdown և www.rollback-ը, և կստանաք կառավարվող ապրանք։