情况
我有一个计数器,它的值来自功率表(自安装以来的KWh)。在我的Grafana仪表盘上,我喜欢显示在给定的时间范围内在电力上花费了多少钱。
使用每个KWh的固定价格很容易做到这一点:increase(loxone_values{control="Stromverbrauch Zähler"}[$__range]) * 0.22
我可以在Grafana中使用"Stat“显示最后一个值,并获得花费的金额。
问题
显然,如果每个KWh的价格发生变化,这将失败,在我的例子中是每小时进行一次。我有第二个指标,它包含当前的价格。我喜欢用平均价格乘以KWh。
我想我可以用group_left做到这一点,但是我无法构造一个有效的查询。
我的第一种方法是increase(loxone_values{control="Stromverbrauch Zähler"}[$__range]) * group_left avg(loxone_values{control="Strompreis aktuell"}),它会给出一个解析错误。
看起来group_left需要一些东西来匹配向量。但是没有通用的标签(除了instance之外,但这在将来可能会改变)。
不管怎样,我试过了,但是increase(loxone_values{control="Stromverbrauch Zähler"}[$__range]) * on (instance) group_left avg(loxone_values{control="Strompreis aktuell"})给了我一个空的结果。
发布于 2021-01-10 18:28:28
这应该可以做到:
increase(loxone_values{control="Stromverbrauch Zähler"}[$__range]) * scalar(avg(loxone_values{control="Strompreis aktuell"}))
解释:
可以将即时向量乘以具有完全相同标签和标签值的即时向量,也可以乘以标量。increase(loxone_values{control="Stromverbrauch Zähler"}[$__range])的结果必须有标签,而avg(loxone_values{control="Strompreis aktuell"})将返回一个没有标签的即时向量。使用scalar将即时向量转换为标量,increase(loxone_values{control="Stromverbrauch Zähler"}[$__range])的所有结果都将乘以该值,与其标签无关。
https://stackoverflow.com/questions/65651811
复制相似问题