프로 메테우스: 메트릭 수집
(섹션: 기술 및 인프라)
간략한 요약
Prometheus는 시간 지표에 대한 산업 표준입니다. HTTP에 대한 대상을 긁어 내고 TSDB에 시리즈를 저장하며 PromQL에 집계를 계산하고 Alertmanager를 통해 경고를 트리거합니다. iGaming의 경우 이는 SLO 접근 방식 (RED/USE, 비즈니스 결제 지표), 빠른 p95/p99 진단 및 자동 솔루션 (동결/롤백) 의 기초입니다.
1) 데이터 모델 및 카디널리티
메트릭: '이름 {label1 = "v1", label2 = "v2"} 값 @ timestamp'.
Cardinality = 모든 고유 레이블 세트의 파워 제품; 주요 비용 요인.
- 차이나 프로그램: '서비스', 'env', '지역', '인스턴스', '포드', '컨테이너', '버전';
- 도메인: '경로', 'psp', '테넌트' (주의!), '게임 _ 제공자'.
- 'user _ id', 'sesion _ id', 랜덤/높은 기본 값을 넣을 수 없습니다.
2) 지표 유형
카운터-성장합니다 (예: 'http _ quirls _ total').
게이지 - 순간 값 (예: '큐 _ 깊이').
히스토그램/요약-대기 시간 분포. prod-Histogram에서 ('histogram _ quantile () 및 예제 지원).
네이티브 히스토그램은 정확도를 높이고 크기를 절약하는 가변 버킷입니다 (사용 가능한 경우 포함)
예 (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 _ extrater, cAdvisor/kubelet.
타사: DB/캐시 (mysqld _ producter, postgres _ extrater, redis _ extrater), NGINX/HAProxy, Kafka/RabbitMQ.
OTel 메트릭: OpenTelemetry Collector → Prometheus Remote Write 또는 Prometheus-reciver → 를 통해 공통 스택으로 제공됩니다.
4) 긁힘 및 관련: 대상 연결 방법
기본 '프로메테우스. 이름 '
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"
주석 K8 (연산자없이 단순화 됨)
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 d '
- '-스토리지 tsdb. 최대 블록 청크 세그먼트 크기 '
- 드라이브: 빠른 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]))
또한: 빠른 대시 보드, 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" }
Alertmanner: 서비스/지역 라우팅, 중복 억제, ChatOps.
9) 흔적 및 로그와의 상관 관계
예제 사용: 히스토그램 버킷에서 클릭 가능한 'trace _ id'.
메트릭에 "릴리스 비교" 라는 레이블 '서비스', '버전', '지역' 을 배치하십시오.
대시 보드에서-주석을 릴리스하십시오 (Git Ś/버전).
10) 스케일링 및 장기 스토리지
연맹: 상단 프로 메테우스는 하단에서 집계됩니다 (작업/라벨 필터 별).
원격 쓰기: 장기 스토리지 백엔드/클러스터 (Thanos/Cortex/Mimir) 로 행을 보냅니다.
장점: 무한 보존, 수평 스케일링, 글로벌보기.
단점: 운영하기가 더 어렵고 비용이 듭니다.
기능별 축소: 시스템 지표, 비즈니스, 보안을위한 별도의 인스턴스.
11) 안전
프로메테우스/알레르트 매니저/원격 _ 쓰기 대상 사이의 SL/mTLS.
프록시 게이트웨이 앞에서/대상 및 API에 대한 기본/토큰 인증.
RBAC: 역할별로 UI/시리즈에 대한 액세스를 제한합니다. 개인 레이블을 숨깁니다.
PII 위생: 지표로 PII를 작성하지 마십시오. 해시/별명을 사용하십시오.
12) Kubernetes 관행
프로 메테우스 운영자: CRD (ServiceMonitor, PodMonitor, Alertmanner, Prometheus).
kube-state-metrics + cAdvisor → 클러스터의 전체 그림.
테이닝 및 리소스: 모니터링을위한 전용 노드; CPU/RAM 제한.
노이즈 감소: "프로덕션" 네임 스페이스를위한 라벨 선택기, 가능한 경우 scrape _ interval 패딩.
13) 비즈니스 메트릭 및 제품
지불 및 성공, 통화} ',' 지불 _ 변환 _ 비율 ',' ttw _ secords _ histogram '.
게임 활동: 베팅/분, 세션을 게이지로 유지, 오류시 드롭 오프.
위험/사기: 속도 이상/지오에 대한 트리거; 개별적으로 로깅, 메트릭-집계.
14) 비용과 성능 (FinOps)
카디널리티를 제어하십시오 (새 레이블을 추가하기 전에 태그 검토).
중요하지 않은 대상에 대한 샘플링 히스토그램/희귀 수출 업체 → 'scrape _ interval' JA.
장기 스토리지 백엔드의 다운 샘플링.
대시 보드 캐싱 및 녹음 규칙에 대한 광범위한 의존.
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/ServiceMonitor 설정Name
4. 주요 경로 및 예제에 히스토그램을 포함하십시오.
5. p95, 성공률, 비즈니스 집계에 대한 기록 규칙을 작성하십시오.
6. SLO 알림 (연소율) 을 입력하고 Alertmanager를 근절하십시오.
7. 대시 보드 올리기: 서비스 맵, 릴리스 비교, 지불.
8. (PHP 3 = 3.0.6, PHP 4)
9. 제한 액세스 (RBAC), PII 부재 확인.
10. 런북과 게임 데이 확인 사용.
17) 반 패턴
카디널리티가 높은 레이블 (사용자/세션/요청 _ id).
주요 SLO에 대한 Histogram 대신 요약 → 'histogram _ quantile' 이 없습니다.
필터링/회전없이 "모두 연속" 스크래치 → 비용과 소음의 증가.
SLO → 경보 지표가없는 원시 지표에 대한 경고.
기록 규칙 부족 → "무거운" 대시 보드.
스푸핑/누출 위험이없는 지표를 신뢰하십시오.
요약
Prometheus는 정확한 히스토그램, 안정적인 골재, 명확한 SLO 경고 및 다중 지역 맵으로의 확장과 같은 iGaming 플랫폼 목표 바운드 관찰 성을 제공합니다. 라벨 분야, 올바른 기록 규칙, 추적/로그 링크 및 사려 깊은 스토리지 아키텍처는 피크 타임에도 빠른 릴리스와 예측 가능한 p99를 제공합니다.