如何使用 1 sql-query 定义多个图
How to define multiple graphs with 1 sql-query
当我在 grafana 中使用 prometheus (promql) 作为数据源时,我可以定义在同一面板上显示多个图形的单个查询(例如 http_requests_total 显示所有 http 请求)。现在我想对 sql 数据源做同样的事情。我有一个 table 包含时间序列数据作为带有一些标签的简单计数器。我想将每个标签的 counter_value 显示为图表。当我为每个标签定义一个查询时它会起作用。但是这个解决方案并不是真正可维护的,因为标签可能会有所不同。我宁愿只有 1 个查询,因为它与 promql 一起使用。有没有一种方法可以定义为每个标签显示一个图表的单个查询?
在这个例子中只显示了 1 个图表。我用 group by 和我的标签列试过了,但没有成功。
SELECT
$__timeGroupAlias(created,24h),
sum(counter_value) AS "counter_value"
FROM counter
GROUP BY 1
ORDER BY 1
查看 query variables。
查询变量允许您使用 SQL 查询动态构建一个变量,然后可以在您的仪表板中引用它。
您可以使用这样的查询从 table:
中获取所有标签值
SELECT tag FROM counter
GROUP BY tag;
我不是 100% 确定,但听起来您可以通过使用查询变量获取所有所需的值来解决您的问题,然后使用 repeat panel 选项。重复面板选项将为每个变量值重复图表。例如,如果您有一个返回值 tag_a, tag_b, tag_c
的查询变量 tag_var
,您可以执行类似的操作,并启用重复面板选项以在 tag_var
:
上重复
SELECT
$__timeGroupAlias(created,24h),
sum(counter_value) AS "counter_value"
FROM counter
WHERE tag_value = '$tag_var'
GROUP BY 1
ORDER BY 1
当我在 grafana 中使用 prometheus (promql) 作为数据源时,我可以定义在同一面板上显示多个图形的单个查询(例如 http_requests_total 显示所有 http 请求)。现在我想对 sql 数据源做同样的事情。我有一个 table 包含时间序列数据作为带有一些标签的简单计数器。我想将每个标签的 counter_value 显示为图表。当我为每个标签定义一个查询时它会起作用。但是这个解决方案并不是真正可维护的,因为标签可能会有所不同。我宁愿只有 1 个查询,因为它与 promql 一起使用。有没有一种方法可以定义为每个标签显示一个图表的单个查询?
在这个例子中只显示了 1 个图表。我用 group by 和我的标签列试过了,但没有成功。
SELECT
$__timeGroupAlias(created,24h),
sum(counter_value) AS "counter_value"
FROM counter
GROUP BY 1
ORDER BY 1
查看 query variables。
查询变量允许您使用 SQL 查询动态构建一个变量,然后可以在您的仪表板中引用它。
您可以使用这样的查询从 table:
中获取所有标签值SELECT tag FROM counter
GROUP BY tag;
我不是 100% 确定,但听起来您可以通过使用查询变量获取所有所需的值来解决您的问题,然后使用 repeat panel 选项。重复面板选项将为每个变量值重复图表。例如,如果您有一个返回值 tag_a, tag_b, tag_c
的查询变量 tag_var
,您可以执行类似的操作,并启用重复面板选项以在 tag_var
:
SELECT
$__timeGroupAlias(created,24h),
sum(counter_value) AS "counter_value"
FROM counter
WHERE tag_value = '$tag_var'
GROUP BY 1
ORDER BY 1