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.
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!