[英]influxdb / Flux query : get a top from tag
我正在尝试通过通量查询从标签 (hdd_id) 中获取前 5 名,这是一个关于一天内性能的时间序列(粒度 1 分钟)
从此 csv 导入的数据:567819 行和 150 hdd_id ~
#datatype measurement,tag,tag,double,double,double,dateTime:number
HDD,server,hdd_id,Read_IOPS,Write_IOPS,Read_ms,time
HDD,srv1,hdd1,35,33,1,1671233940
HDD,srv1,hdd1,24,69,1,1671234000
HDD,srv1,hdd1,97,57,2,1671234060
HDD,srv1,hdd1,30,78,2,1671234120
HDD,srv1,hdd1,53,83,2,1671234180
HDD,srv1,hdd1,56,85,2,1671234240
HDD,srv1,hdd1,32,25,22,1671234300
HDD,srv1,hdd1,29,89,6,1671234360
HDD,srv1,hdd1,33,41,1,1671234420
HDD,srv1,hdd1,22,15,8,1671234480
HDD,srv1,hdd1,24,95,4,1671234540
…
HDD,srv1,hdd2,35,33,1,1671233940
HDD,srv1,hdd2,24,69,1,1671234000
HDD,srv1,hdd2,97,57,2,1671234060
HDD,srv1,hdd2,30,78,2,1671234120
HDD,srv1,hdd2,53,83,2,1671234180
HDD,srv1,hdd2,56,85,2,1671234240
HDD,srv1,hdd2,32,25,22,1671234300
HDD,srv1,hdd2,29,89,6,1671234360
HDD,srv1,hdd2,33,41,1,1671234420
HDD,srv1,hdd2,22,15,8,1671234480
HDD,srv1,hdd2,24,95,4,1671234540
…
HDD,srv1,hdd3,35,33,1,1671233940
HDD,srv1,hdd3,24,69,1,1671234000
HDD,srv1,hdd3,97,57,2,1671234060
HDD,srv1,hdd3,30,78,2,1671234120
HDD,srv1,hdd3,53,83,2,1671234180
HDD,srv1,hdd3,56,85,2,1671234240
HDD,srv1,hdd3,32,25,22,1671234300
HDD,srv1,hdd3,29,89,6,1671234360
HDD,srv1,hdd3,33,41,1,1671234420
HDD,srv1,hdd3,22,15,8,1671234480
HDD,srv1,hdd3,24,95,4,1671234540
…
我的查询没有成功:
from(bucket: v.bucket)
range(start: v.timeRangeStart, stop: v.timeRangeStop)
filter(fn: (r) => r[“_measurement”] == “HDD”)
filter(fn: (r) => r[“_field”] == “Read_IOPS” or r[“_field”] == “hdd_id”)
highestAverage(n:top, column: “Read_IOPS”, groupColumns: [“hdd_id”])
例如,我想获得具有最高 Read_IOPS 的 hdd_id 的前 5 名。
怎么了?
我的 csv/measurement 是否正确构建以执行此类查询?
非常感谢您的帮助。
hdd_id是一个标签而不是一个字段。 因此你不需要过滤它。
你能试试下面的语句吗:
from(bucket: v.bucket)
range(start: v.timeRangeStart, stop: v.timeRangeStop)
filter(fn: (r) => r[“_measurement”] == “HDD”)
highestAverage(n:5, column: “Read_IOPS”, groupColumns: [“hdd_id”])
我尝试使用此查询,但显示的是 grafana 上的表格。
在时间序列中得到这个缺少什么?
from(bucket: v.bucket)
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r._measurement == "HDD")
|> filter(fn: (r) => r.server== "${srv}") //grafana variable
|> drop(columns: ["server"])
|> filter(fn: (r) => r.hdd_id != "")
|> filter(fn: (r) => r._field == "Read_IOPS")
|> aggregateWindow(every: v.windowPeriod, fn: mean)
|> highestAverage(n:5,groupColumns: ["hdd_id"])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.