GH GambleHub

Prometheus: მეტრიკის შეგროვება

(განყოფილება: ტექნოლოგიები და ინფრასტრუქტურა)

მოკლე რეზიუმე

Prometheus არის ინდუსტრიული სტანდარტი მეტრიკისთვის: ის HTTP targets, ინახავს სერიებს TSDB- ში, მიიჩნევს დანაყოფებს PromQL- ში და ალერტმანაგერის საშუალებით ალერტებს აყენებს. 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) მეტრიკის ტიპები

ქვეყანა - მხოლოდ იზრდება (მაგალითად, '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) ექსპორტიორები და რა უნდა გაზომოთ

მომსახურების კოდი: თქვენი კოდი (SDK Go/Java/Node/Python), RED მეტრიკა API, ბიზნეს მეტრიკა (გადახდის კონვერტაცია).
სისტემური: node _ exporter, cadisor/kubelet.
მესამე მხარის: BD/ქეში (mysqld _ exporter, postgres _ exporter, redis _ exporter), NGINX/HAProxy, Kafka/RabbitMQ.
OTel მეტრიკა: OpenTelemetry Collector- ის მეშვეობით, Prometheus Remote Write ან Prometheus-receiver, როგორც ზოგადი ნაკადი.

4) Scrape და relabel: როგორ დააკავშიროთ targets

ძირითადი '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

გამოიყენეთ შეტყობინებები Monitor/PodMonitor ნაცვლად სახელმძღვანელო „scrape _ configs“.

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) - სწრაფი აღდგენა გადატვირთვის შემდეგ.
კომპოზიცია: ბლოკების შეკუმშვა, დისკის დაზოგვა/CPU.
Retenshn: შეინახეთ ცხელი მონაცემები 7-30 დღის განმავლობაში; გრძელვადიანი - მიიღეთ (იხ. „მასშტაბი“).

Tuning:
  • `--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]))

პლუს: სწრაფი დაშბორდები, ნაკლები დატვირთვა CPU Prometheus- ზე.

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: clycabel 'trace _ id' ჰისტოგრამების ბაზრებში.
მოათავსეთ ეტიკეტები 'სერვისის', 'ვერსიის', 'region' „release compare- ისთვის“.
დაშბორდებზე - გამოშვების მენიუ (Git SHA/ვერსია).

10) მასშტაბები და გრძელვადიანი შენახვა

ფედერაცია: ზედა Prometheus აერთიანებს ქვედა (job/label ფილტრების მიხედვით).
Remote Write: რიგების გაგზავნა გრძელვადიანი შენახვის/მტევანი (Thanos/Cortex/Mimir).

უპირატესობები: გაუთავებელი რეტენინგი, ჰორიზონტალური სკალირება, გლობალური ხედვა.
უარყოფითი მხარეები: უფრო რთულია ოპერაცია, ღირებულება.
შარდინგი ფუნქციებში: ცალკეული ინსტანციები სისტემური მეტრიკისთვის, ბიზნესი, უსაფრთხო.

11) უსაფრთხოება

TLS/mTLS Prometheus targets/Alertmanager/remote _ write შორის.
ძირითადი/ავთენტიფიკაცია/targets და API (გაშვების კარიბჭის წინ).
RBAC: შეზღუდეთ UI/სერიებზე წვდომა როლებით; დაიმალეთ პირადი ეტიკეტები.
PII ჰიგიენა: არ დაწეროთ PII მეტრიკებში; გამოიყენეთ ჰეში/ფსევდონიმები.

12) Kubernetes პრაქტიკა

Prometheus Operator: CRD (ServiceMonitor, PodMonitor, Alertmanager, Prometheus).
kube-state-metrics + caDadisor - კლასტერის სრული სურათი.
Teinings და რესურსები: გამოყოფილი მოდელები მონიტორინგისთვის; CPU/RAM ლიმიტები.
ხმაურის დაქვეითება: სელექტორული ეტიკეტი „წარმოების“ ნეიმსპეისებისთვის, scrape _ interval პადინგი, სადაც შეგიძლიათ.

13) ბიზნეს მეტრიკა და პროდუქტი

Платежи: `payments_success_total{psp, currency}`, `payment_conversion_ratio`, `ttw_seconds_histogram`.
თამაშის აქტივობა: განაკვეთები/წუთები, სესიების გამართვა, როგორც gauge, შეცდომები.
რისკი/from: გამომწვევები სიჩქარის/გეოს ანომალიებში; ლოჯისტიკა ცალკე, მეტრიკა - აგრეგატები.

14) ღირებულება და შესრულება (FinOps)

აკონტროლეთ კარდინალობა (ახალი ეტიკეტის დამატებამდე).
ჰისტოგრამების სემპლინგი/იშვიათი ექსპორტიორები 'scrape _ interval' არაკრიტიკული ტარგეტებისთვის.
Downsampling გრძელი შენახვის ზურგჩანთებში.
დაშბორდის ქეშირება და ფართო მხარდაჭერა ჩანაწერებზე.

15) „სწრაფი დაწყების“ მაგალითები

RED- ის ექსპორტიორი განაცხადში (პითონი)

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/Microsoft Monitor, TLS/mTLS, relabel.
4. ჩართეთ ჰისტოგრამები საკვანძო ბილიკებისა და ექსპლარებისთვის.
5. შექმენით ჩანაწერები p95, success ratio, ბიზნეს ერთეულებისთვის.
6. შეიყვანეთ SLO ალერტები (burn rate) და Alertmanager ruting.
7. ასწიეთ dashbords: სერვისის map, release compare, გადახდები.
8. გადაწყვიტეთ ფედერაცია/remote _ write და ჭრა.
9. შეზღუდეთ წვდომა (RBAC), შეამოწმეთ PII არარსებობა.
10. ჩართეთ runbooks და თამაშის დღის შემოწმება.

17) ანტი შაბლონები

მაღალი კარდინალური ეტიკეტები (user/session/request _ id).
Summary ნაცვლად Histogram საკვანძო SLO - არ არის 'histogram _ quantile'.
Scrape „ყველაფერი ზედიზედ“ ფილტრაციის/როტაციის გარეშე არის ხარჯების და ხმაურის ზრდა.
ალერტები ნედლეულ მეტრიკებში SLO- ს გარეშე - ალერტ ფეტიგი.
ჩანაწერების არარსებობა არის „მძიმე“ დაშბორდები.
TLS/mTLS- ის გარეშე მეტრიკებში ნდობა შეცვლის/გაჟონვის რისკი.

შედეგები

Prometheus იძლევა iGaming პლატფორმას სამიზნეებთან დაკავშირებული დაკვირვებით: ზუსტი ჰისტოგრამები, სტაბილური აგრეგატები, მკაფიო SLO ალერტები და მრავალი რეგიონალური რუქის მასშტაბები. ეტიკეტის დისციპლინა, სწორი ჩანაწერების რულეტები, ტრეკები/ლოგოები და გააზრებული შენახვის არქიტექტურა უზრუნველყოფს სწრაფ გამოშვებებს და პროგნოზირებადი p99, თუნდაც პიკის მომენტებში.

Contact

დაგვიკავშირდით

დაგვიკავშირდით ნებისმიერი კითხვის ან მხარდაჭერისთვის.ჩვენ ყოველთვის მზად ვართ დაგეხმაროთ!

Telegram
@Gamble_GC
ინტეგრაციის დაწყება

Email — სავალდებულოა. Telegram ან WhatsApp — სურვილისამებრ.

თქვენი სახელი არასავალდებულო
Email არასავალდებულო
თემა არასავალდებულო
შეტყობინება არასავალდებულო
Telegram არასავალდებულო
@
თუ მიუთითებთ Telegram-ს — ვუპასუხებთ იქაც, დამატებით Email-ზე.
WhatsApp არასავალდებულო
ფორმატი: ქვეყნის კოდი და ნომერი (მაგალითად, +995XXXXXXXXX).

ღილაკზე დაჭერით თქვენ ეთანხმებით თქვენი მონაცემების დამუშავებას.