Skip to content

Subscribe to MQTT topics and push to Graphite's Carbon server

Notifications You must be signed in to change notification settings

isigmund/mqtt2graphite

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Installation and Configuration

  • Configure the mqtt2graphite init script carbon.hostname can be in the following formats: hostname -defaults to port 2004 hostname:port
pip install git+https://github.com/jpmens/mqtt2graphite.git
./init_server.sh mqtt.hostname carbon.hostname:port [Debug mode (True/False)]

Running

  • Edit the mqtt.hostname.conf file
  • Run or add this cmd supervisord -c /etc/supervisord.conf in your /etc/rc.local

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?

About

Subscribe to MQTT topics and push to Graphite's Carbon server

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 82.6%
  • Shell 17.4%