GH GambleHub

Prometheus:メトリックの収集

(セクション: 技術とインフラ)

概要

Prometheusは、HTTP上でターゲットをスクレイピングし、TSDBにシリーズを格納し、PromQLで集計をカウントし、Alertmanagerを介してアラートをトリガーします。iGamingの場合、これはSLOアプローチ(RED/USE、ビジネス支払い指標)、高速p95/p99診断、および自動ソリューション(フリーズ/ロールバック)の基礎です。

1)データモデルとカーディナリティ

メトリック:'name {label1=」v1」、 label2=」v2」} value@timestamp'。
Cardinality=すべてのユニークなラベルセットのパワープロダクト。主要な費用要因。

ラベルプラクティス:
  • 'service'、 'env'、 'region'、 'instance'、 'pod'、 'container'、 'version';
  • ドメイン:'route'、 'psp'、 'tenant'(注意!)、'game_provider'。
  • 'user_id'、 'session_id'、 random/high cardinal値を入れることはできません。

2)指標の種類

Counter-成長するだけ(例えば'http_requests_total')。
ゲージ-瞬時の値('queue_depth'など)。
ヒストグラム/サマリー-レイテンシ分布。prod-ヒストグラム('histogram_quantle()'とexemplarsをサポート)。
ネイティブヒストグラムは、精度を向上させ、サイズを保存する可変バケットです(利用可能な場所を含む)。

例(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。
サードパーティ:DB/キャッシュ (mysqld_exporter、 postgres_exporter、 redis_exporter)、 NGINX/HAProxy、 Kafka/RabbitMQ。
OTelメトリクス:OpenTelemetry Collector→Prometheus Remote WriteまたはPrometheus-receiver→を使用して共通のスタックを作成します。

4)スクレイプとリラベル: ターゲットを接続する方法

基本的な「プロメテウス」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プロメテウス演算子

手動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)→再起動からの迅速なリカバリ。
圧縮:ブロック圧縮、ディスク/CPUの節約。
保持:7-30日の熱いデータを保って下さい;長期-移動(スケーリングを参照)。

チューニング:
  • 「--storage」tsdb。保持しています。時間=15d'
  • 「--storage」tsdb。max-block-chunk-segment-size'
  • ドライブ:速いSSD/NVMe;不必要にネットワークボリュームを回避します。

6) PromQL: 基礎と頻繁なパターン

レート/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)録音ルールとパフォーマンス

前もって重い表現を考え、シリーズとして保存してください。

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)アラートを送信する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'をクリックできます。
メトリックに「release compare」のラベル'service'、 'version'、 'region'を入れます。
ダッシュボードで-リリースアノテーション(Git SHA/version)。

10)スケーリングおよび長期貯蔵

フェデレーション:上部Prometheusは下から集計されます(ジョブ/ラベルフィルタによる)。
リモート書き込み:長期ストレージバックエンド/クラスタ(Thanos/Cortex/Mimir)に行を送信します。

長所:無限保持、水平スケーリング、グローバルビュー。
短所:操作が難しい、コスト。
機能によるシャーディング:システムメトリクス、ビジネス、セキュリティのための個別のインスタンス。

11)安全性

Prometheus ↔/Alertmanager/remote_writeターゲット間のTLS/mTLS。
/targetsとAPIの基本/トークン認証(プロキシゲートウェイの前)。
RBAC: UI/シリーズへのアクセスをロールごとに制限します。プライベートラベルを非表示にします。
PII衛生:メトリックでPIIを記述しないでください。ハッシュ/エイリアスを使用します。

12) Kubernetesプラクティス

Prometheus Operator: CRD (ServiceMonitor、 PodMonitor、 Alertmanager、 Prometheus)。
kube-state-metrics+cAdvisor→クラスタの全体像。
Tainingsとresources:監視用の専用ノード;CPU/RAMの制限。
ノイズ低減:「生産」名前空間のラベルセレクター、可能な限りパディングscrape_interval。

13)ビジネスメトリクスと製品

Платежи: 'payments_success_total {psp、 currency}'、 'payment_conversion_ratio'、 'ttw_seconds_histogram'。
ゲームのアクティビティ:ベット/分、ゲージとしてセッションを保持、ドロップオフ時にエラー。
リスク/詐欺:速度異常/地理のトリガー。別にロギング、メトリクス-集計。

14)コストとパフォーマンス(FinOps)

カーディナリティ(新しいラベルを追加する前のタグレビュー)を制御します。
非クリティカルターゲットのヒストグラム/レアエクスポート→'scrape_interval'のサンプリング。
長期的なストレージ・バックエンドでのダウンサンプリング。
ダッシュボードキャッシングとレコーディングルールへの幅広い依存。

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.スクレイプ/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→alert-phatigのない生のメトリックに関するアラート。
録音ルールの欠如→「重い」ダッシュボード。
TLS/mTLSのないメトリクスを信頼する→なりすまし/漏洩のリスク。

概要

Prometheusは、正確なヒストグラム、安定した集計、SLOアラートのクリア、マルチリージョンマップへのスケーリングなど、iGamingプラットフォームの目標バインドの可視性を提供します。ラベルの規律、正しい録音ルール、トレース/ログリンク、思慮深いストレージアーキテクチャは、ピーク時でも迅速なリリースと予測可能なp99を提供します。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

Telegram
@Gamble_GC
統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。