STK-OBS-01 인프라 확장 — Kafka·Redis·exporter 도입

작업 내용

모니터링 대상 인프라 3종(MySQL·Kafka·Redis)을 모두 갖춘다. 기존 docker-compose.yml에 Kafka·Redis 컨테이너를 신규 추가하고, 3종 메트릭을 노출하는 exporter(mysqld-exporter·kafka-exporter·redis-exporter)를 함께 띄운다. exporter는 Prometheus 포맷 /metrics를 노출하는 독립 컨테이너로 둔다(ADR-005).

포트는 기존 점유(3306 qa-mysql·3307 batch·3308 stock-mysql)와 충돌하지 않게 배정한다(Kafka 9092, Redis 6379, exporters 9104·9308·9121).

롤백: 추가한 Kafka·Redis·exporter 서비스 블록 제거 후 docker compose up -d. 기존 MySQL은 무변경이라 영향 없음.

다이어그램

처리 흐름

sequenceDiagram
    participant Compose as docker-compose
    participant Kafka
    participant Redis
    participant Exp as exporters
    Compose->>Kafka: up (9092)
    Compose->>Redis: up (6379)
    Compose->>Exp: up (mysqld/kafka/redis-exporter)
    Exp->>Kafka: scrape 대상 연결
    Exp->>Redis: scrape 대상 연결

컨테이너 의존

flowchart LR
    MYSQL["mysql:8.0"]
    KAFKA["kafka"]
    REDIS["redis"]
    MEXP["mysqld-exporter"]
    KEXP["kafka-exporter"]
    REXP["redis-exporter"]
    MEXP --> MYSQL
    KEXP --> KAFKA
    REXP --> REDIS

테스트 케이스

  • Kafka·Redis 컨테이너가 healthcheck 통과 후 정상 기동한다.
  • mysqld/kafka/redis exporter의 /metrics가 각 포트에서 200으로 응답한다.
  • 기존 MySQL(3308)은 무변경으로 정상 동작한다(회귀 없음).
  • 포트 충돌 케이스 — 9092·6379·exporter 포트가 기존 점유 포트와 겹치지 않는다.
  • exporter 대상 인프라가 다운되면 exporter가 해당 메트릭을 down 상태로 노출한다.