GH GambleHub

метр чогултуу: Prometheus, Grafana

метр чогултуу: Prometheus, Grafana

1) Максаты жана алкагы

Метриктердин контурунун милдети - убакыт катарларын ишенимдүү чогултуу жана сактоо, RCA үчүн тез PromQL берүү, SLO боюнча алерталар жана түшүнүктүү дашборддор. Негизги жубайлар: Prometheus (scrape → store → query) жана Grafana (визуализация, алерт, релиздердин аннотациялары). узак сактоо жана глобалдык суроо-талап үчүн - Thanos/Cortex/Mimir.

2) Маалыматтар модели жана семантика

Серия = метриканын аты + label's топтому (ачкыч = маани).
Түрлөрү: counter, gauge, histogram, summary.

Семантика:
  • RED (API): 'rate', 'errors', 'duration' (гистограммалар).
  • USE (ресурсы): Utilization, Saturation, Errors (CPU/RAM/Disk/Net).
  • Аталышы: 'namespace _ subsystem _ metric _ unit' (мисалы, 'http _ server _ requests _ total', 'db _ connections _ current').

Анти-кардиналдык: label's ар кандай маанилерди азайтуу (эч кандай user_id, request_id label).

3) Көргөзмө жана Discovery кызматы

Экспорттоочулар: node_exporter, kube-state-metrics, cAdvisor, DD/кезек (postgres_exporter, redis_exporter, kafka_exporter).
Өздүк кызматтар: кардар китепканалары (Go/Java/Node/Python) → '/metrics '.
Service Discovery: Kubernetes, EC2/ASG, Consul, static files.

негизги 'prometheus. yml '(фрагмент):
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
pod's түшүндүрмөлөрү:
yaml prometheus. io/scrape: "true"
prometheus. io/path: /metrics prometheus. io/port: "8080"

4) Гистограммалар жана latency

Сиздин SLO үчүн эксплициттик бакеттерди колдонуңуз:
  • Веб/API: '[10ms, 25,50,100,200,400,800,1600]'
  • Төлөмдөр/төлөмдөр: 5-10s чейин куйругун кошуу.
PromQL p95:
promql histogram_quantile(0. 95,
sum by (le) (rate(http_request_duration_seconds_bucket[5m]))
)
Менен Exemplars (киргизилген болсо):
promql histogram_quantile(0. 95,
sum by (le, route) (rate(traces_spanmetrics_duration_bucket{route="/withdraw"}[5m]))
)

5) Жазуу эрежелери (recording rules)

Оор суроо-талаптарды кыскартуу, 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 жана Алерт (көп-window burn)

SLO 99. 9% ийгиликтүү суроо/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) Label-гигиена жана сактоо

Label's аттары туруктуу жана стандартташтырылган: 'service', 'env', 'region', 'route', 'code', 'version'.
Кардиналдуулукту чектеңиз: 'route' менен метриктер 'http' үлгүсүн колдонушу керек. route '(толук URL эмес).
Сэмплинг логика - соода; метриктерде - эч кандай user_id жок.
Релиздин касиеттери ('service. version ') эски/жаңы версиясын салыштыруу үчүн пайдалуу.

8) Масштабдоо жана HA

Prometheus - тик жана scrape-максат боюнча sharding:
  • Эки Prometheus (A/B) ошол эле максаттарды (HA → Алерт кайталанат).
  • Thanos: ар бир Prometheus үчүн Sidecar, дүйнөлүк суроо-талап жана узак мөөнөттүү сактоо үчүн Store + Query (S3/GCS).
  • Альтернатива: Cortex/Mimir (remote-write, көп денелүүлүк, горизонталдык масштабдоо).
Remote write (мисал):
yaml remote_write:
- url: https://mimir. example. com/api/v1/push basic_auth: { username: tenantA, password: $MIMIR_TOKEN }
Жергиликтүү TSDB Retenshn:
yaml
--storage. tsdb. retention. time=15d
--storage. tsdb. max-block-duration=2h

9) Grafana: Дашборддор, Алерт, аннотациялар

Стандарттык dashboard:

1. Platform Overview (SLO/RED, error-budget).

2. API by Route (RPS/5xx/p95, салыштыруу 'version').

3. K8s Cluster/Nodes (control-plane, saturation).

4. DB/Cache/Queues (lag/locks/hit ratio/backlog).

5. Per-Release (чейин/кийин, CI бошотуу түшүндүрмөлөрү).

Grafana Alerting: PromQL боюнча триггерлер, on-call ротациялары, mute-times "чыгаруу терезелери".

Annotations: CI 'commit', 'image' менен релиздик окуяны кошот. tag ', paypline шилтеме.

10) Kubernetes: сөзсүз өлчөө

Control-plane: `apiserver_request_total`, etcd leader/fsync, scheduler latency.
Workloads: кайра, 'container _ cpu _ cfs _ throttled _ seconds _ total', OOM, Pending/Evicted, PDB бузуулар.
Тармак: тамчы, conntrack, 'kube-proxy' каталар.
Квоталар/лимиттер: Requests vs Limits, HPA/VPA, түйүндөрдүн сатурациясы.

11) BD/кэш/кезек: негизги сигналдар

PostgreSQL/MySQL: `connections`, `locks`, `deadlocks_total`, `xact_commit/rollback`, replication lag.
Redis: hit ratio, `evictions`, latency `instantaneous_ops_per_sec`.
Kafka/RabbitMQ: consumer lag, unacked, ISR, disk usage.

PromQL мисалдары:
promql
Queue backlog sum by (topic) (kafka_consumergroup_lag)> 1000

Postgres replication lag max(pg_replication_lag_seconds) > 2

12) Коопсуздук жана көп тенанттуулук

RBAC Prometheus/Grafana, datasource-permishen.
ingress/компоненттеринин ортосунда TLS/mTLS чынжыр.
Ижарачылардын изоляциясы: Cortex/Mimir өзүнчө Prometheus же tenant-label; сериясына жана суроо-талапка лимиттер.
Алерт/нотификациядагы сырлар - тыюу салынат (PII эмес, ID билетин колдонуңуз).

13) Releases жана auto-racks менен бириктирүү

SLO эрежелери → AnalysisTemplate (Argo Rollouts) же CI-gate.
Burn-alerts иштегенде - pause/rollback canary; логинде/аннотациясында - релизге шилтеме.
label 'version' аркылуу туруктуу жана канарейка нускасын салыштыруу.

14) типтүү каталар (анти-үлгүлөрү)

Көзөмөлсүз кардиналдуулук (user_id, url. full, динамикалык ачкычтар).
'env' label жок бир кластерде prod жана этап аралаштыруу.
RED/USE жок гана gauge; p95/p99 гистограммалары жок.
SLO байланыштуу жок "темир" боюнча Алерта → ызы-чуу.
Жок recording rules → "оор" прод-окуялар боюнча суроолор.
Эч кандай жарыялар → өзгөрүүлөрдү жана деградацияларды салыштыруу кыйын.

15) киргизүү чек-тизмеси (0-45 күн)

0-10 күн

Node/kube-state/cAdvisor экспортерлор; '/metrics 'кызматтарында.
Негизги RED/USE dashboard; стандарттык бакет гистограммалар.
CI релиздеринин түшүндүрмөлөрүн киргизүү.

11-25 күн

SLI үчүн Recording rules; multi-window burn alerty.
HA Prometheus (Double Scrape), GitOps конфигурацияларынын резервдик көчүрмөсү.
Alertmanager: маршруттар/тынч режими/айлануу on-call.

26-45 күн

Thanos/Cortex/Mimir Remote-write, узак сактоо.
Кардиналдуулукту оптималдаштыруу, сериялар боюнча лимиттер, суроолор.
SLO-оюн релиздер жана auto-rollback бириктирүү.

16) Жетилүү метрикасы

Негизги кызматтар боюнча RED/USE ≥ 95%.
Орточо аткаруу убактысы "оор" PromQL <2 c (p95) recording rules эсебинен.
Пайдалуу/ызы-чуу коркунучтардын катышы> 3:1.
көзөмөлү астында кардиналдуулук: <10M кластер боюнча активдүү катар, эч кандай жарылуулар.
100% релиздерде Графана аннотациясы жана метриктерди салыштыруу чейин/кийин.

17) Пайдалуу сниппеттер

Салыштыруу stable vs canary версиясы боюнча

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

Trace менен Metrics байланыш (Exemplars киргизилген)

promql sum (rate (http_request_duration_seconds_bucket[5m])) by (le) # clickable to the track

18) Корутунду

Prometheus + Grafana - метр үчүн де-факто стандарты. Семантика жана тартип жеңет: RED/USE, тыкан label's, SLO астындагы гистограммалар, recording rules жана SLO-алерттер. HA жана узак мөөнөттүү сактоо, релиздердин аннотацияларын жана авто-спот менен интеграцияны кошуңуз - ошондо сиз тез, масштабдуу жана үнөмдүү метриканын контуруна ээ болосуз, бул санда чечим кабыл алууга жардам берет.

Contact

Биз менен байланышыңыз

Кандай гана суроо же колдоо керек болбосун — бизге кайрылыңыз.Биз дайым жардам берүүгө даярбыз!

Telegram
@Gamble_GC
Интеграцияны баштоо

Email — милдеттүү. Telegram же WhatsApp — каалооңузга жараша.

Атыңыз милдеттүү эмес
Email милдеттүү эмес
Тема милдеттүү эмес
Билдирүү милдеттүү эмес
Telegram милдеттүү эмес
@
Эгер Telegram көрсөтсөңүз — Emailден тышкары ошол жактан да жооп беребиз.
WhatsApp милдеттүү эмес
Формат: өлкөнүн коду жана номер (мисалы, +996XXXXXXXXX).

Түшүрүү баскычын басуу менен сиз маалыматтарыңыздын иштетилишине макул болосуз.