InfluxDB + Grafana:按时间排列的状态代码

问题描述 投票:0回答:1

我正在尝试按时间在 Grafana 中显示 HTTP 状态代码。 数据像这样存储在 InfluxDB 中(简化):

# time,status,bytesize
2024-04-27 11:24:00, 404,100
2024-04-28 01:24:00, 200,100
...

目前我使用SQL进行查询:

SELECT $__dateBin(time) AS time,
COUNT(CASE WHEN "status" BETWEEN 200 AND 299 THEN 1 END) AS "2xx",
COUNT(CASE WHEN "status" BETWEEN 400 AND 499 THEN 1 END) AS "4xx",
COUNT(CASE WHEN "status" >= 500 THEN 1 END) AS "5xx"
FROM http_requests
GROUP BY $__dateBin(time)

这会产生以下图表: enter image description here

如您所见,值显示正确,但点是直接连接的,并且图形不会返回到基线 (0)。

我该如何解决这个问题?

sql grafana influxdb
1个回答
0
投票

我能够通过利用 InfluxDB 的 date_bin_gapfill 函数来实现空行。它可以与 Grafana 中的

$__interval
变量一起使用:

SELECT
  date_bin_gapfill($__interval, time) as _time,
  COUNT(CASE WHEN "status" BETWEEN 200 AND 299 THEN 1 END) AS "2xx",
  COUNT(CASE WHEN "status" BETWEEN 400 AND 499 THEN 1 END) AS "4xx",
  COUNT(CASE WHEN "status" >= 500 THEN 1 END) AS "5xx"
FROM "http_requests"
WHERE
    time >= $__timeFrom
    AND time <= $__timeTo
GROUP BY _time, status
ORDER BY _time

然后我必须选择用 0 插入缺失值的选项: enter image description here

这使得图表看起来符合预期。

© www.soinside.com 2019 - 2024. All rights reserved.