在 Grafana 上使用 InfluxDB 计算平均请求时间

Posted

技术标签:

【中文标题】在 Grafana 上使用 InfluxDB 计算平均请求时间【英文标题】:Calculation average request time using InfluxDB on Grafana 【发布时间】:2021-03-06 18:08:25 【问题描述】:

我正在使用 influx 来保存指标。 我正在尝试在 grafana 中创建一个仪表板,它将显示一个方法每小时的平均执行时间。

这是我计算方法执行时间的查询:

原始 sql:

计算平均时间的查询。

SELECT MEAN("sum") FROM "autogen"."pfr_timed_http_request" 
WHERE "method"='request' AND $timeFilter 
GROUP BY time(1h) fill(null)

但如果执行时间图看起来像事实,那么平均执行时间图看起来很奇怪。 平均值应该是4s左右,但比1还要小很多。可能是计算中包含null为0的原因,可以排除在计算之外吗? 我究竟做错了什么? ![在此处输入图片说明

【问题讨论】:

【参考方案1】:

我猜sum字段(不是很直观的字段名称)持有响应时间,所以平均响应时间计算:

SELECT MEAN("sum")
FROM "autogen"."pfr_timed_http_request"
WHERE "method"='request'
  AND $timeFilter
GROUP BY time(1h) fill(null)

【讨论】:

谢谢!图表变得更加真实,但平均值仍然计算得非常小。我已经更新了我的问题,请参阅 @NeverSleeps 我会说原始记录查询是错误的。为什么你需要 SUM 聚合?为什么不简单SELECT "sum" FROM "autogen"."pfr_timed_http_request" WHERE "method"='request' AND $timeFilter。可能有数百万个响应时间为 1 毫秒的请求,显示为 X 秒响应时间和 SUM 聚合。不要责怪图表,使用表格并在那里列出原始记录/聚合指标来证明记录计数/值/聚合。

以上是关于在 Grafana 上使用 InfluxDB 计算平均请求时间的主要内容,如果未能解决你的问题,请参考以下文章

无法在包含测量的 influxDB 点上创建 Grafana 动态仪表板

使用 Telegraf 的 influxDB 数据在 Grafana 上绘制 CPU 使用率百分比

我应该如何让 grafana 知道安装在不同主机上的 telegraf 和 influxdb?

使用influxdb时可以按多列进行grafana分组

在Marathon 上部署 cAdvisor + InfluxDB + Grafana Docker监控

Using InfluxDB in Grafana,influxDB在grafana中使用