mqtt2graphite fork

Jan-Piet Mens d1d3566b50 Add obligatory screenshot vor 12 Jahren
README.md 272298a15b Show numeric PUB message vor 12 Jahren
jmbp-532.png d1d3566b50 Add obligatory screenshot vor 12 Jahren
map 58bc8585f6 Initial import vor 12 Jahren
mqtt2graphite.py b273c32863 log illegal payloads vor 12 Jahren

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

  • mosquitto.py
  • A running Carbon/Graphite server with UDP-enabled reception
  • Access to an MQTT broker. (I use Mosquitto)

Running

  • Set the environment variable MQTT_HOST to the name/IP of your MQTT broker. (localhost is default.)
  • Edit the map file
  • Run ./mqtt2graphite.py

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, TLS certificates, and path to the "map" file.
  • I'm not experienced enough with high volume of messages, so this should maybe transmit to Carbon via StatsD?