GH GambleHub

Prometheus: метриканы жинау

(Бөлім: Технологиялар және Инфрақұрылым)

Қысқаша түйіндеме

Prometheus - уақыт бойынша метриктер үшін индустриялық стандарт: ол HTTP таргеттерін скрейпит, TSDB серияларын сақтайды, PromQL агрегаттарын есептейді және Alertmanager арқылы триггерит алгоритмдері. 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):
go var httpLatency = prometheus. NewHistogramVec(
prometheus. HistogramOpts{
Name:  "http_request_duration_seconds",
Help:  "HTTP latency",
Buckets: prometheus. DefBuckets ,//or custom
},
[]string{"route","method"},
)

3) Экспорттаушылар және не өлшеу керек

Сервистік: сіздің кодыңыз (Go/Java/Node/Python үшін SDK), RED-метрика API, бизнес-метрика (төлем конверсиясы).
Жүйелік: node_exporter, cAdvisor/kubelet.
Сыртқы: ДҚ/кэштер (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 және ретеншн

WAL (Write-Ahead Log) → қайта бастаудан кейін жылдам қалпына келтіру.
Compaction: блоктарды қысу, дискіні/CPU үнемдеу.
Ретеншн: ыстық деректерді 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]))

Плюс: жылдам дашбордтар, Prometheus CPU-ға жүктеме аз.

8) Alerting и SLO (burn rate)

Burn-rate алерты (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) жіберу.

Артықшылықтары: шексіз ретеншн, көлденең масштабтау, global view.
Кемшіліктері: пайдалану қиын, құны.
Функциялары бойынша шардинг: жүйелік метрикаларға, бизнеске, қауіпсіздікке арналған жеке инстанциялар.

11) Қауіпсіздік

TLS/mTLS/Alertmanager/remote _ write.
/ targets және 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.
Дашбордтарды кэштеу және 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) және Alertmanager рутингін енгізіңіз.
7. Дашбордтарды көтеріңіз: service map, release compare, төлемдер.
8. / remote _ write және ретеншн туралы шешіңіз.
9. Рұқсатты шектеңіз (RBAC), PII жоқ екенін тексеріңіз.
10. Runbooks және game-day тексерулерін қосыңыз.

17) Қарсы үлгілер

Жоғары кардинальды лейблдер (user/session/request_id).
Негізгі SLO үшін Histogram орнына Summary → жоқ 'histogram _ quantile'.
Scrape «барлық қатарынан» сүзгісіз/ротациясыз → шығындар мен шудың өсуі.
SLO-сыз шикі метриктер бойынша алерттар → алерт-фэтиг.
Жоқ recording rules → «ауыр» дашбордтар.
TLS/mTLS → ауыстыру/ағу қаупі жоқ метриктерге сенім.

Prometheus iGaming-платформасына мақсаттарға байланыстырылған бақылау мүмкіндігін береді: дәл гистограммалар, тұрақты агрегаттар, анық SLO-алерттар және көп аймақтық картаға дейін масштабтау. Лейблдердің тәртібі, дұрыс recording rules, трассировкалармен/логтармен байланыстар және ойластырылған сақтау архитектурасы тез релиздерді және тіпті ең жоғары сәттерде де болжамды p99 қамтамасыз етеді.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Telegram
@Gamble_GC
Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.