mqtt2influxdb is a small and simple program that connects to an MQTT server, subscribes to MQTT topics, and publishes messages received to an InfluxDB database.
Building & installing
First make sure you have setup your Go environment. After having setup your
$GOPATH you can do a
go get github.com/mhe/mqtt2influxdb
to install a mqtt2influxdb binary in your
Alternatively you can clone this repository somewhere (for example in your
$GOPATH/src) and install the dependencies
cd mqtt2influxdb go get ...
Then build it:
go build .
Which should result in a binary in your working directory.
mqtt2influxdb has a number of commandline options. Invoking
mqtt2influxdb -h will print:
mqtt2influxdb Usage of ./mqtt2influxdb: -clientid string ClientID to use when connecting to MQTT broker. (default "mqtt2influxdb") -config string Configuration file containing the descriptions how to map MQTT messages to InfluxDB points. (default "mqtt2influxdb.toml") -database string Name of the InfluxDB database to use. (default "mqtt") -influxdb string InfluxDB host address. Should include both protocol (http or https) and port number. (default "http://localhost:8086") -mqtt string MQTT host (including port number). (default "localhost:1883") -test Print InfluxDB insert lines to stdout instead of actually submitting data.
How to map messages from an mqtt bus to points in a influxdb database is specified in a configuration file (using the TOML format).
Each mapping consists of three items:
topic: the mqtt topic to subscribe to. It can contain wildcards (e.g.,
template: a template (using Go's text/template) to build a line according to InfluxDB's line protocol.
encoding: specifies the encoding of the message, can be one of four: json, msgpack, binc, or cbor. It can be omitted if a default encoding is specified (the
See the provided example configuration file for more information.
Running in Docker
A basic Dockerfile is provided to create a docker image to run mqtt2influxdb in. Note that it is relatively unoptimized in terms of size. There are a couple of configuration parameters that can be specified using environment variables: