구조화된 Telemetry에 대한 이벤트 샘플링 전략
샘플링은 적격 이벤트의 하위 집합을 유지합니다. 전송 및 저장 볼륨을 줄일 수 있지만 데이터 세트가 응답할 수 있는 내용도 변경됩니다. 샘플링은 측정된 비용 또는 규모 문제를 따라야 하며 스키마 검토, 중복 제거 또는 보존 정책을 대체해서는 안 됩니다.
샘플링하기 전에 사용되지 않는 필드를 제거하고, 실수로 높은 카디널리티 값을 정규화하고, 중복 프로듀서를 중지하고, 텔레메트리 볼륨 레시피를 사용하여 이벤트 수와 페이로드 바이트를 측정합니다.
희귀하고 중요한 결과 보존
승인된 통제에서 달리 언급하지 않는 한, 최종 오류, 보안 관련 이벤트, 청구 기록, 사고 이정표 및 드물게 발생하는 워크플로 결과를 완전한 충실도로 유지하세요. 균일한 1% 샘플은 사고 중에 운영자에게 필요한 이벤트를 정확하게 지울 수 있습니다.
일반적인 시작 정책은 다음과 같습니다.
- 모든 실패, 시간 초과, 재시도 소진 및 명시적인 고객 영향 이벤트를 유지합니다.
- 제한된 사고 기간 동안 소규모 진단 허용 목록의 모든 이벤트를 유지합니다.
- 대량의 성공적인 결과만 샘플링합니다.
- 소량의 비즈니스 마일스톤은 샘플링되지 않은 상태로 유지합니다.
결정론적으로 샘플링
결정적 샘플링을 통해 관련 결정을 재현할 수 있습니다. 버전이 지정된 정책을 사용하여 request_id, trace_id 또는 account_id와 같은 안정적인 식별자를 해시한 다음 이를 목표 속도와 비교합니다. 동일한 식별자는 정책 버전이 변경되지 않은 상태에서 동일한 결정을 내려야 합니다.
기록:
sampled또는 이에 상응하는 수집 결과0.1와 같은sample_rate;api_success_v2와 같은sampling_policy;- 결정에 사용되는 안정적인 차원.
민감한 원시 해시 입력은 저장하지 마세요. 분석에서 단계가 계속 조인 가능하다고 예상하는 경우 워크플로의 모든 단계에 대해 독립적으로 새로운 무작위 결정을 생성하지 마십시오.
가중치 분석을 명시적으로 작성
성공적인 이벤트가 10%로 샘플링된 경우 보유된 각 성공은 정책 가정에 따라 약 10개의 적격 성공을 나타냅니다. 포함 확률을 저장하고 개수를 추정할 때 명시적 가중치를 사용합니다.
SELECT
route_template,
SUM(1.0 / sample_rate) AS estimated_requests
FROM api_request_completed
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
GROUP BY route_template
ORDER BY estimated_requests DESC;
가중 개수는 모든 통계를 자동으로 복구하지 않습니다. 꼬리 백분위수, 개별 사용자 수, 퍼널, 집단 유지 및 소규모 고객 세그먼트는 불안정하거나 편향될 수 있습니다. 분모나 서열 관계가 정확해야 하는 분석을 위해 샘플링되지 않은 데이터를 유지합니다.
정책 버전화 및 평가
비율을 변경하면 데이터 세트가 변경됩니다. 수집이 일정한 것처럼 쿼리가 호환되지 않는 기간을 비교하는 것을 피할 수 있도록 정책 버전과 유효 시간을 기록합니다.
평가:
- 보유된 이벤트 수 및 바이트입니다.
- 실패 및 드문 결과 보장.
- 샘플링되지 않은 고정 장치 또는 임시 홀드아웃에 대한 추정된 메트릭 오류입니다.
- 소량 경로, 계획 및 지역에 대한 세그먼트 적용 범위입니다.
- 샘플링된 데이터 세트가 더 이상 답변할 수 없는 질문입니다.
컬렉션 정책 변경으로 인한 볼륨 감소로 인해 제품 개선을 추론하지 마세요.
기록이 문제인 경우 보존 변경을 선호합니다.
샘플링하면 향후 행 적용 범위가 줄어듭니다. 보존은 정책에 정의된 기간이 지나면 오래된 데이터를 제거합니다. 현재 사고 세부 정보를 완전하게 유지해야 하지만 장기 기록에 비용이 많이 드는 경우 더 짧은 보존 정책이 더 적합할 수 있습니다. 샘플링과 별도로 데이터 보존 및 삭제를 검토합니다.
카디널리티가 높은 필드, 텔레메트리 비용 관리 및 데이터 품질 SQL 레시피를 계속 진행하세요.