GH GambleHub

Չափման հոսք

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-ը, և կստանաք կառավարվող ապրանք։

Contact

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

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

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

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

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

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