모니터링 및 로깅
1) iGaming에서 중요한 이유
실시간으로 돈: 예금 수락, 즉시 지불, 베팅 및 상금 계산, 토너먼트-모든 것이 지연 및 실패에 민감합니다.
규제 및 감사: 조치의 전체 추적 가능성이 필요합니다 (KYC/AML, 지불, 책임있는 플레이 제한).
복잡한 분산 아키텍처: API 게이트웨이, 결제 오케스트레이션, EDA/Kafka, 공급자 서비스, 모바일 클라이언트, 전선, BI 버스.
목표는 MTTD/MTTR을 줄이고 금 신호에 SLO를 유지하고 입사 속도를 제공하는 것입니다.
2) 관찰 가능성의 기본 개념
로그: 조사 및 감사에 적합한 세부 이벤트 (구조화 된 JSON).
지표: SLO/경고에 적합한 시간 집계 (TSDB).
추적: 서비스/중개인/데이터베이스를 통한 요청 체인 (추적/스팬) 원인 및 결과 체인.
이벤트: 도메인 이벤트 (BetPlaced, DepositApproved) -비즈니스 지표와 기술 사이의 다리.
3) iGaming을위한 "황금 신호" 및 SLI/SLO
대기 시간: 중요 흐름에 대한 P95/P99 (인증, 예금, 속도, 세션 시작, 스핀).
트래픽: API에 의한 RPS, 결제에 의한 TPS, 이벤트 별 EPS.
오류: 5xx/4xx 점유율, 감소율, 고장난, 공급자 오류.
포화: CPU, 메모리, IO, Kafka 지연, DB 연결, 스레드 풀.
- SLI: '1- (지불 실패/총 지불)'
- SLO: 99. 30 일 동안 성공적인 카드 승인의 7% (오류 예산 0. 3%).
4) 수집 및 처리 아키텍처
1. 주입: 에이전트 (OTel Collector/Fluent Bit), 응용 프로그램의 SDK, RUM/synthetics.
2. 라우팅: 브로커/원격 측정 버스 (OTLP/SHT/GRPC), 필터 및 PII 마스킹.
- 측정 항목: TSDB (집계, 다운 샘플링).
- 로그: 핫 (인덱스 )/워름 (인덱스가 적음 )/콜드 (오브젝트 스토리지, WORM).
- 트레일: 유지 및 테일 샘플링이있는 시간 색인 스토리지.
- 4. 분석/경고: 규칙 (PromQL/LogQL/SQL), 트랙 및 릴리스와의 상관 관계.
- 5. 대시 보드: 기술 + 비즈니스 유형 (결제, RNG/제공 업체, 토너먼트 엔진).
5) 로그 표준 (JSON) 및 이벤트 분류
엄격한 JSON 로깅, 단일 키 및 레벨이 권장됩니다.
차이나 프로그램: 'DEBUG 지금 당신은 이렇게 말합니다. ',' 지불. ',' 게임 플레이. ',' 위험. ',' psp. ',' kyc. ',' rg. ',' 책임있는 게임), 'ops.'. 6) 상관 관계: trace _ id, correlation _ id, demempotency _ key 'trace _ id' (OTel), 'span _ id', 'correlation _ id' (비즈니스 프로세스의 종단 간), 'deidempotency _ key' (결제 요청) 를 각 로그 및 메트릭에 추가합니다. 7) 지표: 기술 및 비즈니스 기술: RPS, p95 대기 시간, 오류율, 채도, GC, 풀 사용량, Kafka 소비자 지연. 8) 추적 및 OpenTelemetry 우리는 게이트웨이, 결제 오케 스트레이터, 게임 코어, 알림, KYC/AML, 공급자와의 통합을 도구화합니다. 9) 소음없이 경고 다단계 임계 값 (경고/임계 값), 플래핑 억제, 중복 제거, 시간 슬롯. 10) 로그 검색 (예: LogQL) 목표는 신속하게 소음을 제거하고 대상 지역의 "고가의" 실패를 강조하는 것입니다. 11) 대시 보드: 필수 사항 지불 건강: PSP의 성공/실패, 방법에 의한 대기 시간, 지역지도, SLA 제공 업체. 12) 보관, 보존 및 비용 (FinOps) 제어중인 카디널리티: 변경 가능한 레이블 (user _ id) 이있는 메트릭을 피하십시오. 13) 안전 및 준수 PII/PCI: 토큰 화, 해싱, 마스킹; 데이터 최소화. 14) 원격 측정 데이터 품질 로그/이벤트에 대한 스키마 레지스트리 (버전, 호환성). 15) SRE 프로세스, 온라인 통화 및 런북 통화 매트릭스 및 에스컬레이션; 조용한 시간과 회전. 16) RUM 및 합성 RUM: WebVitals (LCP, CLS, INP), 전면 오류, 장치 지문, 지역/공급자. 17) 릴리스, 실험 및 phicheflags의 관행 트랙을 릴리스 버전 (커밋/인공물) 과 연결합니다. 18) 변칙적 탐지 및 사기 방지 신호 새 카드의 감소율/요금 회수 위험/서지에 대한 통계적 트리거 (계절성 인식). 19) 구현 로드맵 (단계별) 0 단계-기초: JSON 로그, 통합 상관 필드, 기본 서비스 지표, 일반 대시 보드, 첫 번째 경고. 20) 검토 점검표 부록 A: OpenTelemetry 속성 (권장 사항) '서비스. 이름 ',' 서비스. 버전 '', 배포 환경 ' '구름. 지역 ',' k8. 포드. 이름 ',' k8s. 컨테이너. 이름 ' '테넌트', '브랜드', '마켓', 'ab _ test', 'user _ segment' '지불. 방법 ',' psp ',' 게임. 제공자 ',' 게임. 아이 ' 부록 B: SLO 용 메트릭스의 예 'psp _ latency _ p99', 'report _ ttw _ p95' (시간 대 지갑), 'psp _ latency _ p99' 'game _ spin _ latency _ p95', 'provider _ order _ rate', 'kafka _ saver _ lag' (PHP 3 = 3.0.6, PHP 4) 부록 C: 빠른 조사 요리법 "'결제 _ 오류 _ rate' 성장" → PSP/지역/방법으로 비교하고 꼬리 흔적을 확인하고 어댑터 릴리스를 참조하십시오.
PII/PCI 보안 규칙:
json
{
"ts": "2025-11-04T19:45:31. 842Z",
"lvl": "AUDIT",
"event_type": "payment. deposit_approved",
"correlation_id": "c-7d2c1f0b",
"trace_id": "2d6a9c0e4c0b1f72",
"span_id": "9f3a81d2a1c3b764",
"request_id": "r-8f12de9e",
"tenant": "brand_eu",
"psp": "acq_xyz",
"user_id_hash": "u:sha256:1e63…",
"device_id": "d-3c8f…",
"ip_trunc": "203. 0. 113. 0/24",
"amount_minor": 5000,
"currency": "EUR",
"result": "approved",
"latency_ms": 312,
"tags": ["pci_safe", "kyc_passed", "low_risk"],
"extra": {
"bin": "411111",
"method": "card",
"region": "EU",
"ab_test": "checkout_v2"
}
}
슬라이스를 만들기 위해 수하물 (테넌트/브랜드, 시장, A/B 옵션) 을 옮깁니다.
비즈니스: CR registratsii → depozit, 성공적인 승인, 지불 취소, NGR/GGR, ARPPU, RTP 이상, KYC 단계에서의 하차, 책임 한도 공유.promql sum(rate(http_requests_total{status=~"5.."}[5m]))
/
sum(rate(http_requests_total[5m]))
오류/잠복 스팬 및 지불에 대한 총 흐름 + 테일 샘플링 (상승) 용 헤드 샘플링.
맥락 전파: 'traceparent '/' tracestate', Kafka 헤더, gRPC 메타 데이터.
주석은 'BetPlaced', 'WithinRequested' 와 같은 도메인 이벤트로 구성됩니다.
상관 관계: "5xx 성장" + "Kafka lag" + "p95 대기 시간 PSP" → 하나의 사건을 연관시킵니다.
SLO 기반 경고: 지출 오류 예산-에스컬레이션.
GitOps (Alerts-as-Code), 검토 및 규칙 테스트.yaml groups:
- name: payments rules:
- alert: PaymentErrorSpike expr: (sum(rate(payment_errors_total[5m])) / sum(rate(payment_attempts_total[5m]))) > 0. 02 for: 10m labels: { severity: "critical", team: "payments" }
annotations:
summary: "Payment errors> 2% per 10m"
runbook: "runbooks/payments/error-spike. md"logql
{app="psp-orchestrator", level=~"ERROR FATAL"}
= "decline"
json amount_minor > 10000 region="EU"
게임 코어: 공급자 별 RPS, p95 스핀, 오류비 SDK, 슬롯 별 RTP 이상.
플레이어 여행: registratsiya → KUS → depozit → igra → vyvod.
Infra: Kafka 지연, DB 연결, 캐시 적중률, Kubernetes 클러스터 (포드/노드 그리드).
리테이션: 핫 메트릭 30-90 일, 최대 13 개월 다운 샘플링; 7-14 일, 따뜻한 30-90 일, 추운 1-3 년 (규정을 고려하여) 기록합니다.
감사 로그의 WORM/불변성, Object Lock.
압축/분할 및 ILM 정책; 감사/PII 안전에 대한 별도의 지수.
INFO/DEBUG의 샘플링 로그; ERROR/AUDIT-완료.
RBAC/ABAC: 역할 별 차양 분리 로그/트랙에 대한 액세스.
비밀과 키: 자격 증명/토큰을 기록하지 마십시오. CI의 비밀 탐지기.
감사 추적: 관리자 패널 항목, 한도/결제 변경, 수동 잔액 조정-AUDIT 지수에만 해당됩니다.
법적 보류: 조사에서 보류를 동결시키는 메커니즘.
필드의 단일 명칭 (snake _ case, 측정 단위).
주사시 검증 (더러운 사건의 방울, 결혼 지표).
"로그 폭풍" 에 대한 역압 및 보호.
런북은 경고 (진단 단계, SQL/LogQL 레시피, 성능 저하를위한 phicheflags) 와 관련이 있습니다.
벌금이없는 사후, 소유자가있는 행동 항목 및 마감일.
팀 지표: MTTD/MTTR, 시끄러운 경고 비율, Runbuk 적용 범위.
합성: 다른 지역의 시나리오 "registratsiya → depozit → spin → vyvod"; 내부 경로의 개인 위치 (관리/백 오피스).
수하물 → 대시 보드의 A/B 태그 "SLI 실험 효과".
Canary/Blue-Green: 카나리아를위한 별도의 패널, 오류 예산 연소율.
상관 관계: "실패한 예금의 성장 + PSP 어댑터의 새로운 릴리스".
거의 실시간 반응에 대한 스트리밍 규칙 (Kafka → Flink).
1 단계 - 추적: OTel 계측, 헤드 + 테일 샘플링, 로그 연결.
2 단계-비즈니스 SLI/SLO: 결제/출력/게임 메트릭, SLO 경고, 오류 예산 프로세스.
3 단계-성숙도: 코드 경고, ILM, 별도의 보류, 이상 감지, 서비스 당 runbuki, CI/CD의 SRE 관행.
"p99 spins TP" trace →, front → geytvey → provayder 체크 제공 업체/채널, 스레드 풀 제한, 네트워크 재조정.
"Kafka lag q" → 건강 소비자, 복고풍 생산자, 역압, 느린 싱크/DB.