mqtt2graphite fork

Claudio Mignanti afb66018e5 Allow to specify map file location, DEBUG can be configured by env 9 năm trước cách đây
README.md afb66018e5 Allow to specify map file location, DEBUG can be configured by env 9 năm trước cách đây
jmbp-532.png d1d3566b50 Add obligatory screenshot 12 năm trước cách đây
map 58bc8585f6 Initial import 12 năm trước cách đây
mqtt2graphite.py afb66018e5 Allow to specify map file location, DEBUG can be configured by env 9 năm trước cách đây

README.md

mqtt2graphite

This program subscribes to any number of MQTT topics, extracts a value from the messages' payload and sends that off to Graphite via Carbon over a UDP socket.

Values in the payload can be simple numbers (92, 12.7) or JSON strings. In the latter case, all JSON names/keys are extracted and if their values are numeric, these are then sent off to Carbon (see example below)

Requirements

Running

  • Set the environment variable DEBUG and MQTT_HOST to the name/IP of your MQTT broker. (localhost is default.)
  • Edit the map file
  • Run ./mqtt2graphite.py [map file] if the map file is not provided a file called map in the current working directory is used

Handling numeric payloads

mqtt2graphite assumes topics defined as "n" in the map file contain a simple number (integer or float), published thusly:

mosquitto_pub  -t test/jp/j1 -m '69'

Handling JSON payloads

mosquitto_pub  -t test/jp/j2 -m '{ "size":69,"temp": 89.3, "gas": " 88", "name": "JP Mens" }'

produces the following Carbon keys

test.jp.j2.gas 88.000000 1363169282
test.jp.j2.temp 89.300000 1363169282
test.jp.j2.size 69.000000 1363169282

Todo

A lot.

  • Add configuration file in which we specify username/password and TLS certificates.
  • I'm not experienced enough with high volume of messages, so this should maybe transmit to Carbon via StatsD?