관찰 및 원격 측정
(섹션: 기술 및 인프라)
간략한 요약
관찰 가능성은 "왜 이렇게 작동합니까?" 새로운 빌드가 출시되지 않았습니다. iGaming에서는 피크 토너먼트, 결제 피크, 다중 지역 및 책임있는 도박/PII 요구 사항이 중요합니다. 기초-SLO 계약, 소음 방지 경고 및 비용 관리와 함께 공통 식별자 및 표준 (OpenTelemetry) 으로 통합 된 메트릭, 로그, 추적.
1) 관찰 가능성 프레임 워크:- 측정 항목 (시간별 숫자): RED/USE, 비즈니스 KPI, SLI. TSDB에 보관되었습니다.
- 로그 (텍스트/JSON의 이벤트): 감사, 오류, 비즈니스 사실, 보안.
- 추적 (스팬): 서비스, 대기 시간, 지연 원인을 통한 경로 요청.
- 프로파일 링: CPU/메모리/eBPF 스트림, 힙/잠금 컨텐츠.
- RUM 및 합성: 실제 사용자 (웹/앱) + 로봇 검사.
- 원격 측정 카탈로그: 스키마, PII 정책, 보존 기간, 비용 태그.
2) 신호 분류 및 원리
RED 계정 API: 속도, 오류, 지속 시간.
인프라 사용: 활용, 포화, 오류 (CPU, 디스크, 네트워크, 대기열).
SLI/SLO: 측정 가능한 지표 (예: 성공적인 요청/모두, p95 대기 시간), 접근성 목표 (예: "99. 30 일 동안 9% "), 오류 예산 → 프로세스 트리거.
현명하게 카디널리티: 라벨은 컷 (지역/테넌트/제공자) 에 유용해야하지만 TSDB를 폭파시키지는 않습니다.
3) 표준 및 종단 간 상관 관계
OpenTelemetry (OTel): 메트릭, 로그 및 추적을위한 단일 SDK/프로토콜.
식별자: 'trace _ id', 'span _ id', 'correlation _ id', 'player _ id' (가명), 'payment _ route'.
흐름 ID: 게이트웨이 → 모든 마이크로 서비스 → 지불/PSP → 대기열/작업 → 로그/메트릭/스팬.
예: 상관 헤더
traceparent: 00-<trace_id>-<span_id>-01 x-request-id: <correlation_id>
4) 지표: 무엇과 방법 측정
명명/라벨
'service =' payment-api '', 'env = "prod"', 'region = "eu-west"', 'tentian', 'provesser =' pspX ''.
프로 메테우스 예
prometheus
RED http_requests_total{service="api",route="/deposit",method="POST",status="200"}
http_request_duration_seconds_bucket{service="api",le="0. 25",route="/deposit"} 1234 http_request_errors_total{service="api",route="/deposit"}
USE cpu_utilization_ratio{node="n1"} 0. 71 queue_depth{queue="withdrawals"} 128
Бизнес payments_success_total{psp="X",currency="EUR"} 4521 payment_conversion_ratio{route="pspX"} 0. 948
히스토그램 및 예제
대기 시간 히스토그램 (native-histograms/βuckets) 을 저장하고 'trace _ id' 로 모범을 묶어 "느린 버킷" 에서 특정 트랙으로 이동합니다.
5) 로그: 구조적이고 안전한
JSON 만 (prod에는 "자유 형식" 이 없음).
우표: '타임 스탬프', '심각도', '서비스', '추적 _ id', '상관 _ id', 'player _ id _ hash', '이벤트', '금액', '통화', 'ip _ hash'.
PII 마스킹/해싱, 민감한 경우 별도의 인덱스/보존.
로그 파이프 라인: 구문 분석 → 정규화 → 농축 (geo/ASN) → PII 편집 → 색인.
JSON 이벤트의 예
json
{
"ts":"2025-11-05T10:42:31Z",
"sev":"ERROR",
"service":"payments-api",
"event":"psp_timeout",
"trace_id":"9c5e...e2",
"route":"pspX",
"duration_ms": 3100,
"attempt":2,
"player_id_hash":"p:1b7f...",
"pii_redacted":true
}
6) 흔적: 시간이 손실되는 곳
스팬: 입력 요청, 공급자 통화 (PSP/게임 제공 업체), 데이터베이스/캐시, 서비스 간 RPC.
속성: 'db. 시스템 ',' net. 동료. 이름 ',' 메시징. 시스템 ',' psp. 경로 ',' 게임. 공급자 '.
- 볼륨에 대한 헤드 기반,
- 꼬리 기반 (조건 별: 오류, p95 +, VIP 세그먼트),
- 지불 보장/PII 크리티컬.
7) 전면 및 모바일의 관찰 가능성
RUM: TTFB, FCP/LCP/CLS/INP, JS 오류, 네트워크 및 차량 라우팅.
충돌 보고서: 상징, 난독 화, 빌드 버전, 장치/OS.
합성: 엔트리/예금/레이트 시나리오; 지리 분산 점검.
8) SLO, SLI 및 오류 예산
SLO 예 (의사 -YAML)
yaml service: payments-api sli:
- name: availability expr: sum(rate(http_requests_total{status=~"2.. 3.."}[5m]))
/ sum(rate(http_requests_total[5m]))
- name: latency_p95 expr: histogram_quantile(0. 95, rate(http_request_duration_seconds_bucket[5m]))
targets:
availability: "99. 9%/30d"
latency_p95: "<=250ms/30d"
error_budget_policy:
fast_burn: 5% for 1h -> page, freeze deploy slow_burn: 20% for 24h -> incident, improvement plan
"모든 메트릭" 이 아니라 오류 예산으로 경고합니다.
예산 연소를위한 동결 절차: 방출/카나리아 제한.
9) 소음없이 경고
다중 창, 멀티 번 규칙: 짧은/긴 창.
중복/근본: 통화 중 서비스/지역/중요도별.
런북 맵 및 컨텍스트 자동 수집 (최신 디스패치, 설정 변경, 종속성 그래프).
예정된 작업 중 조용한 시간과 억제.
예제 규칙 (PromQL 아이디어)
promql alert: PaymentsSLOFastBurn expr: slo_error_rate_5m > 2 slo_budget_rate for: 15m labels: { severity="page", service="payments-api" }
annotations:
summary: "SLO fast burn"
runbook: "https://runbooks/payments/slo"
10) 프로파일 링 및 eBPF
eBPF/프로파일 러: CPU/alloc 불꽃 그래프, I/O 대기 시간, 네트워크 드롭, Syscall 이상.
p99 병목 현상, 지터 및 희귀 동결에 유용합니다.
11) 비즈니스 관찰 가능성 (제품 및 위험)
금융/수익 창출: 예금 전환, TTW (시간 지갑), 저자 ./결제, 취소/요금 지불.
게임 활동: 유지/행진, 라이브 베팅 공유, 공급자의 "끈적 끈적함".
사기 방지/남용: 행동 속도, 장치/IP 일치, 상관 관계.
RG 지표: 긴 세션, "도곤", 스테이크 성장.
비즈니스 메트릭은 기술 메트릭 및 주석 이벤트와 관련이 있습니다.
12) 안전, PII 및 규정 준수
데이터 영역: 데이터 세트/로그 태그 ('pii = 참', '지역 = EU').
인덱싱 전에 마스킹, 식별자 앨리어싱.
감사를위한 WORM 매장; 역할 기반 로그 액세스.
보존 기간: 테크놀로지/감사/비즈니스마다 다릅니다.
통나무에서 원시 비밀의 금지; CI에서 스캔 검사.
13) 가치 관리 (FinOps)
카디널리티 한계: 'user _ id', 'setion _ id' 에주의하십시오.
참여/보존: 뜨거운 (7-14 일), 따뜻한 (30-90), 차가운 (보관).
테일 기반 샘플링 및 다운 샘플링 메트릭.
태그 '팀', '서비스', '테넌트' 에 의한 청구: "관찰 가능성을 태우는 사람" 이보고됩니다.
14) 도구 (참조 스택)
메트릭: 메트릭을위한 프로 메테우스/레이크, 대시 보드 Grafana.
통나무: Loki/ELK; 섭취 규칙, 감소/분석.
트레일: Tempo/Jaeger/OTel 수집가; 메트릭의 예제 링크.
합성: Blackbox 수출 업체, 브라우저 로봇.
경고: Alertmanner/채팅 통합, 통화 중 회전.
프로파일 링: eBPF/연속 프로파일 링.
15) 예: 구현 기초 빠르게
(a) API 용 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'])
def handle(req):
with lat. labels(route=req. route). time():
status = app(req)
reqs. labels(route=req. route,method=req. method,status=str(status)). inc()
(b) 로그에 흔적 추적 (미들웨어 아이디어):
go tid:= ctx. Value("trace_id")
logger = logger. With("trace_id", tid)
logger. Info("deposit-accepted", "amount", amt, "route", route)
(c) 메트릭스 인스턴스:
prometheus http_request_duration_seconds_bucket{..., le="0. 25"} 1023 # exemplar: trace_id=9c5e...
16) 프로세스 및 운영 체제
메트릭/레이블 (네이밍 가이드) 및 대시 보드 템플릿의 통합 사전.
열에서 자동으로 릴리스 주석.
사건: 카드, 타임 라인, RCA 요금 없음, 행동 항목.
훈련 경보 ("게임 데이"): 시뮬레이션 방울, PSP 지연, 캐시 과열.
런북: 단계별 지침 및 경고의 자동 링크.
17) 성숙도 점검표
1. OTel SDK/collector → 단일 메트릭/로그/트레일 수출.
2. RED/USE는 주요 API로 모든 서비스 + SLI/SLO를 다룹니다.
3. 상관 관계 'trace _ id' 는 우연한 메트릭 (예: 점프 링크) 을 로그합니다.
4. 멀티 번 및 runabook 링크의 예산 오류에 대한 경고.
5. "예금/비율/철회" 에 대한 RUM + 합성.
6. 화이트리스트 판매시 프로파일 링 (eBPF).
7. PII 정책: 마스킹, 영역, 액세스, 보존 기간.
8. 원격 측정 비용에 대한 재무 보고서 ('팀/서비스' 태그).
9. "피크로드 준비": 테스트 계획, 예열 캐시, 경고 템플릿.
10. 정규 RCA 및 SLO/임계 값 개정.
18) 안티 패턴
구조가없는 로그 "시트" 및 'trace _ id'.
각 메트릭 → 경고 FAT에 대한 경고.
올바른 버킷이없는 히스토그램 → "평평한" p95.
라벨의 무제한 카디널리티 → 가치의 폭발.
RUM/합성의 부족은 "모두 괜찮습니다" 이지만 사용자는 그렇지 않습니다.
기술자와 PII 혼합, 무기한 유지.
비즈니스 KPI와의 원격 측정 격리- "대기 시간도 감소하고 있습니다".
요약
강력한 관찰 성은 제품, SRE, 보안 및 지불 간의 공통 언어입니다. OTel의 메트릭, 로그, 트랙을 연결하고 오류 예산으로 SLO를 도입하고 스마트하고 비용을 관리 할 수있게함으로써 문제를 더 일찍 발견하고 더 빨리 회복하며 트래픽 피크 및 토너먼트로드를 통과 할 수있는 시스템을 얻을 수 있습니다.