bru*_*oqc 10 metrics influxdb grafana
我没有找到"移动平均"功能,我想知道是否有解决方法.
我正在使用Influxdb作为后端.
小智 17
Grafana支持添加movingAverage().我也很难在文档中找到它,但你可以(有点滑稽)在功能介绍页面上看到它的用法:

正常情况下,单击图表标题,编辑,按照石墨文档中的描述添加指标movingAverage():
movingAverage(seriesList, windowSize)
Run Code Online (Sandbox Code Playgroud)
绘制指标(或指标)在固定数量的过去点或时间间隔上的移动平均值.
采用一个度量或通配符seriesList,后跟数量N的数据点或带有时间长度的带引号的字符串,如'1hour'或'5min'(有关时间格式的示例,请参阅render_api_中的/ until).绘制图表上每个点的前面数据点的平均值.在图表的开头,所有先前的数据点都设置为"无".
例:
&target=movingAverage(Server.instance01.threads.busy,10)
&target=movingAverage(Server.instance*.threads.idle,'5min')
Run Code Online (Sandbox Code Playgroud)
Ser*_*nov 12
Grafana本身没有计算,只是查询后端并绘制漂亮的图表.所以聚合能力完全取决于你的后端.虽然Graphite支持移动平均等窗口函数,但InfluxDB目前不支持它.
在网上涌入db3的移动平均数有很多要求.你可以留下你的"+1"并跟踪这张票的进度https://github.com/influxdb/influxdb/issues/77
可能(但不是那么容易)的解决方法是创建一个自定义脚本(cron,daemon,无论如何),它将预先计算MA并将其保存在单独的Influxdb系列中.
我发现自己尝试使用 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;
Run Code Online (Sandbox Code Playgroud)
这使用“窗口”函数来计算最后 4 行(加上当前行)的平均值。
我确信 MySQL 也有办法做到这一点。
小智 6
其方法和功能取决于您的数据源。
您指定了 InfluxDB,因此您的查询需要在 moving_average($aggregation_function, $num_of_points) “转换函数”内包装一个“聚合函数”[例如mean($field)]。
在“指标”选项卡中,您将在菜单的“选择”部分中找到“转换”功能。
首先使用“聚合函数”(平均值、最小值、最大值等)编写查询 - 这样您可以确保数据看起来符合您的预期。
之后,只需单击“聚合函数”旁边的“+”按钮,然后在“转换”菜单下选择“移动平均”。
括号中的数字将是您希望取平均值的点数。
截屏:

尝试 avg_over_time(mymetric[5m])
| 归档时间: |
|
| 查看次数: |
34202 次 |
| 最近记录: |