我无法向 Grafana 显示它应该使用哪个时间字段来构建图表

I can't show to Grafana what time field it should use for chart building

我有一个 Postgresql 数据源 table:

有点像日志。我只想在图表上显示我每小时有多少成功记录(http_status == 200)。听起来很简单,对吧?我写了这个查询:

SELECT
  count(http_status) AS "suuccess_total_count_per_hour",
  date_trunc('hour', created_at) "log_date"
FROM logs
WHERE
  http_status = 200
GROUP BY log_date
ORDER BY log_date

它给了我以下结果:

我觉得不错。我继续尝试将其放入 Grafana:

好的,我知道了,我得帮Grafana弄明白时间统计的字段在​​哪里。 我转到查询生成器,我发现它完全中断了我的查询。从那一刻起,我完全迷路了。这是查询生成器屏幕:

如何向Grafana解释我想要什么?我只想要一个简单的图表,例如:

抱歉,图片粗略,但我想你已经明白了。感谢您的帮助。

  1. 您的时间栏(例如created_at)应该是TIMESTAMP WITH TIME ZONE类型*
  2. 使用时间条件,Grafana有宏所以很容易,例如WHERE $__timeFilter(created_at)
  3. 你想按小时分组,所以你需要为此写 select。 Grafana 再次具有宏:$__timeGroupAlias(created_at,1h,0)

最后的 Grafana SQL 查询(未测试,因此可能需要一些小的调整):

SELECT 
  $__timeGroupAlias(created_at,1h,0),
  count(*) AS value,
  'succcess_total_count_per_hour' as metric
FROM logs
WHERE
  $__timeFilter(created_at)
  AND http_status = 200
GROUP BY 1
ORDER BY 1

*参见 Grafana 文档:https://grafana.com/docs/grafana/latest/datasources/postgres/ 有记录的宏。当您的时间列是 UNIX 时间戳时,也有针对这种情况的宏。