Is there any interest to discuss? Is this the best place to do so? (and of course let me know if this is already an active discussion somewhere that I missed )
I have seen some mention of this idea for awhile, mostly about:
- polling devices at different intervals (1 minute and 5 minute polling on the same server, Feature request: Custom polling frequency, Run difference poller groups:)
- updated graphs (Better rrd graphs, User survey results May 2017, https://github.com/librenms/librenms/projects/8#card-35736121)
I started a pull request (a hack at best) to expose RRD data via web API, but as @murrant suggested, it should be built as a proper class: https://github.com/librenms/librenms/pull/12086/. (I ended up building it as a plugin to librenms that converts rrdgraph queries to rrdxport queries and returns data in JSONTIME format, but again it’s “just okay”)
I see some projects using RRD as backend that have a better frontend graphing replacement - https://github.com/mbolli/nfsen-ng - that may be an easy way to switch the frontend away from RRD graphs, which would allow the time-series database to be replaced eventually.
There are some decent options for graphing libraries like dygraphs, chartjs, visjs.
Once the graphs are replaced, it would make sense to replace RRD with an existing supported TSDB - but which would be best as a primary replacement?
Another option could be to implement a setting in the LibreNMS web UI to use an existing Grafana installation as the graphing engine, which could use any supported time-series database. Embed/iframe? I’m not very familiar with Grafana, but I assume this is possible.
I would love to help with this any way I can, but I’m not sure I have the PHP experience to create a proper class definition - LibreNMS\Data\Store is a generic driver to store data, with specific implementations for each backend - we would need something like LibreNMS\Data\Retrieve as a generic driver to query data with a specific implementation for one (or more) other TSDB.
If there is interest, maybe we can plot out milestones/issues in Github for the steps needed to accomplish this. Looking forward to further discussion!