遙測和事件收集
1)任命和原則
目標是:- 分析、防凍、RG、合規和ML的單一和可預測的事件流。
- 端到端跟蹤(user/session/request/trace)和可重現性。
- 最小化PII並滿足隱私要求。
Принципы: schema-first, privacy-by-design, idempotency-by-default, observability-by-default, cost-aware.
2)事件分類
付款: '付款。deposit`, `payment.withdrawal`, `payment.chargeback`.
遊戲: "遊戲。session_start/stop`, `game.bet`, `game.payout`, `bonus.applied`.
自定義: 'auth。login`, `profile.update`, `kyc.status_changed`, `rg.limit_set`.
操作: 'api.request`, `error.exception`, `release.deploy`, `feature.flag_changed`.
合規性: 'aml。alert_opened`, `sanctions.screened`, `dsar.requested`.
每種類型都有所有者(域所有者),方案和SLO新鮮度。
3)計劃和合同
必填字段(最小值):- `event_time` (UTC), `event_type`, `schema_version`, `event_id` (UUID/ULID),
- `trace_id`/`span_id`, `request_id`, `user.pseudo_id`, `session_id`,
json
{
"event_id": "01HFY1S93R8X",
"event_time": "2025-11-01T18:45:12. 387Z",
"event_type": "game. bet",
"schema_version": "1. 4. 0",
"user": {"pseudo_id": "p-7a2e", "age_band": "25-34", "country": "EE"},
"session": {"id": "s-2233", "device_id": "d-9af0"},
"game": {"id": "G-BookOfX", "provider": "StudioA", "stake": {"value": 2. 00, "currency": "EUR"}},
"ctx": {"ip": "198. 51. 100. 10", "trace_id": "f4c2...", "request_id": "req-7f91"},
"labels": {"market": "EE", "affiliate": "A-77"}
}
方案的演變:語義版本;backward-compatible-我們添加不可分割的字段;破解-僅在具有雙重錄制時間段的新版本('/v2')中。
4)工具: 在哪裏和如何
4.1個客戶(Web/Mobile/Desktop)
帶有本地緩沖區的遙測SDK,擊球發送,指數回程。
自動事件:訪問,點擊,塊可見性,網絡活性(TTFB, LCP, CLS), JS錯誤。
ID: 「device_id」(穩定但私有),「session_id」(更新),「user」。pseudo_id`.
「噪音」防護:「event_id」,trottling,client-side采樣。
4.2服務器/後端
Ger/Tracer包裝紙(OpenTelemetry)→域事件的emit。
強制從邊緣/網關到所有下遊服務的「trace_id」。
域事件事務發布的Outbox模式。
4.3供應商/第三方
連接器(PSP/KYC/工作室)與主機電路正常化;轉化適配器。
Payload簽名/完整性檢查,周邊日誌(ingest audit)。
5) OpenTelemetry (OTel)
Traces:每個請求都收到「trace_id」;我們通過「trace_id」/「span_id」鏈接邏輯/事件。
Logs: 使用OTel Logs/轉換器;環境標簽'服務。name`, `deployment.env`.
度量標準:按服務劃分的RPS/latency/error-rate、業務指標(GGR,轉換)。
Collector:單一接收點/緩沖區/導出到Kafka/HTTP/grafic。堆棧。
6) ID和相關性
「event_id」是唯一性和冪等性。
`user.pseudo_id'是穩定的別名(單獨和受限制)。
「session_id」、「request_id」、「trace_id」、「device_id」是端到端分析的必備條件。
API網關和SDK級別的ID一致性。
7)采樣和量控制
規則:按活動類型,按市場,動態(自適應)負載。
準確拍攝的事件:付款/合規/事件-不采樣。
分析事件:10-50%允許在櫥窗中調整權重。
服務器側下載:允許高頻度度量。
8)隱私和合規性
最小化PII:令牌PAN/IBAN/電子郵件;在ingest中→ IP 地理代碼/ASN。
區域化:發送到區域內部(EEA/UK/BR)。
DSAR/RTBF:支持選擇性投影隱藏;法律交易日誌。
保留策略: 按類型劃分的時間表(分析更短,監管時間更長);Legal Hold.
9)運輸和緩存
客戶端→ Edge:HTTPS(HTTP/2/3),「POST/telemetry/batch」(最多100個事件)。
Edge → Sheena: Kafka/Redpanda通過「用戶」參與。pseudo_id`/`tenant_id`.
格式為:JSON(ingest),Avro/Protobuf(總線),Parquet(湖)。
可靠性:帶有jitter、DLQ、poison-pill絕緣的轉發。
json
{
"sdk": {"name":"igsdk-js","version":"2. 7. 1"},
"sent_at": "2025-11-01T18:45:12. 500Z",
"events": [ {... }, {... } ]
}
10)可靠性和相容性
客戶端生成的「event_id」+服務器祖先通過「(event_id,源)」。
服務上的Outbox,線程中的Exactly-Once語義(鍵入狀態+dedupe)。
按鍵內的順序:通過「用戶/會話」進行分期。
時間控制:NTP/PTP,有效漂移(例如≤ 200 ms),服務器上的「received_at」。
11)遙測(TQ)和SLO質量
Completeness: ≥ 99.T後關鍵類型事件的 5%。
Freshness: p95延遲交付至Silver ≤ 15分鐘。
Correctness: 有效方案≥ 99。9%, drop-rate < 0.1%.
Trace coverage:使用「trace_id」的查詢比例≥ 98%。
Cost/GB:按域劃分的ingest/存儲目標預算。
12)可觀察性和dashbords
最小小部件:- 按來源和地區分列的Lag ingest (p50/p95)。
- 按事件類型和市場劃分的完整性。
- 電路驗證/超額付費錯誤。
- SDK版本映射和舊客戶端百分比。
- Web-vitals相關性↔轉換/故障。
13)客戶端SDK: 要求
輕量級footprint,離線緩沖區,延遲初始化。
設置: 采樣,max batch size, max queue age, privacy mods (no-PII).
保護:封裝簽名/反標記,密鑰混淆。
更新:用於禁用嘈雜事件的功能標誌。
14)邊緣層和保護
利率限制,WAF,計劃驗證,壓縮(gzip/br)。
客戶上的Token bucket;反重播(「request_id」,TTL)。
刪除IP和UA →在「原始」付費之外進行標準化/富集。
15)與數據輸送機集成
青銅:不可逆的添加原料payload(用於偽裝)。
Silver:具有重復數據消除/豐富性的標準化表。
黃金:BI/AML/RG/產品展示。
事件和報告之間的Lynedge;轉換版本。
16)客戶質量分析
「安靜的客戶」比率(N小時內沒有事件)。
「風暴」(mass duplicate/burst)異常。
按版本和平臺劃分的「傳統SDK」份額。
17)流程和RACI
R:數據平臺(ingest/總線/驗證程序),App Teams(SDK工具)。
A: Head of Data/Architecture.
C:Compliance/DPO(PII/retention),SRE(SLO/事件)。
I: BI/營銷/風險/產品。
18)實施路線圖
MVP(2-4周):1.6-8類型的v1+JSON模式事件分類法。
2.SDK (Web/Android/iOS) с batch и sampling;Edge `/telemetry/batch`.
3.Kafka+青銅層;基本的驗證者和去世者。
4.Dashbord ingest lag/completeness, alerta on drop/驗證器。
第二階段(4-8周):- OTel收藏,跟蹤相關性;銀規範化和DQ規則。
- 區域終端(EEA/UK),privacy時尚,DSAR/RTBF程序。
- SDK版本卡,環輪自動滾動更新。
- Exactly-Once在線程中,Feature Store連接,反屬在線模擬。
- 電路和驗證器的Rule-as-Code,更改模擬(影響分析)。
- 成本優化:自適應采樣,Z-order/聚類到湖中。
19)發布前質量檢查表
- 已填充必填圖域和正確類型。
- 存在'trace_id'/'request_id'/'session_id'。
- SDK支持batch、retry、sampling。
- Edge驗證了電路並限制了付費負載的大小。
- 包括敏感字段的隱私過濾器和標記化。
- 設置了SLO/Alerts和dashbords。
- 域文檔(事件示例,所有者,SLA)。
20)頻繁的錯誤以及如何避免錯誤
原始事件無圖:輸入registry和CI驗證。
無等效性:要求「event_id」並存儲重復數據消除窗口。
PII和分析師的混合:分開mappings,掩蓋字段。
缺少tracing:通過gateway鋪設「trace_id」 →服務→事件。
非管理卷:應用采樣/trottling和預算配額。
全球無區域端點:使用區域化和數據駐留。
21)詞匯表(簡短)
OpenTelemetry(OTel)是預告片/度量/邏輯的開放標準。
Outbox是域事件的事務性發布。
DLQ是「bit」消息的隊列。
采樣-選擇事件的一部分以減少體積。
Data Residency-將數據存儲在正確的司法管轄區。
22)結果
設計精良的遙測是安排,而不僅僅是「發送日誌」:嚴格的方案,協調的標識符,默認的隱私,可靠的運輸,可觀察性和經濟成本。根據這篇文章,您將獲得穩定的事件流,準備使用可預測的SLO進行分析,合並和機器學習。