๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ์ธ ๊ณต๋ถ€/IoT

docker ์œ„์— telegraf, influxdb(2.x) ์ปจํ…Œ์ด๋„ˆ ์˜ฌ๋ ค์„œ mqtt ์„ผ์„œ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ํ•˜๊ธฐ

by syLim___ 2024. 11. 26.
728x90

โœ… influxdb ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

๋„์ปค ๋ณผ๋ฅจ ์„ค์ •์„ ์œ„ํ•ด ํ˜ธ์ŠคํŠธ ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์— `influxdb-config`๋ผ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘๊ณ , (๊ผญ ๋ฏธ๋ฆฌ ๋งŒ๋“ค ํ•„์š”๋Š” ์—†๋‹ค)

์•„๋ž˜ ๋ช…๋ น์–ด๋กœ influxdb ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•ด ์‹คํ–‰์‹œ์ผœ์ฃผ์—ˆ๋‹ค.

docker run -d --name influxdb -v ./influxdb-config/var/lib/influxdb:/var/lib/influxdb -v ./influxdb-config/etc/influxdb/influxdb.conf:/etc/influxdb/influxdb.conf -v ./influxdb-config/etc/initdb.d:/docker-entrypoint-initdb.d -p 8086:8086 influxdb

 

โœ… influxdb ์ดˆ๊ธฐ ์„ค์ •

localhost:8086 ์ ‘์†ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด influxdb ์ดˆ๊ธฐ ์„ค์ • ํ™”๋ฉด์ด ๋‚˜์˜จ๋‹ค.

 

๊ณ„์ • ์ •๋ณด์™€ ์กฐ์ง ์ด๋ฆ„, ๋ฒ„ํ‚ท ์ด๋ฆ„์„ ์ž…๋ ฅํ•ด์ค€๋‹ค.

 

์ดˆ๊ธฐ ์„ค์ •์ด ์™„๋ฃŒ๋˜๋ฉด, superuser ๊ถŒํ•œ์„ ๊ฐ€์ง„ API ํ† ํฐ์ด ์ƒ์„ฑ๋œ๋‹ค.

์ด API ํ† ํฐ์„ ์ž˜ ๋ณต์‚ฌํ•ด๋‘์–ด์•ผ ํ•œ๋‹ค.

 

 

โœ… telegraf ์„ค์ •ํŒŒ์ผ ๋งŒ๋“ค๊ธฐ

 

์œ„์—์„œ ์„ค์ •ํ•œ ์ •๋ณด๋“ค์„ ๊ฐ€์ง€๊ณ  `telegraf.conf` ๋ฅผ ์ž‘์„ฑํ•ด์ค€๋‹ค.

 

~/telegraf-config/telegraf.conf

# Global Agent Configuration
[agent]
  interval = "10s"
  round_interval = true
  metric_batch_size = 1000
  metric_buffer_limit = 10000
  collection_jitter = "0s"
  flush_interval = "10s"
  flush_jitter = "0s"
  precision = ""
  debug = false
  quiet = false
  logfile = ""

# MQTT Input Plugin Configuration
[[inputs.mqtt_consumer]]
  servers = ["tcp://192.168.70.203:1883"]
  topics = ["#"]
  qos = 0
  connection_timeout = "30s"
  data_format = "json"

# InfluxDB Output Plugin Configuration
[[outputs.influxdb_v2]]
  urls = ["http://localhost:8086"] # ๋งŒ์•ฝ ์ž˜ ์•ˆ ๋˜๋ฉด, ip๋ฅผ ์ง์ ‘ ์ž…๋ ฅํ•˜๋ฉด ๋˜๊ธฐ๋„ ํ•œ๋‹ค.
  token = "{API ํ† ํฐ}"
  organization = "{organization ์ด๋ฆ„}"
  bucket = "{bucket ์ด๋ฆ„}"
  precision = "s"

 

mqtt_consumer server ์ •๋ณด์—๋Š” ๋ฏธ๋ฆฌ ์˜ฌ๋ ค๋‘” mqtt broker ์ฃผ์†Œ๋ฅผ ์ ์–ด์ฃผ๊ณ ,

influxdb ์„ค์ •์—๋Š” ์•„๊นŒ ๋ณต์‚ฌํ•ด๋‘์—ˆ๋˜ API ํ† ํฐ๊ณผ, organization ์ด๋ฆ„, bucket ์ด๋ฆ„์„ ์ ์–ด์ค€๋‹ค.

 

โœ… telegraf ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰

์„ค์ •ํŒŒ์ผ์„ ์ €์žฅํ•˜๊ณ , telegraf ์ปจํ…Œ์ด๋„ˆ๋„ ์ƒ์„ฑํ•˜์—ฌ ์‹คํ–‰์‹œ์ผœ์ค€๋‹ค.

 

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋„์ปค ๋ณผ๋ฅจ ์„ค์ •์„ ์œ„ํ•ด ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์— telegraf-config ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ ,

ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ telegraf ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค์–ด ์‹คํ–‰์‹œ์ผœ์ค€๋‹ค.

docker run -d --name telegraf -v ./telegraf-config/telegraf.conf:/etc/telegraf/telegraf.conf:ro telegraf

 

 

โœ… ์ˆ˜์ง‘ ๋ฐ์ดํ„ฐ ํ™•์ธ

๋ธŒ๋ผ์šฐ์ €์—์„œ ๋‹ค์‹œ localhost:8086์— ์ ‘์†ํ•˜์—ฌ

์•„๊นŒ ๋งŒ๋“ค์–ด๋‘” ๋ฒ„ํ‚ท์„ ์„ ํƒํ•˜๊ณ  ์ฟผ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด submitํ•˜๋ฉด

mqtt ๋ธŒ๋กœ์ปค๋กœ๋ถ€ํ„ฐ ์ˆ˜์ง‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค!

 

ํ˜„์žฌ๋Š” ๋ธŒ๋กœ์ปค๋กœ๋ถ€ํ„ฐ ์˜ค๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ๋ฒ„ํ‚ท์— ๋ฌด์ง€์„ฑ์œผ๋กœ ๋ฐ€์–ด๋„ฃ๊ณ  ์žˆ์ง€๋งŒ,

telegraf.conf ํŒŒ์ผ์— ์„ธ๋ฐ€ํ•œ ์„ค์ •์„ ์ถ”๊ฐ€๋กœ ํ•ด์ค€๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•˜๊ธฐ ๋” ํŽธํ•  ๊ฒƒ์ด๋‹ค.

728x90