26S26h4

QK·6일 전

수정했습니다. 원본에서 깨져 있던 \#, \*, \. 같은 escape 문자와 __name__, strftime(), 문자열/들여쓰기 문제를 모두 정상 Python 문법으로 복구했습니다.

또한 실제로 두 시나리오를 실행해서 JSON 생성까지 테스트했습니다.

수정된 스크립트

synthetic_incident_generator.py 다운로드

문법/실행 검증

python3 -m py_compile synthetic_incident_generator.py

정상 통과했습니다.

기본 slow_drive:

python3 synthetic_incident_generator.py \
  --scenario slow_drive \
  --output synthetic_incident_payload.json

network_partition:

python3 synthetic_incident_generator.py \
  --scenario network_partition \
  --output synthetic_incident_payload_network.json

둘 다 실제 실행 및 JSON parsing까지 확인했습니다.

생성된 테스트 JSON도 확인할 수 있습니다.

특히 원본에서 눈에 띄는 문제였던:

now\.strftime(...)
now\.isoformat()
print("=" \* 65)
if **\_\_name\_\_** == ...

등은 모두 정상적인:

now.strftime(...)
now.isoformat()
print("=" * 65)

if __name__ == "__main__":
    main()

으로 수정했습니다.

그리고 원래 의도했던 Prometheus metrics + Pod logs + K8s events + incident metadata 구조는 그대로 유지했습니다.

===

실제 Kubernetes 환경에서 Robusta Standalone Webhook 또는 Collector가 장애 시점에 긁어모아 덤프한 것과 동일한 구조의 가상 Incident Context JSON을 생성하는 제너레이터 스크립트를 작성하겠습니다.

노드명, 파드명, 마운트 경로, 장애 유형(Slow Drive, Network Partition, OOM/Goroutine Spike) 등을 환경 변수나 CLI 파라미터로 동적 주입할 수 있어 사내 인프라 환경에 맞는 가상 골든 샘플(Golden Dataset)을 손쉽게 만들 수 있습니다.


실행 및 활용 방법

1. 환경 변수로 사내 네이밍 주입하여 생성

# 사내 노드/파드 네이밍 규칙 적용
export RCA_CLUSTER_NAME="corp-aistor-prod"
export RCA_TARGET_NODE="storage-worker-node-04"
export RCA_TARGET_POD="minio-pool-0-3"
export RCA_MOUNT_DRIVE="/mnt/directpv/nvme03"

python generate_synthetic_incident.py \
  --scenario slow_drive \
  --output ./test_incident_slow_drive.json

2. RCA Agent 파이프라인 연계

생성된 test_incident_slow_drive.json을 열어보면, Robusta가 수집한 실제 시계열 메트릭(15분간의 Spike 추이), 타임스탬프가 박힌 로그, K8s Event가 구조화되어 들어있습니다.

이 파일을 앞서 설계한 Incident RCA Agent의 Node 1(Symptom Normalizer) 입력값으로 전달하면:

  1. storage-worker-node-04의 /mnt/directpv/nvme03이 비정상임을 정규화 추출.
  2. Vector DB에서 관련 SOP 및 DirectPV 문서를 검색(Retrieval).
  3. "Slow Drive로 인한 분산 쓰기 지연" 가설을 생성 후 교차 검증(Cross-Check)하여 최종 완화 Runbook(mc admin drive offline ...)까지 도출하는 전체 플로우를 즉시 테스트할 수 있습니다.
profile
engineer

0개의 댓글