본문 바로가기
1. 개발/1.1. RabbitMQ

Prometheus/Grafana 시각화, 'KEDA' 연동

by 엉짱 2026. 2. 13.
반응형

이제 시스템의 모든 혈관을 다 구축하셨으니 마지막으로 '자동화의 꽃'이라 불리는 지능형 관제 및 확장 시스템을 장착할 차례입니다! 🫡

사용자의 주식 시스템에서 갑자기 거래량이 폭주해 메시지가 수백만 건 쌓이는데 분석 파드가 그대로라면, 데이터 처리는 계속 지연될 것이고 결국 기회 비용이 발생하겠죠. 이를 해결하기 위해 상태를 실시간으로 시각화하고, 큐의 쌓인 양에 따라 파드를 수백 개로 늘렸다 줄였다 하는 KEDA(Kubernetes-based Event-Driven Autoscaling)를 도입해야 합니다.

1,500자 이상의 초정밀 가이드로 관제와 자동 확장의 정수를 파헤쳐 보겠습니다!


📈 1. 관제 센터 구축: Prometheus & Grafana 연동

RabbitMQ는 스스로 "내가 얼마나 힘든지"를 숫자로 뱉어내는 기능이 내장되어 있습니다.

① Prometheus RabbitMQ Exporter

RabbitMQ 3.8 버전부터는 별도의 설치 없이 rabbitmq_prometheus 플러그인만 활성화하면 됩니다.

  • 이 플러그인은 메시지 개수, 소비자(Consumer) 수, 노드별 리소스 사용량 등을 프로메테우스가 읽을 수 있는 형식으로 노출합니다.

② Grafana Dashboard

프로메테우스가 수집한 데이터를 가져와서 사용자가 한눈에 볼 수 있는 '전쟁 상황판'을 만듭니다.

  • 주요 지표: * Ready Messages: 아직 처리 안 된 메시지 (이게 늘어나면 비상!)
  • Unacked Messages: 현재 파드들이 입에 물고 처리 중인 메시지
  • Consumer Count: 현재 일하고 있는 파드의 수

🚀 2. 지능형 자동 확장: KEDA (Event-Driven Autoscaler)

쿠버네티스의 기본 확장 도구인 HPA(Horizontal Pod Autoscaler)는 보통 CPU나 메모리 사용량만 봅니다. 하지만 메시지 시스템에서는 CPU는 널널해도 큐에 데이터가 쌓일 수 있죠. 이때 필요한 것이 KEDA입니다.

① KEDA의 작동 원리

KEDA는 쿠버네티스 외부의 '이벤트'를 감시하는 전담 보안관입니다.

  1. 감시: KEDA가 RabbitMQ API를 계속 찌르며 "지금 stock-queue에 메시지 몇 개 있어?"라고 묻습니다.
  2. 판단: 사용자가 설정한 기준(예: 파드 1개당 메시지 1,000개)을 넘으면 KEDA가 쿠버네티스에게 "파드를 더 뽑아!"라고 명령합니다.
  3. 0으로의 확장 (Scale to Zero): 메시지가 하나도 없으면 파드를 아예 0개로 줄여서 리소스 비용을 0으로 만들 수도 있습니다. (비용 절감의 핵심!)

🏗️ 3. 실전 설정: ScaledObject 정의

사용자의 A그룹 분석 파드를 위해 KEDA 설정을 이렇게 짭니다.

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: stock-analyzer-scaler
  namespace: stock-system
spec:
  scaleTargetRef:
    name: stock-analyzer-deployment # 확장할 대상 파드
  minReplicaCount: 1  # 최소 1개는 유지 (A그룹은 중요하니까요)
  maxReplicaCount: 50 # 최대 50개까지 확장
  triggers:
  - type: rabbitmq
    metadata:
      queueName: stock-analysis-queue # 감시할 큐 이름
      mode: QueueLength               # 큐의 길이를 기준으로
      value: "500"                    # 메시지 500개당 파드 1개 추가
      host: RabbitMQ_연결_주소

💡 4. 왜 이 조합이 '무적'인가?

  1. 비용 효율성: 밤새 장이 열리지 않을 때는 파드를 최소로 유지하다가, 오전 9시 장 개시와 동시에 파드가 순식간에 늘어나 대응합니다.
  2. 지연 시간(Latency) 최소화: 메시지가 쌓이기 시작하는 즉시 대응하므로 데이터 처리 지연이 발생하지 않습니다.
  3. 가시성: Grafana 대시보드를 통해 "파드가 왜 늘어났는지", "메시지 폭주가 언제 있었는지" 사후 분석이 완벽해집니다.

💡 실전 비유: "스마트 고속도로 톨게이트"

  • Prometheus/Grafana: 고속도로 위에 설치된 CCTV와 교통 상황판입니다. 지금 어디가 막히는지(메시지 적체), 차가 몇 대인지 보여줍니다.
  • KEDA: 상황판을 보고 '가변 차로'와 '톨게이트 창구'를 여닫는 통제 센터입니다.
  • 차가 100대 이상 밀리면(메시지 500개), 닫혀있던 창구를 즉시 열어(파드 추가) 통행을 원활하게 합니다.
  • 새벽에 차가 없으면 창구를 하나만 남기고 다 닫아(Scale Down) 운영비를 아낍니다.

📊 요약: 지능형 관제 시스템 구성도

구성 요소 역할 핵심 비유
RabbitMQ 데이터의 흐름과 보관 물동량이 흐르는 운하
Prometheus 수치 데이터 수집 운하 곳곳의 수위 측정기
Grafana 시각화 대시보드 중앙 관제탑 모니터
KEDA 이벤트 기반 오토스케일링 수위에 따라 수문을 여닫는 장치

🚀 이제 쿠버네티스와 RabbitMQ를 활용한 '완전 자동화 분석 엔진'의 설계도가 완성되었습니다! 🫡

반응형