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';
  • دامنه: 'مسیر'، 'psp'، 'مستاجر' (احتیاط!)، 'game _ provider'.
  • شما نمی توانید «user _ id»، «session _ id»، مقادیر کاردینال تصادفی/بالا را قرار دهید.

2) انواع معیارها

شمارنده - فقط رشد می کند (به عنوان مثال، 'http _ requests _ total').
Gauge - مقادیر لحظه ای (به عنوان مثال، «queue _ depth»).
هیستوگرام/خلاصه- توزیعهای تأخیر. در prod - هیستوگرام (با پشتیبانی از «هیستوگرام _ چندک ()» و نمونه).
هیستوگرام های بومی سطل های متغیر هستند که دقت را بهبود می بخشند و اندازه را ذخیره می کنند (شامل موارد موجود).

مثال (برو):
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.
شخص ثالث: DB/caches (mysqld_exporter، postgres_exporter، redis_exporter)، NGINX/HAProxy، Kafka/RabbitMQ.
معیارهای OTel: از طریق OpenTelemetry Collector → Prometheus Remote Write یا Prometheus-receiver → به یک پشته مشترک.

4) Scrape and relabel: نحوه اتصال اهداف

«پرومتئوس» اصلي. من..

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'

کوبرنتس через اپراتور پرومتئوس

استفاده از ServiceMonitor/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.
نگهداری: نگه داشتن داده های داغ برای 7-30 روز ؛ بلند مدت - حرکت (نگاه کنید به پوسته پوسته شدن).

تنظیم:
  • "- ذخیره سازی. TSDB. حفظ و نگهداری زمان = 15 ثانیه
  • "- ذخیره سازی. TSDB. max-block-chunk-segment-size '
  • درایو: SSD سریع/NVMe ؛ اجتناب از حجم شبکه غیر ضروری.

6) PromQL: اصول و الگوهای مکرر

نرخ/خشم

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) ضبط قوانین و عملکرد

عبارات سنگین را از قبل در نظر بگیرید و به صورت سری ذخیره کنید.

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) هشدار и SLO (میزان سوختگی)

هشدار سوختگی (چند پنجره، چند سوختگی)

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) ارتباط با آثار و سیاهههای مربوط

فعالسازی نمونهها: قابل کلیک 'trace _ id' در سطلهای سابقهنما.
برچسب های «service»، «version»، «region» را برای «release compare» در معیارها قرار دهید.
در داشبورد - حاشیه نویسی انتشار (Git SHA/نسخه).

10) مقیاس بندی و ذخیره سازی طولانی مدت

فدراسیون: تجمع Prometheus بالا از پایین (توسط فیلتر کار/برچسب).
نوشتن از راه دور: ارسال سطرها به backends/clusters ذخیره سازی طولانی مدت (Thanos/Cortex/Mimir).

مزایا: نگهداری بی نهایت، مقیاس افقی، نمای جهانی.
منفی: سخت تر برای کار، هزینه.
Sharding by function: نمونه های جداگانه برای معیارهای سیستم، کسب و کار، امنیت.

11) ایمنی

TLS/mTLS بین اهداف Prometheus ↔/Alertmanager/remote _ write.
احراز هویت عمومی/نشانه برای/اهداف و API (در مقابل دروازه پروکسی).

RBAC: محدود کردن دسترسی به UI/سری توسط نقش ؛ برچسب های خصوصی را مخفی کنید

بهداشت PII: PII را در معیارها ننویسید ؛ از hashes/aliases استفاده کنید.

12) شیوه های Kubernetes

اپراتور Prometheus: CRD (ServiceMonitor، PodMonitor، Alertmanager، Prometheus).
kube-state-metrics + cAdvisor → یک تصویر کامل از خوشه.

Tainings and resources: گره های اختصاصی برای نظارت ؛ محدودیت های CPU/RAM

کاهش نویز: انتخابگرهای برچسب برای فضای نام «تولید»، scrape_interval padding در صورت امکان.

13) معیارهای کسب و کار و محصول

Платежи: 'payments _ success _ total {psp, currency}', 'payment _ conversion _ ratio', 'ttw _ seconds _ histogram'.
فعالیت بازی: شرط/دقیقه، جلسات برگزاری به عنوان سنج، رها کردن زمانی که اشتباهات.
ریسک/تقلب: باعث ناهنجاری های سرعت/جغرافیایی می شود ؛ ورود به سیستم به طور جداگانه, معیارهای - aggregates.

14) هزینه و عملکرد (FinOps)

کنترل کاردینالیتی (بررسی برچسب قبل از اضافه کردن یک برچسب جدید).
نمونه برداری هیستوگرام/صادرکنندگان نادر → 'scrape_interval'↑ برای اهداف غیر بحرانی.
Downsampling در ذخیره سازی طولانی مدت.
ذخیره سازی داشبورد و وابستگی گسترده به قوانین ضبط.

15) نمونه هایی از «شروع سریع»

صادر کننده قرمز در برنامه (پایتون)

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. هماهنگی برچسب ها و راهنمای توسط cardinality.
3. پیکربندی خراش/ServiceMonitor, TLS/mTLS, برچسب.
4. شامل هیستوگرام برای مسیرهای کلیدی و نمونه.
5. ایجاد قوانین ضبط برای p95، نسبت موفقیت، جمع آوری کسب و کار.
6. هشدارهای SLO (نرخ سوختن) و Alertmanager ریشه را وارد کنید.
7. بالا بردن داشبورد: نقشه خدمات، مقایسه انتشار، پرداخت.
8. تصمیم گیری در مورد فدراسیون/remote _ write و حفظ.
9. محدود کردن دسترسی (RBAC)، عدم وجود PII را بررسی کنید.
10. فعال کردن کتاب های اجرا و چک های روز بازی.

17) ضد الگوهای

برچسب ها با کاردینالیتی بالا (user/session/request_id).
خلاصه به جای هیستوگرام برای SLO های کلیدی → هیچ «histogram _ quantle» وجود ندارد.
خراش «همه در یک ردیف» بدون فیلتر کردن/چرخش → افزایش هزینه ها و سر و صدا.
هشدارها در معیارهای خام بدون SLO → هشدار phatig.
عدم وجود قوانین ضبط → داشبورد «سنگین».
اعتماد به معیارهای بدون TLS/mTLS → خطر کلاهبرداری/نشت.

خلاصه

Prometheus به پلت فرم iGaming قابلیت مشاهده هدف را می دهد: هیستوگرام دقیق، aggregates پایدار، هشدارهای SLO روشن و مقیاس بندی به یک نقشه چند منطقه ای. نظم و انضباط برچسب، قوانین ضبط صحیح، پیوندهای ردیابی/ورود به سیستم و یک معماری ذخیره سازی متفکر، نسخه های سریع و قابل پیش بینی p99 را حتی در زمان های اوج ارائه می دهد.

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

Telegram
@Gamble_GC
شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.