在 Grafana 上使用 InfluxDB 计算每秒请求数

Posted

技术标签:

【中文标题】在 Grafana 上使用 InfluxDB 计算每秒请求数【英文标题】:Calculating request per second using InfluxDB on Grafana 【发布时间】:2016-10-04 12:03:20 【问题描述】:

我使用telegraf插件nginx读取Nginx的基本状态信息(ngx_http_stub_status_module)

这是我的查询

原始 sql:

SELECT derivative(mean("requests"), 1s) FROM "nginx" WHERE $timeFilter GROUP BY time($interval) fill(null)

这是我的数据

time            accepts active  handled host    port    reading requests    server      waitingwriting
1464921070000000000 7   1   7   hysm    80  0   17      localhost   0   1
1464921080000000000 8   1   8   hysm    80  0   19      localhost   0   1
1464921090000000000 8   1   8   hysm    80  0   20      localhost   0   1
1464921100000000000 8   1   8   hysm    80  0   21      localhost   0   1

但 requestPerSecond 是 0.083,我的查询有什么问题?

【问题讨论】:

你期望它是什么?我的第一个倾向是你取平均值,然后取它的导数,因为你的平均值会随着你的 group by time($interval) 而变化。 您是否尝试将导数上的单位设置为等于GROUP BY time() 间隔? (通常在 Grafana 中默认为 10s) @MichaelDesa,我想知道结果(requestPerSecond)是否正确 requests 代表什么?它只是一个计数器吗?如果是,那么您将需要运行derivative(max(requests)),它应该会给您比mean 更准确的信息。 @MichaelDesa,只是一个柜台,谢谢 【参考方案1】:

假设你正在处理一个计数器,你想要的查询是

SELECT derivative(max(requests))
FROM "nginx"
WHERE $timeFilter
GROUP BY time($interval)

【讨论】:

如果您必须使用count 导出请求数怎么办?

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

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

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

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

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

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

Using InfluxDB in Grafana,influxDB在grafana中使用