Skip to content

[Test] 실제 장애 주입으로 관측성 파이프라인 검증 - #339

Merged
Gimini-3 merged 2 commits into
developfrom
feature/338
Sep 13, 2026
Merged

Gimini-3 merged 2 commits into
developfrom
feature/338

Conversation

@Gimini-3

Copy link
Copy Markdown
Contributor

문제

DocGrid의 Backend·Queue·Embedding Provider 메트릭과 Prometheus·Alertmanager 설정은 계층별 검증이 있었지만, 실제 DB 상태와 Provider 프로세스에서 시작한 신호가 전체 경로를 통과하는지 반복 가능한 방식으로 검증하지 못했습니다. /actuator/prometheus 반복 호출이 운영 Snapshot SQL을 추가로 실행하지 않는지도 실제 HTTP와 PostgreSQL 통계로 확인할 근거가 필요했습니다.

변경

  • PostgreSQL 17 + pg_stat_statements, Redis, 실제 BGE-M3, Prometheus, Alertmanager, 로컬 webhook receiver를 매 시나리오마다 격리 실행하는 Drill Harness를 추가했습니다.
  • scrape-load, queue-recovery, provider-outage를 개별 또는 연속 실행할 수 있게 했습니다.
  • 동적 loopback port, 새 PostgreSQL volume, timeout, 실패 로그, 종료 정리를 기본 동작으로 만들었습니다.
  • 세 시나리오의 설계, 절차, 원본 JSON·webhook payload와 해석 한계를 docs/design/, docs/test-results/에 기록했습니다.
  • Alertmanager E2E의 종속 warning을 root-cause 등록 뒤 활성화해 동시 도착 순서에 따른 inhibition 테스트 경합을 제거했습니다. 운영 경보 설정은 바꾸지 않았습니다.

실측 결과

  • /actuator/prometheus 300회, 동시성 20: p50 8.404ms, p95 41.746ms, max 80.882ms
  • 최초 Snapshot aggregate SQL 3회, 300회 scrape가 추가한 aggregate SQL 0회
  • Worker 부재 condition → webhook 80.435초, Queue 정체 condition → webhook 340.428초
  • Worker 재개 → 실제 Job INDEXED 8.598초, Embedding 1건 저장
  • BGE-M3 stop → up=0 15.527초, firing webhook 99.358초
  • BGE-M3 restart → readiness 5.325초, resolved webhook 54.478초
  • 종속 warning은 suppressed, firing webhook 전달 0건

Alertmanager group_interval만 resolved 실험 시간을 제한하기 위해 운영 5분 대신 30초를 사용했습니다. 따라서 firing 수치는 운영 경로를 반영하고 resolved 수치는 테스트 설정 결과입니다. Provider root-cause는 실제 BGE-M3 중단으로 만들었으며, 종속 warning 하나만 inhibition을 독립적으로 확인하기 위해 API로 주입했습니다.

검증

  • ./monitoring/drills/run.sh all --output-dir /private/tmp/docgrid-drill-final
    • 3개 시나리오 PASS
  • ./monitoring/verify.sh --e2e
    • Prometheus 설정·운영 규칙 19개·rule test 3개
    • Alertmanager 설정 9개
    • Drill Python/Shell 문법과 Compose 렌더링
    • Prometheus → Alertmanager → webhook firing/resolved 각 2초, inhibition PASS
  • ./backend/gradlew -p backend test --no-daemon --rerun-tasks
    • 1,171개 성공, 실패·오류·건너뜀 0개

Closes #338

@coderabbitai

coderabbitai Bot commented Sep 13, 2026

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: f3cb5280-c7d0-4186-ab14-b690218c9f1c


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Gimini-3
Gimini-3 merged commit 54189c7 into develop Sep 13, 2026
2 checks passed
@Gimini-3 Gimini-3 self-assigned this Sep 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Test] 관측성 파이프라인 실제 장애 주입 및 부하 검증

1 participant