모니터링
핵심 요약
라이선스 거부·재사용 시도·사용량·감사 검사·Outbox·미확정 환불을 관찰하세요. 현재 제공되는 것은 API/DB 지표이며 완성된 운영 대시보드는 아닙니다.
증상과 시간 범위를 확인하고 증거가 부족하면 임의 수정 대신 복구 조사를 시작하세요.
무엇을 어디서 보는가. 이 신호들을 위한 제공 대시보드는 없습니다 — API/DB 표면과 cron 동작입니다.
보안 이벤트 (security_events)
GET /api/v1/security-events[?lic_id=] — 셀러 범위, 테넌트 스코프, Worker 전용. PoP 가드가 모든 거부에서 기록합니다(license_blocked, replay/jti 재사용, jkt 불일치, 상품 드리프트) — 계약상 detail_json에 키, 토큰, PII 없음.
주의할 것: lic_id당 거부 스파이크(공유/리플레이 프로빙), 한 디바이스의 license_blocked 버스트, 재활성화 후 jkt 이상. 게이트웨이 도구 yetdapay_security_events와 yetdapay-license 스킬로도 도달 가능합니다.
사용량 및 카운터
GET /api/v1/usage-counters[?lic_id=]— 영속 카운터(테넌트 스코프).GET /api/v1/licenses/:id/usage— 라이선스별 실행 로그 + 카운터.- 경계:
license_usage행은 DevPay 호스티드/licenses/execute에서만 나옵니다 — BYOS 실행은 구조적으로 보이지 않습니다 (제한 사항 §3.5).
감사 체인 및 원장 무결성
audit_events행은 무결성 해시 체인입니다(actor,actor_role,action,entity,entity_id,detail_json,retention_class,legal_hold,integrity_hash).GET /api/v1/audit/verify와GET /api/v1/ledger/verify(admin) — 체인을 재계산합니다; 발산은 인시던트입니다.GET /api/v1/admin/audit(admin) — 감사 브라우징.
Outbox 및 cron
outbox상태:pending/claimed(리스) /delivered/dead_letter.*/5cron 디스패치는 로컬에서 검증됨; dead-letter 누적은 sink 다운 또는OUTBOX_SINK_URL미설정을 의미(없으면 전달은consumer:none— 테스트 환경에서 예상됨).- 오래된 클레임(>리스)은 대사의
failed_or_stuck_outbox검사로 자동 복구됩니다 — 대사 참조.
Health 및 메트릭
GET /api/v1/health→{ok, request_id}—ok는 D1 바인딩을 반영; 공개.GET /api/v1/metrics→{ok, request_id, metrics}— admin 전용.GET /api/v1/admin/overview— 플랫폼 운영자 요약.
환불 시도
GET /orders/:id/refund-attempts(셀러 소유자) — needs_review에 멈춘 시도는 수동 운영 항목; 스위퍼가 없습니다 (제한 사항 §4.15).