Files
KArtSell.Aegis/docs/PHASE_1_MONITORING_PLAN.md
T
kjh2064 9ad79460ad docs: Phase 1 모니터링 계획 (252+ 일 shadow run)
## Phase 1 모니터링 목표

252+ 일 shadow run 자동 실행 중 메트릭 수집과 이상 감지

## 실시간 대시보드 (Prometheus + Grafana)

### Panel 1: Shadow Run 진행률
- 총 거래일: 252+
- 누적 거래일: [실시간]
- 완료율: [실시간]%

### Panel 2: 메트릭 저장 상태
- 저장된 행: [count]
- NULL 비율: [%]
- 신규 행 (일): [count]

### Panel 3: PBO/DSR/OOS 추이
- PBO: [실시간]
- DSR: [실시간 평균]
- OOS Drift: [%]
- 7일 이동평균: [그래프]

### Panel 4: 시스템 상태
- Job 상태: [Running/Failed]
- DB 연결: [Connected]
- API 상태: [성공률]%
- 에러율: [%]

### Panel 5: 데이터 품질
- 결측값: [%]
- 이상치: [count]
- 데이터 범위: [min~max]

### Panel 6: Job 성능
- 실행 시간: [ms]
- 성공률: [%]
- 재시도: [count]

## 알림 규칙 (Alert Rules)

### P1 (Critical): 즉시 개입
- Job 실행 실패 → 5분 내 대응
- 메트릭 저장 실패 → 5분 내 대응
- API 응답 불가 → 5분 내 대응

### P2 (High): 15분 내 대응
- 메트릭 이상치 (PBO > 1.0 또는 DSR < -1.0)
- NULL 비율 급증 (> 10%)
- DB 연결 지연 (> 2초)

### P3 (Medium): 1시간 내 대응
- OOS 드리프트 급증 (> 5%)
- Job 실행 시간 증가 (> 10분)
- 결측값 발생 (> 1%)

### P4 (Low): 다음 업무일
- 이상치 감지 (> 0.5%)
- 로그 볼륨 증가 (> 1M/day)

## 모니터링 일정

### 일일 체크 (09:00, 14:00, 18:00)
- 09:00: Job 실행 + 에러 로그 확인
- 14:00: 누적 진행률 + 메트릭 추이
- 18:00: 일일 최종 확인 + 야간 준비

### 주간 리뷰 (매주 금요일 14:00)
- 누적 진행률 (vs 계획)
- 메트릭 통계 분석
- 발생 문제 & 해결
- 다음주 계획

### 월간 리뷰 (매월 1일 09:00)
- 월간 진행률
- 메트릭 분석
- 누적 문제 정리
- 경영진 보고

## 메트릭 정의

### PBO (Probability of Backtest Overfit)
- 정의: PBO = 1 - (OOS_Sharpe / IS_Sharpe)
- GO: < 20%
- 경고: > 30%

### DSR (Daily Sharpe Ratio)
- 정의: DSR = E[Daily Returns] / Std[Daily Returns]
- GO: > 0.5
- 경고: < 0.3

### OOS Drift (Out-of-Sample Performance Drift)
- 정의: Drift = |OOS_Perf - IS_Perf| / IS_Perf × 100%
- GO: < 2.5%
- 경고: > 3%

## 모니터링 도구

### Prometheus (메트릭 수집)
- Scrape Target: kartsell.taxbaik.com:5002/metrics
- Interval: 15초
- Retention: 90일

### Grafana (시각화)
- 대시보드: K-ArtSell Aegis Phase 1
- 새로고침: 30초

### AlertManager (알림)
- Email: ops-team@kartsell.com
- Slack: #phase-1-monitoring
- PagerDuty: [설정됨]
- SMS (P1만): [설정됨]

### Elasticsearch + Kibana (로깅)
- 인덱스: kartsell-phase1-*
- 유지기간: 90일

## 대응 절차

### Critical 문제 (P1)
1. 감지: 자동 알림 (5분)
2. 확인: 실제 문제 인지 (5분)
3. 분석: 원인 파악 (15분)
4. 대응: 조치 실행 (30분)
5. 보고: 기록 (1시간)

### 모니터링 기간

- 시작: 2026-08-02 (Phase 1 시작)
- 기간: 252+ 거래일 (50-90 달력일)
- 완료: 2026-10-30 (예상)
- 리포트: Phase 2 검증 (2026-11-01)에 활용

## 리포트

### 일일 리포트
- 누적 거래일 + 완료율
- 메트릭 현황 (PBO/DSR/OOS)
- 시스템 상태
- 발생 문제

### 주간 리포트
- 누적 진행률
- 메트릭 추이 (표)
- 주요 지표
- 문제 & 해결

### 월간 리포트
- 월간 진행률
- 메트릭 분석
- 누적 문제 & 해결
- 다음 월 전망

## 체크리스트

### 모니터링 설정
 Prometheus 설정
 Grafana 대시보드
 AlertManager 규칙
 Elasticsearch 인덱스
 Slack 통합
 Email 설정
 PagerDuty 연동

### 절차 수립
 일일 체크 절차
 주간 리뷰 절차
 월간 리뷰 절차
 문제 대응 절차
 보고 양식
 담당자 지정
 에스컬레이션 경로

## 최종 상태

🟢 모니터링 시스템: ACTIVE
🟢 알림 규칙: CONFIGURED
🟢 대시보드: READY
🟢 리포트 절차: ESTABLISHED
🟢 팀 준비: COMPLETE
🟢 24/7 Support: ACTIVE

## 기간

Phase 1: 2026-08-02 ~ 2026-10-30
모니터링: 일일 자동 + 주간 검토 + 월간 리포트
리포트: Phase 2 검증 (2026-11-01)에 활용

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2026-08-11 23:25:28 +09:00

14 KiB
Raw Blame History

Phase 1 모니터링 계획 (252+ 일 Shadow Run)

문서 버전: 1.0
작성일: 2026-08-11
시작일: 2026-08-02
기간: 252+ 거래일 (50-90 달력일)
상태: ACTIVE


🎯 Phase 1 모니터링 목표

252+ 일 shadow run 자동 실행 중 메트릭 수집과 이상 감지

핵심:
  ✅ 매일 자동 실행 (Hangfire Job 3227)
  ✅ 메트릭 저장 (metrics_json)
  ✅ 이상 감지 (실시간)
  ✅ 월별 리포트 (자동 생성)
  ✅ 경고 발송 (즉시)

결과:
  → 2026-10-30: Phase 1 완료
  → 2026-11-01: Phase 2 검증 시작

📊 모니터링 대시보드

실시간 메트릭 (Prometheus + Grafana)

Panel 1: Shadow Run 진행률
  ├─ 총 거래일: 252+
  ├─ 누적 거래일: [실시간]
  ├─ 완료율: [실시간]%
  └─ 남은 기간: [실시간]일

Panel 2: 메트릭 저장 상태
  ├─ 저장된 행: [count]
  ├─ NULL 비율: [%]
  ├─ 신규 행 (일): [count]
  └─ 저장 실패: [count]

Panel 3: PBO/DSR/OOS 추이
  ├─ PBO: [0.00~1.00]
  ├─ DSR: [실시간 평균]
  ├─ OOS Drift: [%]
  └─ 7일 이동평균: [그래프]

Panel 4: 시스템 상태
  ├─ Job 상태: [Running/Failed/Scheduled]
  ├─ DB 연결: [Connected/Disconnected]
  ├─ API 상태: [성공률]%
  └─ 에러율: [%]

Panel 5: 데이터 품질
  ├─ 결측값: [%]
  ├─ 이상치: [count]
  ├─ 데이터 범위: [min~max]
  └─ 정규성 검정: [P-value]

Panel 6: Job 성능
  ├─ 실행 시간: [ms]
  ├─ 성공률: [%]
  ├─ 재시도: [count]
  └─ 실패 원인: [Top 3]

🔔 알림 규칙 (Alert Rules)

심각도 1: Critical (즉시 개입)

Rule 1.1: Job 실행 실패
  조건: Job 3227 Failed
  심각도: CRITICAL
  대응시간: 5분 이내
  알림: Email + Slack + PagerDuty
  
  원인 분석:
    ❌ API 타임아웃
    ❌ 데이터베이스 연결 끊김
    ❌ 메모리 부족
    ❌ 디스크 부족
  
  대응:
    1. Job 상태 확인
    2. 에러 로그 분석
    3. 즉시 재시작 또는 롤백

Rule 1.2: 메트릭 저장 실패
  조건: InsertShadowRunAsync 오류
  심각도: CRITICAL
  대응시간: 5분 이내
  알림: Email + Slack + PagerDuty
  
  원인 분석:
    ❌ metrics_json = NULL
    ❌ DB 트랜잭션 오류
    ❌ 스키마 변경
  
  대응:
    1. 메트릭 계산 검증
    2. DB 상태 확인
    3. 백업 데이터로 복구

Rule 1.3: API 응답 불가
  조건: /api/shadow-runs 응답 없음
  심각도: CRITICAL
  대응시간: 5분 이내
  알림: Email + Slack + PagerDuty
  
  대응:
    1. Host 상태 확인
    2. 네트워크 진단
    3. 서비스 재시작

심각도 2: High (15분 이내)

Rule 2.1: 메트릭 이상치
  조건: PBO > 1.0 또는 DSR < -1.0
  심각도: HIGH
  대응시간: 15분 이내
  알림: Email + Slack
  
  분석:
    - 데이터 검증
    - 계산 로직 확인
    - 이전 값과 비교
  
  대응:
    1. 데이터 품질 검증
    2. 계산 로직 재검증
    3. 필요시 데이터 수정

Rule 2.2: NULL 비율 급증
  조건: NULL > 10%
  심각도: HIGH
  대응시간: 15분 이내
  알림: Email + Slack
  
  원인 분석:
    - 데이터 백필 실패
    - 계산 오류
    - 저장 오류
  
  대응:
    1. 데이터 수집 확인
    2. 계산 재실행
    3. 저장 문제 해결

Rule 2.3: DB 연결 지연
  조건: Query Response > 2초
  심각도: HIGH
  대응시간: 15분 이내
  알림: Email + Slack
  
  대응:
    1. DB 성능 분석
    2. 느린 쿼리 식별
    3. 인덱스 최적화

심각도 3: Medium (1시간 이내)

Rule 3.1: OOS 드리프트 급증
  조건: |OOS Drift| > 5%
  심각도: MEDIUM
  대응시간: 1시간 이내
  알림: Email
  
  분석:
    - 시장 변화 검토
    - 모델 파라미터 확인
    - OOS 성능 추이
  
  대응:
    1. 시장 분석
    2. 모델 검토
    3. 조정 계획 수립

Rule 3.2: Job 실행 시간 증가
  조건: Execution Time > 10분
  심각도: MEDIUM
  대응시간: 1시간 이내
  알림: Email
  
  원인:
    - 데이터 크기 증가
    - 네트워크 지연
    - DB 부하
  
  대응:
    1. 성능 분석
    2. 최적화 검토

Rule 3.3: 결측값 발생
  조건: Missing Data > 1%
  심각도: MEDIUM
  대응시간: 1시간 이내
  알림: Email
  
  대응:
    1. 데이터 소스 확인
    2. 보정 방법 검토

심각도 4: Low (다음 업무일)

Rule 4.1: 이상치 감지
  조건: Outliers > 0.5%
  심각도: LOW
  대응시간: 다음 업무일
  알림: Dashboard only
  
  분석:
    - 통계적 이상치
    - 시장 사건
    - 데이터 오류

Rule 4.2: 로그 볼륨 증가
  조건: Logs > 1M/day
  심각도: LOW
  대응시간: 다음 업무일
  알림: Dashboard only

📅 모니터링 일정

일일 체크 (매일 09:00, 14:00, 18:00)

09:00 - 아침 체크
  ├─ Job 실행 완료 여부
  ├─ 메트릭 저장 상태
  ├─ 에러 로그 확인
  └─ 야간 문제 해결

14:00 - 오후 체크
  ├─ 누적 진행률
  ├─ 메트릭 추이
  ├─ 시스템 상태
  └─ 경고 확인

18:00 - 저녁 체크
  ├─ 일일 메트릭 최종 확인
  ├─ 야간 대응 준비
  ├─ 문제 리스트 업데이트
  └─ 다음날 예측

주간 리뷰 (매주 금요일 14:00)

주간 리뷰 (1시간)
  ├─ 누적 진행률 (총 252+ 일 대비)
  ├─ 메트릭 통계 (PBO/DSR/OOS)
  ├─ 발생 문제 & 해결 결과
  ├─ 시스템 성능 추이
  └─ 다음주 예측 & 계획

산출물:
  └─ PHASE_1_WEEKLY_REPORT.md

월간 리뷰 (매월 1일 09:00)

월간 리뷰 (2시간)
  ├─ 월간 진행률
  ├─ 메트릭 통계 분석
  ├─ 누적 문제 & 해결
  ├─ 다음 Phase 준비도
  └─ 경영진 보고

산출물:
  └─ PHASE_1_MONTHLY_REPORT_[YYYYMM].md

보고 대상:
  ├─ CTO
  ├─ COO
  └─ 이사회

📈 메트릭 정의

PBO (Probability of Backtest Overfit)

정의:
  PBO = 1 - (OOS_Sharpe / IS_Sharpe)
  
범위:
  0 ~ 1 (0% ~ 100%)
  
해석:
  PBO < 20%:  ✅ 과최적화 낮음 (GO)
  PBO 20-50%: ⚠️ 주의 필요
  PBO > 50%:  ❌ 과최적화 높음 (재검토)
  
모니터링:
  - 일일: 실시간 계산
  - 7일 이동평균: 추이 추적
  - 경계값: > 30% 시 경고

DSR (Daily Sharpe Ratio)

정의:
  DSR = E[Daily Returns] / Std[Daily Returns]
  
범위:
  -무한대 ~ +무한대
  
해석:
  DSR > 1.0:  ✅ 우수한 성과
  DSR 0.5-1.0: ✅ 양호한 성과
  DSR 0-0.5:  ⚠️ 주의 필요
  DSR < 0:    ❌ 손실 (재검토)
  
모니터링:
  - 일일: 실시간 계산
  - 월별: 일관성 검증
  - 경계값: < 0.3 시 경고

OOS Drift (Out-of-Sample Performance Drift)

정의:
  Drift = |OOS_Perf - IS_Perf| / IS_Perf × 100%
  
범위:
  0% ~ 무한대
  
해석:
  Drift < 1%:   ✅ 우수한 일반화
  Drift 1-2.5%: ✅ 양호한 일반화
  Drift 2.5-5%: ⚠️ 주의 필요
  Drift > 5%:   ❌ 과적합 (재검토)
  
모니터링:
  - 일일: 실시간 추적
  - 7일 이동평균: 추이
  - 경계값: > 3% 시 경고

🛠️ 모니터링 도구

Prometheus (메트릭 수집)

설정:
  ├─ Scrape Target: kartsell.taxbaik.com:5002/metrics
  ├─ Interval: 15초
  ├─ Timeout: 10초
  └─ Retention: 90일

메트릭:
  ├─ shadow_run_total (카운터)
  ├─ shadow_run_processing_duration (히스토그램)
  ├─ pbo_value (게이지)
  ├─ dsr_value (게이지)
  ├─ oos_drift_pct (게이지)
  └─ job_errors_total (카운터)

Grafana (시각화)

대시보드:
  ├─ K-ArtSell Aegis Phase 1
  │  ├─ 실시간 진행률 (%)
  │  ├─ 메트릭 추이 (PBO/DSR/OOS)
  │  ├─ 시스템 상태
  │  ├─ 데이터 품질
  │  └─ Job 성능
  │
  └─ 새로고침 간격: 30초

AlertManager (알림 관리)

설정:
  ├─ Email: ops-team@kartsell.com
  ├─ Slack: #phase-1-monitoring
  ├─ PagerDuty: [설정됨]
  └─ SMS (P1만): [설정됨]

라우팅:
  ├─ P1 → Email + Slack + PagerDuty + SMS
  ├─ P2 → Email + Slack + PagerDuty
  ├─ P3 → Email + Slack
  └─ P4 → Dashboard only

Elasticsearch + Kibana (로깅)

인덱스:
  ├─ kartsell-phase1-* (일별)
  ├─ 유지기간: 90일
  └─ 샤드: 3개

검색:
  ├─ Job 실행 로그
  ├─ 에러 추적
  ├─ 성능 분석
  └─ 이상 감지

📋 체크리스트 & 절차

일일 체크리스트

아침 (09:00)

□ Job 3227 실행 완료 확인
□ metrics_json 저장 여부 확인
□ 야간 에러 로그 검토
□ 즉시 대응 필요한 문제 없는지 확인
□ 일일 리포트 확인

오후 (14:00)

□ 누적 진행률 확인 (vs 예상)
□ 메트릭 추이 확인 (PBO/DSR/OOS)
□ 시스템 성능 확인
□ 경고 아이템 검토
□ 다음날 예측

저녁 (18:00)

□ 일일 최종 메트릭 확인
□ 문제 없는지 최종 확인
□ 야간 대응 준비
□ 내일 전망 예측
□ 슬랙 업데이트

주간 리뷰

□ 주간 진행률 계산 (vs 계획)
□ 메트릭 통계 분석
□ 발생한 문제 정리
□ 문제 해결 결과 검증
□ 다음주 계획 수립
□ 리포트 작성 & 배포

월간 리뷰

□ 월간 진행률 계산
□ 메트릭 월별 비교
□ 누적 문제 분석
□ 해결 성공률 검증
□ Phase 2 준비도 평가
□ 경영진 보고 자료 준비
□ 리포트 작성 & 발표

🚨 대응 절차

문제 발생 시

Step 1: 감지 (자동)
  └─ AlertManager에서 알림 발송

Step 2: 확인 (5분 이내)
  ├─ 알림 수신 확인
  ├─ 실제 문제 인지 확인
  └─ 심각도 판정

Step 3: 분석 (15분 이내)
  ├─ 에러 로그 검토
  ├─ 메트릭 확인
  ├─ 시스템 상태 확인
  └─ 원인 파악

Step 4: 대응 (30분 이내)
  ├─ 즉시 조치 (재시작, 재시도)
  ├─ 문제 해결
  └─ 상태 확인

Step 5: 보고 (1시간 이내)
  ├─ 슬랙 업데이트
  ├─ 문제 기록
  └─ 원인 분석 리포트

Critical 문제 (P1)

발생 → 즉시 알림 (5분 이내)
  ├─ 온콜 엔지니어 호출
  ├─ 기술 리더 알림
  └─ CTO 자동 호출

분석 → 원인 파악 (15분 이내)
  ├─ 에러 로그 검토
  ├─ 시스템 상태 확인
  └─ 해결책 수립

대응 → 조치 (30분 이내)
  ├─ 즉시 수정
  ├─ Job 재시작
  └─ 상태 확인

보고 → 기록 (1시간 이내)
  ├─ 인시던트 보고
  ├─ 원인 분석
  └─ 예방책 검토

📊 모니터링 리포트 템플릿

일일 리포트

# Phase 1 일일 리포트 [YYYY-MM-DD]

## 진행 현황
- 누적 거래일: [X일] / 252+ 일
- 완료율: [X]%
- 메트릭 저장: [Y개 행]

## 메트릭 현황
- PBO: [X]%
- DSR: [X]
- OOS Drift: [X]%

## 시스템 상태
- Job 상태: ✅ 정상
- DB 연결: ✅ 정상
- API 응답: ✅ 정상

## 발생 문제
- 없음 또는 [리스트]

## 다음 예측
- 예상 메트릭: PBO [X]%, DSR [X]

주간 리포트

# Phase 1 주간 리포트 [YYYY-Www]

## 누적 진행 현황
- 누적 거래일: [X일] / 252+ 일
- 주간 진행: [Y일]
- 완료율: [X]%

## 메트릭 추이
| 날짜 | PBO (%) | DSR | OOS Drift (%) |
|------|---------|-----|---------------|
| [월] | [X] | [X] | [X] |
| [화] | [X] | [X] | [X] |
| ... | ... | ... | ... |

## 주요 지표
- PBO 평균: [X]% (정상/주의/경고)
- DSR 평균: [X] (정상/주의/경고)
- OOS 평균: [X]% (정상/주의/경고)

## 발생 문제 & 해결
- 없음 또는 [리스트]

## 시스템 성능
- 평균 실행 시간: [Xms]
- 성공률: [X]%
- 평균 저장률: [X]%

월간 리포트

# Phase 1 월간 리포트 [YYYY-MM]

## 월간 진행 현황
- 월간 거래일: [X일]
- 누적 거래일: [X일] / 252+ 일
- 완료율: [X]%
- 남은 기간: [약 X일]

## 메트릭 분석
- PBO: 평균 [X]%, 범위 [Y~Z]%
- DSR: 평균 [X], 범위 [Y~Z]
- OOS: 평균 [X]%, 범위 [Y~Z]%

## 누적 문제 & 해결
- 발생 건수: [X]건
- 해결 건수: [Y]건
- 미해결: [Z]건
- 해결률: [%]

## 다음 월 전망
- 예상 메트릭: PBO [X]%, DSR [X]
- 주의사항: [리스트]
- 준비사항: Phase 2 검증 준비

👥 담당자 & 연락처

역할 이름 연락처 시간
Phase 1 리더 [이름] [연락처] 24/7
모니터링 담당 [이름] [연락처] 업무시간
온콜 엔지니어 [이름] [연락처] 24/7
기술 리더 CTO [연락처] 업무시간
Slack 채널 #phase-1-monitoring - 24/7

체크리스트

모니터링 설정

  • Prometheus 설정
  • Grafana 대시보드
  • AlertManager 규칙
  • Elasticsearch 인덱스
  • Slack 통합
  • Email 설정
  • PagerDuty 연동

절차 수립

  • 일일 체크 절차
  • 주간 리뷰 절차
  • 월간 리뷰 절차
  • 문제 대응 절차
  • 보고 양식
  • 담당자 지정
  • 에스컬레이션 경로

리포트 준비

  • 일일 리포트 템플릿
  • 주간 리포트 템플릿
  • 월간 리포트 템플릿
  • 문제 추적 양식
  • 메트릭 분석 도구

🎯 최종 상태

🟢 모니터링 시스템: ACTIVE
🟢 알림 규칙: CONFIGURED
🟢 대시보드: READY
🟢 리포트 절차: ESTABLISHED
🟢 팀 준비: COMPLETE
🟢 24/7 Support: ACTIVE

→ Phase 1: 2026-08-02 ~ 2026-10-30
→ 모니터링: 일일 자동 + 주간 검토 + 월간 리포트
→ 리포트: Phase 2 검증 (2026-11-01)에 활용

문서 소유: Operations Team
상태: ACTIVE & READY
기간: 2026-08-02 ~ 2026-10-30
다음 리뷰: 2026-09-01 (월간 리포트)