Prometheus: метр чогултуу
(Бөлүк: Технология жана инфраструктура)
Кыскача резюме
Prometheus - убакыттын метриктер үчүн өнөр жай стандарты: ал HTTP боюнча максаттуу scrapit, TSDB бир катар сактайт, Alertmanager аркылуу PromQL жана триггерит Alerty боюнча агрегаттарды эсептейт. iGaming үчүн бул SLO мамилесинин (RED/USE, бизнес-төлөм метрикасы), p95/p99 тез диагностикасынын жана автоматтык чечимдердин (freeze/rollback) негизи болуп саналат.
1) Маалыматтар модели жана кардиналдуулук
Метрика:' name {label1 =" v1", label2 =" v2"} value @ timestamp'.
Кардиналдуулук = бардык уникалдуу лейбл топтомдорунун кубаттуулугу; наркынын негизги фактору.
- базовые: `service`, `env`, `region`, `instance`, `pod`, `container`, `version`;
- домендер: 'route', 'psp', 'tenant' (абайлаңыз!), 'game _ provider'.
- 'user _ id', 'session _ id', кокустук/жогорку сандарды коюуга болбойт.
2) Метрика түрлөрү
Counter - гана өсүп жатат (мисалы, 'http _ requests _ total').
Gauge - көз ирмемдик маанилер (мисалы, 'queue _ depth').
Histogram/Summary - жашыруун бөлүштүрүү. Прода - Histogram (колдоосу менен 'histogram _ quantile ()' жана exemplars).
Native Histograms - өзгөрмөлүү бакет, тактыгын жогорулатуу жана өлчөмүн сактоо (жеткиликтүү жерде күйгүзүү).
go var httpLatency = prometheus. NewHistogramVec(
prometheus. HistogramOpts{
Name: "http_request_duration_seconds",
Help: "HTTP latency",
Buckets: prometheus. DefBuckets ,//or custom
},
[]string{"route","method"},
)
3) Экспорттоочулар жана эмне өлчөө керек
Кызматтык: Сиздин коду (SDK үчүн Go/Java/Node/Python), RED-метрика API, бизнес-метрика (төлөм которуу).
Системалык: node_exporter, cAdvisor/kubelet.
Үчүнчү жактар: DD/кэш (mysqld_exporter, postgres_exporter, redis_exporter), NGINX/HAProxy, Kafka/RabbitMQ.
OTEL-метрика: OpenTelemetry Collector → Prometheus Remote Write же Prometheus-receiver → жалпы стек аркылуу.
4) Scrape жана relabel: максаттуу туташтыруу үчүн кантип
негизги 'prometheus. yml`
yaml global:
scrape_interval: 15s evaluation_interval: 15s external_labels:
env: "prod"
region: "eu-west"
scrape_configs:
- job_name: 'node'
static_configs:
- targets: ['10. 0. 1. 10:9100','10. 0. 1. 11:9100']
- job_name: 'payments-api'
metrics_path: /metrics scheme: https tls_config:
ca_file: /etc/ssl/ca. crt cert_file: /etc/ssl/tls. crt key_file: /etc/ssl/tls. key relabel_configs:
- source_labels: [__address__]
regex: '(.):\d+'
target_label: instance replacement: '$1'
Kubernetes через Prometheus Operator
Колдо 'scrape _ configs' ордуна ServiceMonitor/PodMonitor колдонуңуз.
yaml apiVersion: monitoring. coreos. com/v1 kind: ServiceMonitor metadata: { name: payments-api }
spec:
selector: { matchLabels: { app: payments-api } }
namespaceSelector: { matchNames: [ "prod" ] }
endpoints:
- port: metrics interval: 15s scheme: http relabelings:
- action: replace targetLabel: service replacement: "payments-api"
K8s аннотация (оператор жок, жөнөкөйлөштүрүлгөн)
yaml metadata:
annotations:
prometheus. io/scrape: "true"
prometheus. io/port: "9102"
prometheus. io/path: "/metrics"
5) Сактоо: TSDB, WAL жана retenshn
WAL (Write-Ahead Log) → кайра кийин тез калыбына келтирүү.
Compaction: блокторду кысуу, дискти/процессорду үнөмдөө.
Retenshn: 7-30 күн ысык маалыматтарды сактоо; узак мөөнөттүү - алып ("Масштабды" карагыла).
- `--storage. tsdb. retention. time=15d`
- `--storage. tsdb. max-block-chunk-segment-size`
- диск: тез SSD/NVMe; зарылчылыгы жок тармактык томдорду болтурбоо.
6) PromQL: негиздери жана тез-тез үлгүлөрү
Rate/irate
promql rate(http_requests_total{route="/deposit"}[5m])
Каталар жана ийгиликтүү үлүшү
promql sum(rate(http_requests_total{status=~"2.. 3.."}[5m]))
/ sum(rate(http_requests_total[5m]))
p95 жашыруун
promql histogram_quantile(0. 95,
sum by (le, route) (rate(http_request_duration_seconds_bucket[5m]))
)
Кезектер/каныктыруу
promql max(queue_depth{queue="withdrawals"}) by (region)
7) Recording rules жана аткаруу
Оор сөздөрдү алдын ала эсептеп, сериялар катары сактаңыз.
yaml groups:
- name: api. rules interval: 30s rules:
- record: job:http:request_duration_seconds:p95 expr:
histogram_quantile(0. 95,
sum by (le, job) (rate(http_request_duration_seconds_bucket[5m])))
- record: job:http:success_ratio expr:
sum(rate(http_requests_total{status=~"2.. 3.."}[5m]))
/ sum(rate(http_requests_total[5m]))
Plus: тез dashboard, Prometheus CPU боюнча аз жүк.
8) Alerting и SLO (burn rate)
Burn-rate alerta (multi-window, multi-burn)
yaml groups:
- name: slo. payments rules:
- alert: PaymentsSLOFastBurn expr: (1 - job:http:success_ratio{job="payments-api"}) > (1 - 0. 999) 14 for: 5m labels: { severity: "page" }
annotations:
summary: "SLO fast burn"
runbook: "https://runbooks/payments/slo"
- alert: PaymentsSLOSlowBurn expr: (1 - job:http:success_ratio{job="payments-api"}) > (1 - 0. 999) 6 for: 1h labels: { severity: "ticket" }
Alertmanager: кызматтар/региондор боюнча багыттоо, дубликаттарды басуу, ChatOps.
9) жолдор жана логдор менен байланыш
exemplars кирет: кликабель 'trace _ id' гистограммалардын бакеттеринде.
"release compare" үчүн 'service', 'version', 'region' деген этикеткаларды коюңуз.
Дашборддо - релиздердин аннотациялары (Git SHA/версия).
10) Масштабдоо жана узак мөөнөттүү сактоо
Киргизия: жогорку Prometheus төмөнкү топтойт (job/label-чыпкалар боюнча).
Remote Write: узак сактоо backends/кластерлерине катар жөнөтүү (Thanos/Cortex/Mimir).
Артыкчылыктары: чексиз retenshn, горизонталдык масштабдоо, global view.
Кемчиликтери: татаал иштетүү, наркы.
Функциялары боюнча шардинг: системалык метриктер, бизнес, коопсуздук үчүн өзүнчө инстанциялар.
11) Коопсуздук
TLS/mTLS арасында Prometheus максаттары/Alertmanager/remote _ write.
/ Максаттар жана API үчүн негизги/токен аутентификациясы (Прократталган шлюз алдында).
RBAC: ролдорду UI/сериясына кирүүгө чектөө; жеке этикеткаларды жашырыңыз.
PII-гигиена: метрикалык PII жазуу эмес; хэш/псевдонимдерди колдонуңуз.
12) Kubernetes-практикасы
Prometheus Operator: CRD (ServiceMonitor, PodMonitor, Alertmanager, Prometheus).
kube-state-metrics + cAdvisor → кластердин толук сүрөт.
Тейнингдер жана ресурстар: мониторинг жүргүзүү үчүн бөлүнгөн ноддор; CPU/RAM лимиттери.
Ызы-чууну азайтуу: "өндүрүштүк" неймспейстер үчүн лейблдик селекторлор, паддинг scrape_interval мүмкүн болгон жерде.
13) Бизнес-метрика жана продукт
Платежи: `payments_success_total{psp, currency}`, `payment_conversion_ratio`, `ttw_seconds_histogram`.
Оюн ишмердүүлүгү: коюмдар/мин, сессияларды gauge катары кармап туруу, ката кетирүү.
Тобокелдик/фрод: ылдамдык/гео аномалиялары боюнча триггерлер; өзүнчө логика, метрика - агрегаттар.
14) Наркы жана аткаруу (FinOps)
кардиналдуулугун контролдоо (жаңы белги кошуу алдында тег-ревю).
Сэмплинг гистограммалар/сейрек экспортерлор → 'scrape _ interval' ↑ эмес-критикалык максаттар үчүн.
Downsampling узак сактоо backends.
Dashboard кэширование жана recording rules боюнча кенен таяныч.
15) мисалдар "тез баштоо"
Колдонмодо RED экспорттоочу (Python)
python from prometheus_client import Counter, Histogram, start_http_server reqs = Counter('http_requests_total','', ['route','method','status'])
lat = Histogram('http_request_duration_seconds','', ['route','method'])
start_http_server(8000)
def handle(req):
with lat. labels(req. route, req. method). time():
status = app(req)
reqs. labels(req. route, req. method, str(status)). inc()
return status
Босого p95
promql alert: HighLatencyP95 expr: histogram_quantile(0. 95,
sum by (le, service) (rate(http_request_duration_seconds_bucket[5m]))) > 0. 25 for: 10m labels: { severity: "page", service: "api" }
16) Киргизүү чек-тизмеси
1. Негизги метриктердин (RED/USE) жана домендик көрсөткүчтөрдүн топтомун аныктаңыз.
2. Кардиналдуулук боюнча этикеткаларды жана гиддерди макулдашуу.
3. scrape/ServiceMonitor, TLS/mTLS, relabel.
4. Негизги жолдор жана exemplars үчүн гистограммаларды киргизиңиз.
5. p95, success ratio, бизнес агрегаттары үчүн recording rules түзүү.
6. SLO-алерттерди (burn rate) жана ruting Alertmanager киргизиңиз.
7. dashboard көтөрүү: service map, release compare, төлөмдөр.
8. Федерация/remote _ write жана retenshn жөнүндө чечим кабыл алуу.
9. Чектелген кирүү (RBAC), PII жоктугун текшерүү.
10. runbooks жана game-day текшерүү кирет.
17) Анти-үлгүлөрү
Жогорку кардиналдуу лейблдер (user/session/request_id).
Summary ордуна негизги SLO үчүн Histogram → жок 'histogram _ quantile'.
чыпкалоо/айлануу жок Scrape "бардык катары менен" → чыгымдарды жана ызы-чууну жогорулатуу.
SLO жок чийки метриктер боюнча Alert → Alert-Fetig.
Жок recording rules → "оор" dashboard.
TLS/mTLS → алмаштыруу/агып кетүү коркунучу жок метриктер ишеним.
Натыйжалары
Prometheus iGaming платформасына максаттарга байланыштуу байкоо мүмкүнчүлүгүн берет: так гистограммалар, туруктуу агрегаттар, так SLO алерттери жана көп региондук картага масштабдоо. этикеткалар тартип, туура recording rules, tracking/logs менен байланыш жана кылдат сактоо архитектурасы да жогорку учурларда тез релиздерди жана алдын ала p99 камсыз кылат.