代码之家  ›  专栏  ›  技术社区  ›  Marky0

Grafana中带有influxDB数据库的时移序列

  •  0
  • Marky0  · 技术社区  · 3 年前

    我有一个在家庭助理2022.8.7上运行的InfluxDB 4.5.0数据库。 我想在同一个Grafana 7.6.0图上绘制两个InfluxDB查询,但其中一个系列的时间偏移为+24小时。

    经过几个小时的研究,我发现可以使用“查询选项”在Grafana面板上分时提取所有系列,但我找不到只分时提取其中一个系列的方法。

    我注意到InfluxDB中有一个分时移函数,但我不知道如何修改Grafana中的查询以将其分时移+24小时

    例如,如果查询给出了我要分时移的系列

    SELECT mean("value") FROM "kWh" WHERE ("entity_id" = 'energy_tomorrow') AND time >= now() - 7d and time <= now() GROUP BY time(5m) fill(linear)
    

    有没有修改这个查询以将结果分时移+24h,或者有什么其他方法可以在Grafana和InfluxDB中实现这个基本结果? 提前谢谢。

    0 回复  |  直到 3 年前
        1
  •  2
  •   Marky0    3 年前

    经过几个小时的尝试,我终于找到了解决方案,并为其他有同样问题的人发帖。 有两种方法可以将influxDB连接到家庭助理上的Grafana

    1. InfluxQL:这是一种类似SQL的查询语言,也是默认的连接方法
    2. Flux:它是InfluxDatas函数数据脚本语言

    似乎不可能用(1)进行分时移,但(2)中有一个函数允许分时移。因此,解决方案是添加一个 数据源 在grafana中,通过UI

    Configuration : Data Sources : Add Data Source : InfluxDB
    

    给这个新的 数据源 一个可识别的名称(例如FluxQuery)并配置 数据源 使用Flux而不是默认的InfluxQL。然后,在grafana中添加新面板时,只要您选择适当的 数据源 (例如FluxQuery),则启用通量查询并可以进行分时移位。

    例如,如果InfluxDB数据库的名称 家庭助理 其中包括两个数据库 实体id 的电话 能源_今日 能源_明天 以下流量查询图 能源_今日 按时间划分+24小时,以便正确覆盖 能源_明天

    查询A

    from(bucket: "HomeAssistant/autogen")
      |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
      |> filter(fn: (r) => r["_measurement"] == "kWh")
      |> filter(fn: (r) => r["entity_id"] == "energy_tomorrow")
    

    查询B

    from(bucket: "HomeAssistant/autogen")
      |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
      |> timeShift(duration: 24h)                    
      |> filter(fn: (r) => r["_measurement"] == "kWh")
      |> filter(fn: (r) => r["entity_id"] == "energy_today") 
    
    推荐文章