Influxdb,Grafana检测并删除异常值

时间:2018-01-09 13:27:18

标签: influxdb grafana

Grafana或Influx数据库中是否有实现的方法可以帮助检测数据集中的异常值,如果可能的话,删除或至少避免从使用此数据集的仪表板中显示它们;我使用百分位数,但这似乎并没有隐藏大量异常值。

感谢。

3 个答案:

答案 0 :(得分:5)

Grafana旨在显示数据,虽然它可能有一些工具来实现异常检测和消除,但它不是清理数据的正确位置。

InfluxDB用于存储数据,也不是用于清理数据的东西。但是,InfluxQL有一堆数学函数可供查询数据时使用;你可以下采样,得到均值等等。你可以看看这里是否有你需要的东西https://docs.influxdata.com/influxdb/v1.4/query_language/functions/

编辑:不要将InfluxQL与IFQL混淆,后者也代表Influx查询语言 https://github.com/influxdata/ifql

在InfluxDB中有一个称为连续查询的东西,它定期运行并将结果保存在指定的测量中(可能相同,覆盖或添加新字段)。此方法可用于清理数据,以便以后查询和显示更简单。 https://docs.influxdata.com/influxdb/v1.4/query_language/continuous_queries/

使用InfluxDB进行数据处理的优先方法是使用Kapacitor,它是TICK堆栈的一部分(Telegraf,InfluxDB,Chornograf,Kapacitor),并与InfluxDB很好地集成,可以实时或分批处理数据并保存回到InfluxDB。但是Kapacitor可能对简单的东西来说太过分了。先看看Influxql的数学函数。 https://www.influxdata.com/time-series-platform/kapacitor/

答案 1 :(得分:1)

如果您不想使用Kapacitor和/或CQ,Meta Queries Plugin for Grafana中的移动平均线可能有助于平滑数据峰值。

答案 2 :(得分:0)

如果您事先知道特定指标的可接受值范围,则可以在查询的field_key部分中按值(在InfluxDB术语中为field_valueWHERE)指定过滤器

Grafana在“文本编辑”和“可视”模式下也支持此功能。这并不明显,因为Grafana仅在WHERE自动完成下拉菜单中建议标签名称和值,但是您也可以键入field_key Enter ,然后选择一个{{1 }},然后输入数字<作为高于/低于此阈值的阈值,所有数字将作为异常值被过滤掉。

例如,假设您有一个系列报告互联网连接的延迟,并且假设200ms以上的值是传感器的异常值或错误值。

您可以使用以下查询过滤掉错误的值。在“文本编辑”模式下:

X

在可视模式下:

Grafana visual mode - filter values with WHERE clause

这里SELECT mean("value") FROM "ms" WHERE ("entity_id" = 'speedtest_ping' AND "value" < 200) AND time >= now() - 2d GROUP BY time(5m), "entity_id" fill(none) field_key,但是您可以按测量中存在的任何字段进行过滤。

我注意到,当在可视和文本编辑模式之间切换时,为了让Grafana保留过滤器,您必须在括号内指定该过滤器,例如如上:"value"