MQTT · 2026-03-27

MQTT와 InfluxDB/Grafana로 시계열 파이프라인 구축

MQTT로 수집한 시계열 데이터를 InfluxDB에 저장하고 Grafana로 시각화하는 전체 흐름과 핵심 설정을 예제와 함께 정리한 기술 자료

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

개요

사물인터넷 환경에서 발생하는 센서값은 대부분 시계열 데이터다. 이 글에서는 mqtt influxdb 연동을 중심으로 mqtt 시계열 수집 파이프라인을 구성하는 방법을 단계별로 설명한다. 목표는 간단한 토픽(pub/sub) 송수신에서부터 InfluxDB 저장, Grafana를 통한 grafana mqtt 데이터 시각화까지의 흐름을 이해하는 것이다.

아키텍처 개요

기본 아키텍처는 다음 네 부분으로 구성된다.

  • 센서 또는 에지 디바이스: MQTT로 토픽에 데이터 발행
  • MQTT 브로커: 메시지 중계(Mosquitto, EMQX 등)
  • 데이터 수집기/수신기: Telegraf, Node-RED 또는 커스텀 구독기
  • 시계열 DB와 시각화: InfluxDB + Grafana

데이터 흐름 단계

1. 센서에서 MQTT로 발행

센서는 JSON 또는 간단한 라인 포맷으로 토픽에 값을 보낸다. 예를 들어 온도 토픽에 발행하는 명령은 다음과 같다.

mosquitto_pub -h broker.example.com -t sensors/room1/temperature -m '{"temp":23.5, "unit":"C"}'

2. MQTT 브로커 설정

브로커는 단순 중계 역할을 주로 한다. 인증과 토픽 정책을 설정하면 보안과 데이터 관리에 도움이 된다. 작은 환경에서는 Mosquitto를 사용하고 대규모에서는 EMQX나 HiveMQ를 고려한다.

3. 수집기(Telegraf)로 MQTT 구독 후 InfluxDB에 저장

가장 쉬운 방법은 Telegraf의 mqtt_consumer 플러그인을 사용하는 것이다. Telegraf는 데이터를 받아 InfluxDB로 전송해 준다. 주요 설정 예시는 다음과 같다.

[[inputs.mqtt_consumer]]
  servers = ["tcp://broker.example.com:1883"]
  topics = ["sensors/+/temperature"]
  data_format = "json"

[[outputs.influxdb_v2]]
  urls = ["http://influxdb:8086"]
  token = "YOUR_TOKEN"
  organization = "org"
  bucket = "sensors_bucket"

위 설정은 토픽 내 JSON 필드를 태그나 필드로 매핑하여 InfluxDB에 저장한다. 필드 타입과 태그화 여부를 적절히 결정하는 것이 쿼리 성능에 중요하다.

4. InfluxDB의 저장 포맷

InfluxDB는 라인 프로토콜을 사용한다. 수동으로 데이터를 보낼 때 예시는 다음과 같다.

measurement,location=room1 temperature=23.5 1617181723000000000

measurement는 센서 종류, 태그에는 고정 속성(위치 등), 필드에는 측정값을 넣는다. 타임스탬프는 나노초 단위를 사용한다.

5. Grafana에서 시각화

Grafana에서 InfluxDB를 데이터 소스로 추가하면 쿼리 빌더로 패널을 만들 수 있다. 시계열 그래프의 기본 쿼리는 measurement와 필드를 선택하는 방식이다. 패널 예시는 다음과 같다.

# InfluxQL 예시
SELECT mean("temperature") FROM "measurement" WHERE $timeFilter GROUP BY time($__interval) fill(null)

Grafana에서는 알람, 대시보드 공유, 반복 패널 템플릿 등을 활용해 운영 대시보드를 구성할 수 있다.

구현 시 고려사항

  • 데이터 스키마 설계: 태그는 고유 분류값으로, 빈번한 측정값은 필드로 설정
  • 메시지 직렬화: JSON 구조를 단순화하면 수집 성능 개선
  • 보안: MQTT TLS와 인증, InfluxDB 토큰 사용
  • 백필 및 유지보수: 장애 시 데이터 보전 정책과 롤오버 전략

간단한 예제 흐름

전체 흐름은 다음 단계로 요약된다.

  • 센서가 sensors/room1/temperature로 JSON 발행
  • Mosquitto가 메시지 중계
  • Telegraf가 mqtt_consumer로 구독 후 InfluxDB에 전송
  • Grafana에서 해당 버킷을 읽어 패널에 시계열 표시

운영 팁

  • 샤딩이나 retention 정책으로 스토리지 제어
  • 정기 인덱스와 태그 검토로 쿼리 성능 유지
  • 시뮬레이터로 부하 테스트 수행
  • 로그와 메트릭을 모니터링해 병목 요소를 탐지

마무리

mqtt influxdb 연동과 grafana mqtt 데이터 시각화는 비교적 단순한 구성으로도 빠르게 시작할 수 있다. 핵심은 메시지 포맷과 태그 설계, 그리고 저장 정책이다. 초기 구성 후에는 수집률과 쿼리 성능을 관찰하면서 인프라를 조정하면 안정적인 mqtt 시계열 수집 파이프라인 운영이 가능하다.

mqtt influxdb 연동 grafana mqtt 데이터 시각화 mqtt 시계열 수집 파이프라인 influxdb grafana mqtt telegraf 시계열 데이터