我没有找到“移动平均线”功能,我想知道是否有解决方法。
我正在使用Influxdb作为后端。
答案 0 :(得分:16)
Grafana支持添加movingAverage()
。我也很难在文档中找到它,但你可以(有点滑稽)在feature intro page上看到它的用法:
正常情况下,点击图表标题,修改,按照movingAverage()中所述添加指标graphite documentation:
movingAverage(seriesList, windowSize)
绘制指标(或指标)在固定数量的过去点或时间间隔内的移动平均值。
采用一个度量标准或通配符seriesList,后跟数量N的数据点或带有时间长度的带引号的字符串,如'1hour'或'5min'(有关时间格式的示例,请参阅render_api_中的/ until)。绘制图表上每个点的前面数据点的平均值。所有先前的数据点都在图表的开头设置为无。
示例:
&target=movingAverage(Server.instance01.threads.busy,10)
&target=movingAverage(Server.instance*.threads.idle,'5min')
答案 1 :(得分:11)
Grafana本身没有计算,只是查询后端并绘制漂亮的图表。所以聚合能力完全取决于你的后端。虽然Graphite支持窗口函数,例如移动平均值,但InfluxDB目前不支持它。
在网上涌入db3的移动平均数有很多要求。您可以保留“+1”并跟踪此故障单https://github.com/influxdb/influxdb/issues/77
中的进度可能(但不是那么容易)解决方法是创建一个自定义脚本(cron,daemon,无论如何),它将预先计算MA并将其保存在单独的Influxdb系列中。
答案 2 :(得分:2)
此方法和功能取决于您的数据源。
您指定了InfluxDB,因此您的查询将需要在“移动函数”($ aggregation_function,$ num_of_points)“转换函数”中包装“聚合函数” [例如mean($ field)]。
在“指标”标签中,您会在菜单的“选择”部分中找到“转换”功能。
首先使用“聚合函数”(均值,最小值,最大值等)编制查询-这样,您可以确保数据看起来像您期望的那样。
此后,只需单击“聚合功能”旁边的“ +”按钮,然后在“转换”菜单下选择“移动平均”。
括号中的数字将是您希望平均值所占的点数。
截屏:
答案 3 :(得分:1)
我发现自己在这里尝试使用PostgreSQL数据库在Grafana中进行移动平均,所以我只是添加一种方法来处理SQL查询:
SELECT
date as time,
AVG(daily_average_column)
OVER(ORDER BY date ROWS BETWEEN 4 PRECEDING AND CURRENT ROW)
AS value,
'5 Day Moving Average' as metric
FROM daily_average_table
ORDER BY time ASC;
这使用"窗口"函数表示最后4行(加上当前行)的平均值。
我确信有办法用MySQL做这件事。
答案 4 :(得分:1)
另一种选择是将数据报告为“计时”指标而不是计数。 这很容易做到,尤其是在您的堆栈中使用Statsd时。 已经内置了绘制时序数据(来自statsd)作为报告数据点的平均值的方法。
答案 5 :(得分:-1)