Skip to content
nmbath edited this page Dec 21, 2023 · 8 revisions

Large Image containing Influxdb and Grafana

An extended version of the large image was investigated to hold influxdb and Grafana, allowing users with no or limited access to the internet to store and dashboard data.

Due to the restrictions on being 32bot, this meant that influxdb v1.0 had to be used, this has issues with index files once the database gets over 2Gb. This should not cause issues for normal day to day operation, but a large site trying to store lots of data with large history could run into issues.

The image consisted of the following components

  • Venus-InfluxDB-Loader, to take data from VenusOS via MQTT and load it into the influxdb.
  • InfluxDB, to store the data
  • Grafana, for dashboard reporting

Build

The following branches are used to build a large image.

Commits exist to add the following recipes to the build

  • go, added recipes from from openembedded-core so as too have the latest available.
  • rust/cargo, added recipes from openembedded-core so as too have the latest available.
  • influxdb, used multiple source to create the recipes.
  • grafana, used multiple source to create the recipes.
  • venus-influx-loader, created a new recipe.
  • venus-platform, modified the existing receipts to pull in the below branch.

Commits exist to add the following recipes to the build

  • gui, modified the existing recipes to pull in the below branch, to add the Grafana stack to the large menu.

Commit to extend the large menu to allow for starting and stopping the Grafana stack.

Commit to add support for the grafana and associated services starting and stopping.

Configuration and operation

Each of the three key services, venus-influxdb-loader, influxdb and graffana can be started through the GUI. This causes /service/venus-influx-loader; /service/influxdb; and /service/grafana to be started and stopped. These can manually be started and stopped by using the svc command.

Venus-influx-loader

The configuration file for this is stored in /data/conf/venus-influx-loader. The default configuration is pulled in from the receipt and is available here. This will connect to the local MQTT server, and therefore this must be started. At this time when grafana is started from the GUI, the system does not checked if it is running. A future change could be that on grafana startup, if MQTT is not running then an error should be displayed, or even MQTT started. It is configured to write to influxdb on localhost and port 8086.

The administration GUI is currently not built and deployed. There are issues with the build of this component within the openembedded build environment, so these need to be resolved. They relate to the build of the GUI element and needing to pre-build components. ADD DETAILS

If no Venus database exists, it will create one and set the retention period to 30 days. There is no configuration capability to change this, at this stage.

the service is started through /service/venus-influx-loader, which calls a startup script. This makes sure that a default config.json file exists in /data/conf/venus-influx-loader/, and if not copies one into that directory.

influxdb

The main configuration file is stored in /etc/influxdb. This is on the readonly environment, which is not an issue as there is generally no need to modify the configuration. The default configuration is populated by the build system and the file is available here.

Influxdb is started on port 8086; the RPC service has been moved from 8088 to 8087, due to some other service already using 8088 (INSERT WHICH)

Influxdb is configured to store data in /data/home/influxdb/storage/, this should be a symbolic link to some USB storage. The user will need to set this link up, some future iteration of the system should manage the external storage and define what is used for influxdb and create the symbolic link.

Influx is started through a /service/ file and svc. The run script calls a prepare script which checks that the influxdb home directory exists.

Grafana

The main configuration area for grafana is /data/conf/grafana. This is populated at initial start by the script called by the svc run script.

Clone this wiki locally