MQTT 브로커 메트릭 수집과 모니터링 핵심 항목
MQTT 브로커의 핵심 메트릭과 모니터링 항목을 초보자 관점에서 단계별로 설명하고 점검 우선순위를 정리한 체크리스트 형태의 기술 자료
목차
개요
MQTT 브로커는 경량 메시지 전송의 중심이다. 안정적인 운영을 위해서는 브로커 내부 상태와 주변 자원을 연속적으로 관찰해야 한다. 이 글은 mqtt 메트릭 수집 항목을 중심으로, 어떤 지표를 수집하고 어떻게 해석할지 실무 관점에서 정리한다.
모니터링의 목적과 기본 원칙
모니터링은 장애 예방과 원인 파악이 목적이다. 따라서 선택한 지표는 명확한 의미를 가져야 하며, 경보 임계값은 운영 환경을 반영해야 한다. 지표 수집은 가능한 한 저부하로 이루어져야 한다.
핵심 지표 분류
연결 관련 지표
- 연결 수(active_connections / clients_connected): 현재 접속된 클라이언트 수.
- 연결 시도 및 실패(connect_attempts_total, connect_failures_total): 인증 실패나 프로토콜 오류 파악.
- 세션 수(session_count) 및 세션 지속시간(session_duration): 세션 누수와 비정상 종료 감지.
메시지 관련 지표
- 입력/출력 메시지 속도(messages_in_total, messages_out_total): 메시지 처리량 추세.
- 메시지 지연(latency_histogram): 퍼블리시부터 서브스크라이버 전달까지의 지연.
- in-flight 메시지(mqtt_inflight_messages): QoS 처리 중인 메시지 수.
- retained 및 queued 메시지 수(retained_messages, queue_size): 저장소 부담 확인.
구독 및 토픽 관련 지표
- 구독 수(subscriptions_total): 토픽별 구독자 수 변화.
- 토픽별 트래픽(topic_message_rate): 인기 토픽 집중도 파악.
리소스 및 프로세스 지표
- CPU 사용률(process_cpu_seconds_total) 및 메모리(process_resident_memory_bytes).
- 디스크 사용량(특히 영속성 저장소와 로그 파일).
- 프로세스 업타임(process_start_time_seconds)과 GC 지표.
네트워크·보안 지표
- 네트워크 처리량(bytes_sent, bytes_received) 및 패킷 오류.
- TLS 핸드셰이크 실패 및 인증 실패 횟수(auth_failures_total, tls_handshake_failures_total).
- 비정상 연결 빈도(짧은 재접속 반복).
모니터링 우선순위와 임계값 설정
우선순위는 서비스 영향도가 큰 지표 위주로 정한다. 예를 들어 연결 수 급증, in-flight 메시지 누적, 디스크 사용량 임계 돌파는 즉각적인 조치 대상이다. 임계값은 실사용 패턴을 추적하며 점진적으로 조정한다.
권장 체크리스트
- 기본: 활성 연결 수, 메시지 입력/출력 속도, CPU/메모리 사용률.
- 중요: in-flight 메시지, 큐 크기, 디스크 사용량, TLS/인증 실패율.
- 심화: 토픽별 지연, 클라이언트별 메시지 패턴, GC 지표.
실전 예시: Prometheus 지표 네이밍
모니터링 도구가 Prometheus인 경우, 일관된 네이밍이 중요하다. 아래는 자주 쓰이는 메트릭 예시다.
mqtt_connections_total
mqtt_messages_in_total
mqtt_messages_out_total
mqtt_inflight_messages
mqtt_retained_messages
mqtt_subscriptions_total
mqtt_auth_failures_total
mqtt_tls_handshake_failures_total
process_cpu_seconds_total
process_resident_memory_bytes
샘플 스크래프 설정(예시)
간단한 Prometheus scrape job 예시. 운영 환경에 맞게 경로와 라벨을 조정한다.
scrape_configs:
- job_name: 'mqtt_broker'
static_configs:
- targets: ['mqtt-broker01:9310']
metrics_path: /metrics
scheme: http
알림과 대시보드 설계
경보는 증상 기반으로 설계한다. 예를 들어 in-flight 메시지 증가와 메시지 처리량 감소가 동시에 발생하면 처리 지연 경보를 발생시킨다. 대시보드는 현재 연결, 메시지율, 인플라이트, 디스크 사용, 인증 실패를 한눈에 볼 수 있게 구성한다.
운영 팁과 주의사항
- 메트릭 수집 자체가 브로커에 과부하를 주지 않도록 샘플 주기를 적절히 설정한다.
- 로그와 메트릭을 함께 분석하면 원인 파악 속도가 빨라진다.
- 토픽 폭주나 잘못된 클라이언트 행동은 빠르게 격리하는 절차를 마련한다.
- 배포 시 지표 수집 항목을 변경하면 과거 데이터와의 호환성을 고려한다.
정리: mqtt monitoring 체크리스트
핵심은 연결 상태, 메시지 흐름, 리소스 사용, 보안 실패, 지속성 저장 상태를 꾸준히 확인하는 것이다. 이 항목들을 기준으로 알림 임계값과 대시보드를 설계하면 브로커 운영 안정성을 크게 높일 수 있다.