The HiveMQ Sparkplug Extension can be leveraged to gather MQTT Sparkplug metrics from HiveMQ and persist them into a InfluxDB database. This database can be used as the data source for a monitoring dashboard to monitor directly the data from the devices and gateways of a Sparkplug Infrastructure.
This extension is not yet ready for production use.
If you want to use this in production, please contact HiveMQ contact@hivemq.com
Installing the extension for HiveMQ is very easy:
hivemq-sparkplug-extension
, modify the sparkplug.properties
file to fit your needs. Check that
the mandatory properties from influxDB (host, port) are sethivemq-sparkplug-extension
to your [HIVEMQ_HOME]/extensions
folderThe Sparkplug Monitoring extension uses its own configuration file sparkplug.properties
. The extension won’t start if this file is missing or the required properties are not set.
2 InfluxDB example dashboards are provided in the deploy
subfolder of this extension.
Influx dashboard | Description |
---|---|
HiveMQInfluxDB-Dashboard.json | HiveMQ dashboard with the most useful hivemq metrics |
SparkplugInfluxDB-Dashboard.json | Sparkplug example dashboard, that vizualizes data of 2 edge nodes and their related devices. |
Config name | Required | Description | Default |
---|---|---|---|
influxdb.mode | no | The mode configured for the InfluxDB sender. Possibilities are: http, tcp, udp, cloud | http |
influxdb.host | yes | The host name of the InfluxDB instance. | |
influxdb.port | yes | The port number the InfluxDB instance is listening. | 8086 |
influxdb.protocol | no | The protocol the InfluxDB sender uses in http mode. | http |
influxdb.auth | no | The authorization string to be used to connect to InfluxDB, of format username:password. If mode “cloud” is used, the token must be passed here | |
influxdb.prefix | no | The measurement prefix. | |
influxdb.database | no | The database name. | hivemq |
influxdb.reportingInterval | no | The reporting interval in seconds. | 1 |
influxdb.connectTimeout | no | The connect and read timeout in seconds. | 5000 |
influxdb.tags | no | The tags for each metric. Listed as a semicolon ( ; ) separated list. |
|
influxdb.organization | only for mode: “cloud” | The organization to push data to | |
influxdb.bucket | only for mode: “cloud” | The bucket to push data to | |
sparkplug.version | no | The sparkplug version to be used | spBv1.0 |
Example Configuration to connect to a local influxdb 2.0
|
|
If you don’t already have an InfluxDB 2.0 instance set up, here is an instruction how to start and configure an InfluxDB instance with Docker.
docker run -p 8086:8086 -v $PWD:/var/lib/influxdb influxdb
The Extensions actual supports the Sparkplug B specification for a payload. The sparkplug schema is defined with protobuf.
After the extension is installed and an InfluxDB instance exists.
For testing purposes a simple HiveMQ docker file with the sparkplug extension, and a compose file for influxDB setup is available in the deploy/docker subfolder. Further a Kubernetes script for deploying hivemq with sparkplug extension setup in Kuberntes is available in the deploy/k8s
An influx dashboard example SparkplugInfluxDB-Dashboard.json is available in the deploy subfolder. The dashboard contains diagrams to monitor the Sparkplug online status of edge nodes and devices. It also gathered the sparkplug data values from the example devices.
If you want to contribute to HiveMQ Sparkplug Extension, see the Contribution Guidelines.
HiveMQ Sparkplug Extension is licensed under the APACHE LICENSE, VERSION 2.0. A copy of the license can be found here.