RULE ENGINE
관측된 상황을 분석하고
근거 있는 해결방안을 제시한다
고객사 Zabbix 연동 모듈의 메트릭과 로그 수집기의 로그를 공통 형식으로 받아 지속 평가합니다. 이상 징후로 Incident를 만들고, 원인 후보와 해결방안을 규칙으로 점수화합니다. 필요하면 Ansible Playbook을 선택해 고객사 실행 모듈에 조치를 요청합니다.
고객이 전달한 문서와 샘플 코드, 구두 협의, 기존 AZeT 연동 코드를 함께 검토해 신규 룰엔진과 시뮬레이터의 공통 기준을 정리했습니다. 요구사항이 완성되지 않은 상태를 전제로, 대표 시나리오부터 고객과 공유하며 점진적으로 확장합니다.
EXECUTIVE SUMMARY
RULE ENGINE
고객사 Zabbix 연동 모듈의 메트릭과 로그 수집기의 로그를 공통 형식으로 받아 지속 평가합니다. 이상 징후로 Incident를 만들고, 원인 후보와 해결방안을 규칙으로 점수화합니다. 필요하면 Ansible Playbook을 선택해 고객사 실행 모듈에 조치를 요청합니다.
SIMULATOR
실제 Zabbix를 호출하지 않고 Zabbix 연동 모듈의 출력 역할을 모사합니다. 동시에 고객사 로그 수집기의 출력도 모사합니다. 룰엔진은 출처가 Simulator라는 이유로 다른 계산을 하지 않으며, 운영 데이터와 완전히 같은 계약으로 처리합니다.
시뮬레이터가 상황을 만들면, 룰엔진이 이를 분석·예측하고 해결방안과 안전한 조치를 결정합니다.
정답 비교 기능은 내부 회귀검증에만 선택적으로 사용하며 제품의 중심 역할은 실제와 유사한 상황 생성입니다.
CONFIRMED PRINCIPLES
기존 AZeT 안의 룰엔진·시뮬레이션 기능은 구현 기반으로 사용하지 않고 새 모듈로 설계합니다.
LLM, 생성형 AI, 외부 AI API, ML 모델 훈련 없이 명시적인 비즈니스 룰로 계산합니다.
고객이 직접 언급한 입력은 Zabbix가 수집한 메트릭이며, 이벤트는 필수 중심 모델로 가정하지 않습니다.
일반 인프라·애플리케이션 로그를 원인 분석의 증거로 사용합니다. 고객사가 수집기를 만든다고 가정합니다.
동일한 메트릭과 로그라면 운영 수집기와 시뮬레이터의 룰 평가 결과가 같아야 합니다.
실제 Zabbix를 경유하지 않고 Zabbix 메트릭 출력과 로그 수집기 출력을 직접 모사합니다.
우리는 Playbook을 선택하고 고객사 Ansible 실행 모듈을 호출합니다. Ansible 구동 자체는 고객사 책임입니다.
완성되지 않은 도메인 설계를 한 번에 고정하지 않고 시나리오 단위로 구현·시연·피드백합니다.
CURRENT AZET FACT CHECK
설계 결론: 시뮬레이터가 가짜 Zabbix 원시 itemId를 만들거나 ClickHouse에 직접 쓰게 하지 않습니다. 운영 연동과 시뮬레이터가 함께 사용할 표준 Telemetry Ingestion 경계를 만들고 그 뒤에서 저장·룰 평가를 동일하게 수행합니다.
TARGET ARCHITECTURE
sourceType은 감사·화면 표시·데이터 정리·환경 격리에는 사용하지만 RCA 점수와 조치 선택에는 사용하지 않습니다.TELEMETRY CONTRACTS
고객사 구현이 나중에 달라지면 Adapter에서 변환합니다. 룰엔진의 내부 계약은 안정적으로 유지하는 것이 목표입니다.
METRIC · azet.metric.v1
{
"messageId": "m-20260816-0001",
"customerId": "cust-001",
"environmentId": "dev-sim",
"assetId": "host-web-01",
"serviceId": "checkout-api",
"metricCode": "os.disk.usage",
"value": 91.7,
"unit": "percent",
"observedAt": "2026-08-16T14:31:00+09:00",
"source": { "sourceType": "SIMULATOR", "sourceId": "sim-01" },
"tags": { "mount": "/data", "region": "kr-central" }
}
LOG · azet.log.v1
{
"messageId": "l-20260816-0042",
"customerId": "cust-001",
"environmentId": "dev-sim",
"assetId": "host-web-01",
"serviceId": "checkout-api",
"hostName": "web-01",
"logType": "APPLICATION",
"severity": "ERROR",
"observedAt": "2026-08-16T14:31:08+09:00",
"message": "write failed: no space left on device",
"logger": "com.example.FileWriter",
"traceId": "trace-a91",
"source": { "sourceType": "SIMULATOR", "sourceId": "sim-01" },
"tags": { "mount": "/data" }
}
customerId + environmentId + assetId를 기본 상관관계 키로 사용하고, 서비스 문제는 serviceId를 추가합니다. hostName·IP·Pod 이름은 참고값입니다.
OS, APPLICATION, CONTAINER, KUBERNETES, DATABASE, MIDDLEWARE, NETWORK, SECURITY, CICD, SYSTEM, OTHER
TRACE, DEBUG, INFO, WARN, ERROR, FATAL, UNKNOWN으로 정규화합니다.
로그 batch 최대 500건·5MB, message 최대 64KB, tags 최대 32개를 초기 기본값으로 둡니다.
messageId로 멱등 처리하고, 시간대가 포함된 ISO 8601을 사용합니다. 지연 데이터는 버리지 않고 late arrival로 표시합니다.
토큰·암호·쿠키·인증 헤더 등 비밀정보를 수집기 또는 Ingestion 경계에서 마스킹합니다. 미매핑 자산은 격리 큐로 보냅니다.
전송 방식: 계약은 HTTP/RabbitMQ와 독립적으로 정의합니다. 초기 운영은 기존 AZeT 흐름과 맞춰 RabbitMQ를 우선 검토하며, 로그에는 별도 topic·queue·DLQ를 두는 방안을 권장합니다.
INCIDENT LIFECYCLE
CPU·Memory·Disk·Network 등 메트릭이 룰 임계치를 초과
아직 임계치 전이라도 증가율과 지속시간상 장애가 예상됨
오류 패턴이 발견되거나 지정 시간창 안에 반복 횟수 초과
Zabbix Problem·Alarm이 제공되면 추가 시작 조건과 증거로 사용
AI 예측이 아니라 임계치·증가율·지속시간·반복 패턴·상태 전이 룰로 가까운 시점의 장애 가능성을 계산합니다.
디스크 82% + 시간당 6% 증가 → 약 2시간 안에 95% 도달 가능메모리 사용량 지속 증가 + 회수 없음 → 고갈 위험10분간 오류 로그 빈도 4배 증가 → 서비스 장애 전조RULE ENGINE
ROOT CAUSE SCORE
ACTION SCORE
같은 디스크 문제라도 관측 증거에 따라 원인과 조치가 달라집니다.
SIMULATOR
정상 기준선 → 점진적 악화 → 위험 구간 → 장애 → 조치 후 회복을 시계열로 생성합니다.
메트릭 변화와 맞물리는 OS·애플리케이션·K8s·CI/CD 로그를 정확한 시각과 자산 ID로 생성합니다.
필요한 시나리오에서는 Zabbix Problem/Alarm 형식의 선택 신호도 모사할 수 있습니다. 필수 입구는 아닙니다.
고객·환경·자산·서비스, 변경 이력, 의존관계, 수집 누락과 조치 후 정상화까지 표현합니다.
OPTIONAL INTERNAL REGRESSION
시나리오 작성자는 기대 원인·허용 조치·금지 조치·복구 기준을 내부 검증 정보로 둘 수 있습니다. 이 값은 룰엔진에 전달하지 않으며 고객 시연에서는 상황 생성과 분석 흐름이 중심입니다.
고객 자료와의 차이: v2.3 문서는 Oracle과 자동 검증을 강조하지만, 현재 합의에서는 시뮬레이터의 주 역할을 운영 상황 생성으로 재정의합니다. 기존 샘플의 단순한 임계치 120% 값과 한 줄 로그보다 현실적인 시간 흐름을 구현해야 합니다.
FIRST THREE SCENARIOS
사용량 점진 증가 → 쓰기 실패 로그 → 헬스 체크 실패 → 원인 판정 → 정리 조치 → 복구 확인
메모리 지속 증가 → GC/회수 실패 → OOM 또는 헬스 체크 실패 → 진단·승인 조치
CPU 상승 → 응답 지연 → 오류율 증가 → 문제 프로세스 식별 → 진단 또는 제한 조치
첫 세로 슬라이스 권장: S-01 디스크 포화를 먼저 끝까지 구현합니다. Metric/Log 계약, Incident, RCA, Playbook 요청, 사후검증, Simulator 시간축을 한 번에 검증할 수 있습니다.
ANSIBLE PLAYBOOK BOUNDARY
REQUEST EXAMPLE
{
"requestId": "act-00019",
"incidentId": "inc-00481",
"playbookId": "safe-log-cleanup",
"target": { "assetId": "host-web-01" },
"parameters": { "path": "/var/log/app", "olderThanDays": 7 },
"reason": "disk capacity risk; log growth is top cause",
"riskClass": "R2",
"approval": { "required": false },
"idempotencyKey": "inc-00481:safe-log-cleanup:v1"
}RESPONSE STATES
실행 성공은 Incident 해결과 같지 않습니다. 룰엔진은 Playbook 완료 후 별도의 관찰 시간 동안 메트릭과 로그가 복구 기준을 만족하는지 확인합니다.
SCOPE & DECISION LOG
| 자료 표현 | 이번 구현 기준 |
|---|---|
| “AI prediction” | 임계치·추세·상태 전이·반복 패턴을 사용한 결정론적 예측 |
| “Feedback Learning” | 성공률 통계와 제한된 bias 또는 룰 변경 제안. 자동 ML 학습 아님 |
| “Self-Evolving” | 변경 제안 → 사람 승인 → 회귀검증 → Release Gate의 통제형 운영 |
| “Digital Twin / fault injection” | 실제 장비 장애 주입이 아니라 메트릭·로그·맥락의 합성 |
| 221 events / 884 causes | 완성 범위가 아닌 Seed 카탈로그. 대표 시나리오부터 검증 후 확장 |
| Phase 3 validation | 합성 데이터 검증 결과이며 실제 운영 정확도의 증명으로 사용하지 않음 |
INCREMENTAL DELIVERY
Metric/Log v1, Asset 식별, Incident 상태, 룰 정의 포맷, Simulator 시나리오 포맷을 고정합니다.
산출물Schema · API · 저장 경계디스크 포화 상황을 생성하고 감지·예측·RCA·Playbook 요청·복구 확인까지 연결합니다.
산출물고객 시연 가능한 첫 흐름승인, R1~R4, 멱등성, 실패·timeout, 고객 Ansible 모듈과의 Adapter를 보강합니다.
산출물안전한 조치 Workflow메모리 고갈과 CPU 급증으로 로그 상관관계·서비스 영향·다른 조치 유형을 검증합니다.
산출물재사용 가능한 룰·시나리오 패턴시연 결과에 따라 임계치·증거·조치·계약을 버전 관리하고 회귀검증합니다.
산출물승인된 고객별 Rule Pack| Iteration | 핵심 결과 | 고객 확인 Gate |
|---|---|---|
| 0 · 기준선 | 독립 모듈 경계 ADR, Metric/Log/Incident/Playbook/Scenario 계약, 두 서비스 골격, 연동 Stub | G0 · 구조와 실제 payload·식별자 확인 |
| 1 · S-01 데이터 | 디스크 정상→악화→복구 시계열과 상관 로그, 공통 Ingestion | G1 · 데이터 현실성 확인 |
| 2 · Detect/RCA | Incident 자동 생성, Evidence, 원인 3종과 설명 가능한 점수 | G2 · 원인·임계치·시간창 확인 |
| 3 · Action | R1~R4, Playbook 요청, 결과 수신, 사후검증 | G3 · Ansible API와 실행정책 확인 |
| 4 · 확장 | 메모리 고갈·CPU 급증, 승인·차단, 시나리오 제어 | G4 · 추가 시나리오 우선순위 |
| 5 · 안정화 | DLQ·재처리·격리·보안·관측성·Rule/Scenario 버전 관리 | G5 · 운영 합격선과 E2E 승인 |
독립 모듈 Architecture ADR + Metric·Log·Scenario Schema + 두 서비스 health 골격 + S-01 fixture만 포함합니다. 기존 내부 eventaction 경계와의 관계, 계약, 재현 가능한 입력을 먼저 고정한 뒤 판단 로직을 연결합니다.
CUSTOMER DOCUMENT SEED