MQTT · 2026-03-09

MQTT 연동 로그 분석과 문제 탐지 기법

MQTT 연동 환경에서 생성되는 로그를 바탕으로 연결 이상, 메시지 손실, 성능 저하를 진단하고 브로커 및 클라이언트 디버깅 절차를 정리한 분석

작성일 : 2026-03-09 ㆍ 작성자 : 관리자
post
목차

개요

MQTT 시스템에서 로그는 문제의 실마리를 제공한다. 간단한 연결 실패부터 메시지 누락, 성능 저하까지 모두 로그로 흔적을 남긴다. 이 글은 처음 접하는 사람도 이해하기 쉽도록 로그 수집부터 분석, 브로커 중심 디버깅 흐름을 단계별로 정리한다.

MQTT 로그의 종류와 의미

클라이언트 로그

클라이언트 측 로그는 연결 시도, 인증 결과, 재시도 정책, Publish/Subscribe 결과를 포함한다. 클라이언트 라이브러리마다 포맷이 다르므로 로그 레벨과 타임스탬프 설정을 먼저 확인한다.

브로커 로그

브로커는 연결 수립, 세션 생성/삭제, 메시지 라우팅, QoS 처리 상태를 기록한다. 브로커 로그는 전체 토폴로지 관점에서 문제를 추적할 때 핵심 자료가 된다.

네트워크·시스템 로그

방화벽, 라우터, 운영체제 이벤트 역시 MQTT 동작에 영향을 준다. 패킷 손실이나 포트 차단 정보는 네트워크 로그에서 확인한다.

로그 수집과 전처리

분석 정확도를 높이려면 로그 타임스탬프 동기화와 포맷 통일이 필요하다. NTP로 시간을 동기화하고, 로그 수집기는 JSON 또는 공통 구분자 포맷으로 변환해 중앙 저장소로 보낸다.

표준 수집 절차

  • 시간 동기화(NTP)
  • 로그 레벨 설정(INFO/DEBUG 등)
  • 중앙화 수집(ELK, Graylog, Promtail + Loki 등)
  • 메타데이터 추가(호스트, 클라이언트ID, 토픽)

문제 탐지 기법

연결 이상 감지

연결 실패는 인증 오류, 네트워크 문제, 브로커 포트 차단 등 복합 원인으로 발생한다. 다음 항목을 우선 점검한다.

  • 클라이언트 로그의 CONNACK 코드 확인
  • 브로커 로그의 연결 제한 또는 인증 실패 메시지 확인
  • 네트워크 레벨에서 포트 접근성 점검
예시: 브로커 로그에서 CONNACK 확인
tail -n 200 /var/log/mosquitto/mosquitto.log | grep CONNACK

메시지 손실·중복 탐지

QoS 설정과 세션 지속성(persistent session)이 핵심이다. 메시지 누락이 의심되면 발행 측과 구독 측의 메시지 시퀀스 또는 고유 ID를 비교한다.

예시: publish/subscribe 로그에서 메시지 ID 확인
grep 'Received PUBLISH' /var/log/mqtt_client.log | awk '{print $1,$6,$8}'

성능 문제 탐지(지연, 스루풋)

레이턴시 지표를 수집해 임계값을 넘어서는 패턴을 찾는다. 브로커의 큐 길이, 연결 수, 스레드 풀 상태도 확인한다.

브로커 로그 디버깅 흐름

단계별 점검 체크리스트

  • 로그 레벨을 DEBUG로 올려 재현 시 상세 기록 확보
  • 특정 클라이언트ID나 토픽으로 로그 필터링
  • 에러 발생 시점의 시스템 자원(CPU, 메모리, 디스크) 확인
  • 네트워크 지연/패킷 손실 여부 점검
  • 브로커 설정(최대 연결 수, 큐 제한, 인증 정책) 검토

실제 명령어 예시

브로커 운영 로그 확인
journalctl -u mosquitto -n 500

특정 클라이언트 필터링
grep client123 /var/log/mosquitto/mosquitto.log

토픽 기반 로그 추출
grep 'topic/sensor' /var/log/mosquitto/mosquitto.log

사례: 연결 끊김과 메시지 누락 동시 발생

증상: 특정 시간대에 다수 클라이언트가 재연결을 반복하며 일부 메시지가 전달되지 않음. 분석 절차는 다음과 같다.

  • 브로커 로그에서 재연결 패턴과 타임스탬프 수집
  • 한계치 초과로 연결 거부가 발생했는지 설정 파일 확인
  • 네트워크 장애 로그와 대조해 동시성 여부 판단
  • 영향받은 토픽을 재재현해 QoS와 세션 지속성 검사

요약 및 권장 사항

로그는 문제 원인 규명에 가장 중요한 자료다. 수집을 표준화하고, 브로커·클라이언트 로그를 상호 대조하며 문제 탐지 규칙을 자동화하면 대응 시간을 크게 단축할 수 있다. 정기적으로 로그 모니터링 규칙을 검토하고, 장애 재현 절차를 사전 준비하는 것이 권장된다.

참고 예제

다음은 간단한 로그 파싱 워크플로우 예시이다.

1) 로그 수집: Filebeat or rsyslog -> 중앙 저장소
2) 색인 및 탐색: Kibana에서 토픽/클라이언트 필터링
3) 알람 설정: 재연결 빈도, 실패 비율 임계치 알람
mqtt 로그 분석 방법 브로커 로그 디버깅 mqtt mqtt 문제 추적 기법 MQTT 로그 브로커 로그 디버깅 로그 분석 IoT 모니터링