从 influxdb-measurements 动态创建 Grafana 仪表板

create Grafana dashboard dynamically from influxdb-measurements

我在涌入中有这样的测量结果

weather_sensor,crop=blueberries,plot=1,temp=13.6 1472515200000000000
weather_sensor,crop=blueberries,plot=2,temp=14.0 1472515200000000000
weather_sensor,crop=blueberries,plot=1,rain=0 1472515200000000000
weather_sensor,crop=blueberries,plot=2,rain=37 1472515200000000000
weather_sensor,crop=apples,plot=3,temp=15.4 1472515200000000000
weather_sensor,crop=apples,plot=4,temp=15.8 1472515200000000000
weather_sensor,crop=apples,plot=3,rain=102 1472515200000000000
weather_sensor,crop=apples,plot=4,rain=44 1472515200000000000

是否可以仅根据此数据动态创建以下仪表板:

当新的测量值到达时

weather_sensor,crop=strawberries,plot=9,temp=12.2 1572515200000000000

下拉菜单中有一个新元素“strawberries”,指向一个带有一个图表的仪表板(“strawberries plot 9”)

所有这些都事先不知道有哪些作物和地块(就像从数据库中读取农业经营的结构)

是的,crop 必须是 Influxdb 标签。创建 Grafana 仪表板变量,例如crop 来自查询,例如SHOW TAG VALUES WITH KEY = "crop"。然后在图形面板查询中使用此变量,例如

SELECT mean("temp"), mean("rain") 
FROM "metrics" 
WHERE "crop" =~ /^$crop$/ AND $timeFilter 
GROUP BY time($__interval), "plot" fill(null)

我没有你的数据,所以这个查询可能还需要一些小的调整。就是给你和思路。

如果您需要每个地块都有专门的面板,那么还要定义 plot 变量,带有裁剪条件,例如SHOW TAG VALUES WITH KEY = "plot" WHERE "crop" =~ /^$crop$/ 并为此 plot 变量使用面板重复功能 + 在面板查询中还使用 $plot 过滤。