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

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

by syLim___ 2024. 11. 27.
728x90

์–ด์ œ๋Š” gui ํˆด์„ ์จ์„œ ํŽธํ•˜๊ฒŒ ์—ฐ๊ฒฐํ•˜๊ณ  ์‹ถ์–ด์„œ influxdb 2๋ฒ„์ „์„ ์‚ฌ์šฉํ–ˆ์—ˆ๋‹ค.

์˜ค๋Š˜์€ influxdb 1.8๋ฒ„์ „ ์ด๋ฏธ์ง€๋กœ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์„ผ์„œ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

โœ… Influxdb 1.8๋ฒ„์ „๊ณผ 2.0๋ฒ„์ „์˜ ์ฐจ์ด์ 

๐Ÿ“Œ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐฉ์‹์˜ ์ฐจ์ด

- 1.8 ๋ฒ„์ „์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด database์™€ measurements๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

- 2.0 ๋ฒ„์ „์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด bucket์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

๐Ÿ“Œ GLI์™€ GUI ์ง€์›

- 1.8 ๋ฒ„์ „์€ influx ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด CLI ํ™˜๊ฒฝ์— ์ ‘์†ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ์ฟผ๋ฆฌ๋ฅผ ๋˜์งˆ ์ˆ˜ ์žˆ๋‹ค.

- 2.0 ๋ฒ„์ „์€ ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜์˜ GUI ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , ์ฟผ๋ฆฌ๋„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿฅ Telegraf์™€ influxdb ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์—ฐ๋™ํ•˜์—ฌ mqtt ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ํ•˜๊ธฐ

 

โœ… Influxdb ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰์‹œํ‚ค๊ธฐ

์šฐ์„ , ์•„๋ž˜ ๋ช…๋ น์–ด๋กœ influxdb 1.8๋ฒ„์ „ ์ด๋ฏธ์ง€๋ฅผ ์ด์šฉํ•ด ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰์‹œ์ผœ์ค€๋‹ค.

docker run -d --name influxdb2 -p 8086:8086 -v $PWD/influxdb_data:/var/lib/influxdb influxdb:1.8

 

 

๊ทธ๋ฆฌ๊ณ  ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ influx cli ์‰˜๋กœ ์ ‘์†ํ•˜์—ฌ "telegraf"๋ผ๋Š” ์ด๋ฆ„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ค€๋‹ค.

~ $ docker exec -it influxdb2 influx

Connected to http://localhost:8086 version 1.8.10
InfluxDB shell version: 1.8.10
> CREATE DATABASE telegraf
> EXIT

~ $

 

 

โœ… telegraf ์„ค์ •ํŒŒ์ผ ์ž‘์„ฑํ•˜๊ธฐ

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 = ["#", "data/s/+/b/+/p/#"]
  qos = 0
  connection_timeout = "30s"
  data_format = "json"
  json_time_format = "unix"

# InfluxDB Output Plugin Configuration
[[outputs.influxdb]]
  urls = ["http://192.168.71.231:8086"]
  database = "telegraf"
  skip_database_creation = true

 

- mqtt_consumer ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ server ํ•ญ๋ชฉ์—๋Š” ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” mqtt ๋ธŒ๋กœ์ปค ์ฃผ์†Œ๋ฅผ ์ ์–ด์ฃผ์—ˆ๋‹ค.

 

- influxdb ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ urls ํ•ญ๋ชฉ์—๋Š” influxdb ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” host ์ปดํ“จํ„ฐ์˜ ip ์ฃผ์†Œ์ธ http://192.168.71.231:8086์„ ์ ์–ด์ฃผ์—ˆ๋‹ค.

 

    ์ฒ˜์Œ์—๋Š” ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์˜ ip ๋Œ€์‹  http://localhost:8086์„ ์ ์—ˆ์—ˆ๋Š”๋ฐ, influxdb์™€ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

# telegraf ์ปจํ…Œ์ด๋„ˆ ๋กœ๊ทธ
2024-11-27T04:13:45Z I! [inputs.mqtt_consumer] Connected [tcp://192.168.70.203:1883]
2024-11-27T04:13:55Z E! [outputs.influxdb] When writing to [http://localhost:8086]: failed doing req: Post "http://localhost:8086/write?db=telegraf": dial tcp [::1]:8086: connect: connection refused
2024-11-27T04:13:55Z E! [agent] Error writing to outputs.influxdb: could not write any address
2024-11-27T04:14:05Z E! [outputs.influxdb] When writing to [http://localhost:8086]: failed doing req: Post "http://localhost:8086/write?db=telegraf": dial tcp [::1]:8086: connect: connection refused
2024-11-27T04:14:05Z E! [agent] Error writing to outputs.influxdb: could not write any address

 

์›์ธ์€  telegraf ์„ค์ •ํŒŒ์ผ์—์„œ localhost๋Š” ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ telegraf ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

๊ทธ๋ž˜์„œ ๋ฐ˜๋“œ์‹œ localhost๊ฐ€ ์•„๋‹ˆ๋ผ ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์˜ ip๋ฅผ ์ ์–ด์ฃผ์–ด์•ผ ํ–ˆ๋‹ค.

 

(ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์˜ 8086 ํฌํŠธ์™€ influxdb์ปจํ…Œ์ด๋„ˆ์˜ 8086 ํฌํŠธ๊ฐ€ ๋งตํ•‘๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธ์ŠคํŠธ ์ปดํ“จํ„ฐ์˜ ip๋ฅผ ์ ์œผ๋ฉด telegraf ์ปจํ…Œ์ด๋„ˆ์—์„œ influxdb ์ปจํ…Œ์ด๋„ˆ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ)

 

 

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

์„ค์ •ํŒŒ์ผ์„ ๋‹ค ์ž‘์„ฑํ–ˆ์œผ๋ฉด, ์„ค์ •ํŒŒ์ผ์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ํ•ด์„œ

์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ telegraf ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‹คํ–‰ํ•ด์ค€๋‹ค.

docker run -d --name telegraf2 -v $PWD/telegraf.conf:/etc/telegraf/telegraf.conf:ro telegraf:latest

 

 

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

influxDB shell์— ์ ‘์†ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.

$ docker exec -it influxdb2 influx

Connected to http://localhost:8086 version 1.8.10
InfluxDB shell version: 1.8.10
> use telegraf
Using database telegraf
> show measurements
name: measurements
name
----
mqtt_consumer
> select * from mqtt_consumer limit 10

 

728x90