Monitoring 使用XDB查询获取Grafana的不同值的计数

Monitoring 使用XDB查询获取Grafana的不同值的计数,monitoring,influxdb,grafana,Monitoring,Influxdb,Grafana,我有一个收集器,它从日志文件中收集三个字段,并以以下格式保存到XDB: 费尔达·费尔达·费尔达 ---- ---- ---- A00123B02100A0013A00123 我想在Grafana中绘制图形,这样我就可以得到A和B的出现次数 IMP:FeildA可以有多个值,这在之前是未知的。因此,使用where子句编写查询不是一个选项 如果FeildA仅定义为度量模式中的字段,则可以在where子句中使用regexp,这些查询可能适用于您: ``` ``` 如果FeildA基数的预期不同值的数

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

费尔达·费尔达·费尔达 ---- ---- ---- A00123B02100A0013A00123

我想在Grafana中绘制图形,这样我就可以得到A和B的出现次数 IMP:FeildA可以有多个值,这在之前是未知的。因此,使用where子句编写查询不是一个选项

如果FeildA仅定义为度量模式中的字段,则可以在where子句中使用regexp,这些查询可能适用于您:

```

```

如果FeildA基数的预期不同值的数量是合理的,那么真正的解决方案是将FeildA作为标记而不是字段。然后可以在查询中使用GROUPBY标记。例如,查询:

```

```

将给出A、B、C、D的出现次数。但这需要更改收集器。 FeildA可以是XDB中的标记和字段,但如果名称不同,则更好地避免冲突并简化查询中的语法

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