Ҷамъоварии метрҳо: Прометей, Графана
Ҷамъоварии метрҳо: Прометей, Графана
1) Мақсад ва чаҳорчӯба
Вазифаи ҳалқаи ченакҳо аз он иборат аст, ки силсилаи вақтро боэътимод ҷамъ оваред ва нигоҳ доред, ба PromQL зуд барои RCA, огоҳиҳои SLO ва панелҳои фаҳмо диҳед. Ҷуфти асосӣ: Prometheus (scrape → store → query) ва Grafana (визуалӣ, огоҳиҳо, эзоҳҳо). Барои нигоҳдории тӯлонӣ ва дархости глобалӣ - Thanos/Cortex/Mimir.
2) Модели маълумот ва семантика
Силсила = номи метрӣ + маҷмӯи нишонаҳо (калид = арзиш).
Намудҳо: ҳисобкунак, ченак, гистограмма, хулоса (дар prod - аксар вақт гистограмма).
- RED (API): 'дараҷа', 'хатогиҳо', 'давомнокӣ' (гистограмма).
- USE (ресурсы): Истифодабарӣ, қаноатмандӣ, хатогиҳо (CPU/RAM/Disk/Net).
- Номгузорӣ: 'namespace _ subsystem _ metric _ unit' (масалан, 'http _ server _ requests _ total', 'db _ connections _ current').
Анти-кардинализм: арзишҳои гуногуни тамғакоғазҳоро кам кунед (дар тамғакоғаз user_id request_id нест).
3) Кашфи таъсир ва хидмат
Содиркунандагон: node_exporter, kube-state-metrics, Cadvisor, DB/Queues (postgres_exporter, redis_exporter, kafka_exporter).
Хидматҳои маҳаллӣ: китобхонаҳои муштариён (Go/Java/Node/Python) → '/metrics '.
Кашфи хидмат: Кубернетес, EC2/ASG, Консул, файлҳои статикӣ.
yaml global:
scrape_interval: 15s evaluation_interval: 15s scrape_configs:
- job_name: 'kubernetes-nodes'
kubernetes_sd_configs: [{ role: node }]
relabel_configs:
- action: labelmap regex: __meta_kubernetes_node_label_(.+)
- job_name: 'apps'
kubernetes_sd_configs: [{ role: pod }]
relabel_configs:
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
action: keep regex: "true"
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
target_label: __metrics_path__
regex: (.+)
- source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_port]
target_label: __address__
regex: (.+)
replacement: $1
Эзоҳҳои подкастҳо:
yaml prometheus. io/scrape: "true"
prometheus. io/path: /metrics prometheus. io/port: "8080"
4) Гистограмма ва таъхир
Сатилҳои возеҳро барои SLO-ҳои худ истифода баред:- Веб/API: '[10ms, 25,50,100,200,400,800,1600]'
- Пардохтҳо/пардохтҳо: Ба 5-10 дум илова кунед.
promql histogram_quantile(0. 95,
sum by (le) (rate(http_request_duration_seconds_bucket[5m]))
)
Бо намунаҳо (агар фаъол бошад):
promql histogram_quantile(0. 95,
sum by (le, route) (rate(traces_spanmetrics_duration_bucket{route="/withdraw"}[5m]))
)
5) Қоидаҳои сабт
Дархостҳои вазнинро кам кунед, SLI-ро стандартӣ кунед.
yaml groups:
- name: api_sli interval: 30s rules:
- record: job:http:success_ratio:rate5m expr: sum(rate(http_requests_total{status!~"5.."}[5m])) / sum(rate(http_requests_total[5m]))
- record: job:http:duration_p95:5m expr: histogram_quantile(0. 95, sum by (le) (rate(http_request_duration_seconds_bucket[5m])))
6) SLO ва огоҳиҳо (сӯхтани бисёр тиреза)
SLO 99 НЕСТ. 9% Requests/30d муваффақ.
yaml groups:
- name: slo_burn rules:
- alert: ErrorBudgetBurnHighShort expr: (1 - job:http:success_ratio:rate5m) > (1 - 0. 999) 14 for: 5m labels: { severity: critical }
annotations: { summary: "Fast burn >14x for 5m" }
- alert: ErrorBudgetBurnHighLong expr: (1 - job:http:success_ratio:rate5m) > (1 - 0. 999) 6 for: 1h labels: { severity: critical }
annotations: { summary: "Long burn >6x for 1h" }
Alertmanager (соддакардашуда):
yaml route:
receiver: pager group_by: ["service"]
receivers:
- name: pager slack_configs:
- channel: "#oncall"
send_resolved: true
7) Нишона-гигиена ва иқтисодиёт
Номҳои тамғакоғазҳо устувор ва стандартӣ мебошанд: 'хидмат', 'env', 'минтақа', 'масир', 'рамз', 'версия'.
Маҳдудияти кардиналӣ: Нишондиҳандаҳо бо 'масир' бояд 'http' -ро истифода баранд. масир '(на URL пурра).
Интихоби мантиқӣ - дар пайгирӣ; дар ченакҳо - не user_id.
Озод кардани хосиятҳо ('хидмат. версия ') барои муқоисаи версияҳои кӯҳна/нав муфид аст.
8) миқёс ва HA
Прометей - амудӣ ва бо ҳадафи скрепер:- Ду Prometheus (A/B) ҳадафҳои якхеларо хароб мекунанд (огоҳиҳои HA → такрор карда мешаванд).
- Thanos: Sidecar ба ҳар як Prometheus, Store + Дархост барои дархостҳои глобалӣ ва нигаҳдории дарозмуддат (S3/GCS).
- Алтернатива: Cortex/Mimir (навиштани дурдаст, бисёрҳуҷрагӣ, миқёси уфуқӣ).
yaml remote_write:
- url: https://mimir. example. com/api/v1/push basic_auth: { username: tenantA, password: $MIMIR_TOKEN }
Нигоҳдории маҳаллии TSDB:
yaml
--storage. tsdb. retention. time=15d
--storage. tsdb. max-block-duration=2h
9) Графана: панели панелҳо, огоҳиҳо, эзоҳҳо
Панели стандартӣ:1. Шарҳи платформа (SLO/RED, буҷаи хатогӣ).
2. API by Route (RPS/5xx/p95, муқоиса 'версия').
3. K8s кластер/гиреҳҳо (назорат-ҳавопаймо, пуррагӣ).
4. DB/Cache/Queues (ақибмонӣ/қулфҳо/таносуби хит/қафо).
5. Per-Release (пеш аз/баъд, эзоҳҳоро аз CI нашр кунед).
Grafana Alerting: триггерҳо дар Prom
Эзоҳҳо: CI як чорабинии озодкуниро бо тасвири 'ӯҳдадорӣ' илова мекунад. барчасп ', истинод ба лӯла.
10) Кубернетҳо: чиро чен кардан лозим аст
Ҳавопаймои назоратӣ: 'apiserver _ request _ total', etcd пешво/fsync, таъхири ҷадвал.
Сарбории корӣ: бозоғоз, 'container _ cpu _ cfs _ throttled _ seconds _ total', OOM, интизорӣ/хориҷшуда, вайронкунии PDB.
Шабака: хатоҳо, пайвастшавӣ, хатогиҳои 'kube-proxy'.
Квотаҳо/маҳдудиятҳо: Дархостҳо vs Маҳдудиятҳо, HPA/VPA, пур кардани гиреҳ.
11) DB/caches/навбатҳо: сигналҳои калидӣ
Postgre SQL/My-SQL: 'пайвастшавӣ', 'қуфлҳо', 'deadlocks _ total', 'xact _ commit/rollback', ақибмонии такрорӣ.
Редис: таносуби хит, 'кӯчдиҳӣ', ниҳонӣ 'фавран _ ops _ per _ sec'.
Кафка/Харгӯшҳо: ақибмонии истеъмолкунанда, истифоданашуда, ISR, истифодаи диск.
promql
Queue backlog sum by (topic) (kafka_consumergroup_lag)> 1000
Postgres replication lag max(pg_replication_lag_seconds) > 2
12) Бехатарӣ ва бисёрҳуҷрагӣ
RBAC ба Prometheus/Grafana, datasource-permishens.
Занҷираи TLS/MTLS оид ба воридшавӣ/байни ҷузъҳо.
Ҷудокунии иҷорагир: алоҳида Prometheus ё иҷорагир дар Cortex/Mimir; силсила ва маҳдудиятҳои дархост.
Асрҳо дар огоҳиҳо/огоҳиҳо - манъшуда (истифодаи ID чипта, на PII).
13) Ҳамгироӣ бо релизҳо ва худкор
Қоидаҳои SLO → AnalysIs Template (Argo Rollouts) ё CI-дарвоза.
Ҳангоми ҳушдордиҳии сӯхтан - канараи таваққуф/бозгашт; дар журнал/эзоҳ - пайванд ба озодкунӣ.
Муқоисаи версияи устувор ва канарӣ тавассути нишони 'версия'.
14) Хатогиҳои маъмулӣ (зидди намунаҳо)
Кардиналии беназорати тамғакоғазҳо (user_id, url. калидҳои пурра, динамикӣ).
Прод ва марҳиларо дар ҳамон кластер бе 'env' label омехта кунед.
Танҳо ченак бе RED/USE; бе p95/p99 гистограмма.
Огоҳӣ дар бораи сахтафзор бидуни ҳатмӣ ба садои SLO →.
Набудани қоидаҳои сабт → дархостҳои "вазнин" дар ҳодисаҳои истеҳсолӣ.
Ягон эзоҳи озодкунӣ вуҷуд надорад → муқоиса кардани тағирот ва таназзул мушкил аст.
15) Рӯйхати назорати амалисозӣ (0-45 рӯз)
0-10 рӯз
Содиркунандагони гиреҳ/kube-state/CAdvisor; '/ченакҳо 'дар хидматҳо.
Панели асосии RED/USE; сатилҳои стандартии гистограмма.
Эзоҳҳоро аз CI дохил кунед.
11-25 рӯз
Қоидаҳои сабти SLI; огоҳиҳои сӯхтани бисёр тирезаҳо.
HA Prometheus (скрепери дукарата), нусхабардории конфигуратсияҳои GIT Ops.
Alertmanager: хатсайрҳо/режими ором/гардиши занг.
26-45 рӯз
Навиштани дурдаст дар Thanos/Cortex/Mimir, нигаҳдории дарозмуддат.
Оптимизатсияи кардиналӣ, маҳдудиятҳои силсила, дархостҳо.
Варақаҳои SLO-gating ва ҳамгироии худкор.
16) Нишондиҳандаҳои камолот
Фарогирии RED/USE барои хидматҳои асосӣ ≥ 95%.
Вақти миёна барои иҷрои "вазнин" Prom 'QL <2 s (p95) бо сабаби қоидаҳои сабт.
Таносуби огоҳиҳои муфид/ғавғо> 3:1 аст.
Кардинализм таҳти назорат аст: <10M партияҳои фаъол дар як кластер, хӯшае нест.
100% релизҳо дар Grafana шарҳ дода мешаванд ва ченакҳои ба ҳам алоқаманд пеш аз/баъд аз он.
17) Пораҳои муфид
Муқоисаи устувор ва канарӣ аз рӯи версия
promql histogram_quantile(0. 95,
sum by (le, version) (rate(http_request_duration_seconds_bucket{version=~"stable canary"}[5m]))
)
5xx Хатогиҳо аз рӯи маршрут
promql topk(5,
sum by (route) (rate(http_requests_total{status=~"5.."}[5m]))
)
пур кардани контейнери CPU
promql rate(container_cpu_cfs_throttled_seconds_total[5m]) > 0. 1
Муносибати ченакҳо ба роҳҳо (Намунаҳо фаъол аст)
promql sum (rate (http_request_duration_seconds_bucket[5m])) by (le) # clickable to the track
18) Хулоса
Prometheus + Grafana стандарти воқеӣ барои ченакҳо мебошад. Ғалабаи семантика ва интизом: RED/USE, тамғакоғазҳои тозаву озода, гистограмма барои SLO, қоидаҳои сабт ва огоҳиҳои SLO. HA ва нигаҳдории дарозмуддатро илова кунед, эзоҳҳо ва ҳамгироиро бо роликҳои худкор илова кунед - ва шумо ҳалқаи метрикии зуд, миқёспазир ва сарфакорона доред, ки ба шумо дар қабули қарорҳо дар фурӯш кӯмак мекунад.