InfluxDB查询获取Grafana的不同值的计数

时间:2018-04-11 14:30:02

标签: monitoring influxdb grafana

我有一个收集器,它从日志文件中收集三个字段,并按以下格式将其保存到InfluxDB:

FeildA FeildB FeildC
------- -------- --------
A 00 123
乙02 100
A 00 13
A 00 123

我想在Grafana中绘制图表,以便计算“A”和“B”(FeildA)的出现次数
IMP :FeildA可以有多个值,前面不知道。因此,使用“where”子句编写查询不是一种选择。

1 个答案:

答案 0 :(得分:1)

如果FeildA仅在测量模式中定义为field,您可以在“where”子句中使用regexp,这些查询可能对您有用:

```

SELECT COUNT(FeildA) FROM "logdata" WHERE $timeFilter and FeildA::field =~ /^A$/
SELECT COUNT(FeildA) FROM "logdata" WHERE $timeFilter and FeildA::field =~ /^A$/
SELECT COUNT(FeildA) FROM "logdata" WHERE $timeFilter and FeildA =~ /^(A|B)$/

```

如果FeildA(基数)的预期不同值的数量是合理的,那么真正的解决方案是使FeildA成为“标记”而不是“字段”。然后你可以在查询中使用“group by tag”。例如,查询:

```

SELECT COUNT(FeildA) FROM "logdata" WHERE $timeFilter AND "FeildA" =~ /^(A|B|C|D)$/ GROUP BY time(1m), FeildA fill(null)

```

将给出“A”,“B”,“C”,“D”的出现次数。但这需要收集器的变化。 FeildA可以是Influxdb中的“标记”和“字段”,但是当名称不同以避免冲突并简化查询中的语法时,它会更好。