Skip to content


Folders and files

Last commit message
Last commit date

Latest commit



16 Commits

Repository files navigation


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

to install a mqtt2influxdb binary in your $GOPATH/bin.

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:

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")
    	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 defaultEncoding top-level entry).

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:



Although mqtt2influxdb is fairly flexible due to its template-based approach for building InfluxDB input lines, it might not completely suit you. In that case also consider InfluxData's telegraf.


A small program that subscribes to mqtt channels and publishes the data to an InfluxDB timeseries database.







No releases published


No packages published