如何在 Grafana 的时间序列中绘制水平线
How to plot horizontal line in Timeseries in Grafana
我使用 grafana 绘制时间序列数据。在时间序列图中,我想添加一条来自监控级别的常量线。该级别的值是动态的(来自 postgres 数据库)时间序列来自 ifluxdb 数据源。
监控级别没有时间戳。结果应如下所示:
我已经搜索了很长时间如何做到这一点,但没有找到很好的解释。
要画一条这样的线,您必须“伪造”一个时间序列。 (阈值不起作用,因为据我所知它们不是动态的)
首先要记住的是,grafana 需要时间戳来绘制它,因此全局变量 ${__to} 和 ${__from} 派上用场了。
那么,要画一条线,grafana至少需要两个点。 ([t0, t1][y0, y1])
所以这是导致所需结果的 sql (postgre) 查询:
SELECT
${__from} AS time,
level_1,
FROM my_table where display_name = '${my_grafana_var:raw}'
union all
SELECT
${__to} AS time,
level_1,
FROM my_table where display_name = '${my_grafana_var:raw}';
另一种肮脏的方式是使用混合数据源创建面板。
在 grafana 中创建变量 - 它可以是查询、常量或自定义。请记住将其保持为单个浮点数。
添加您的原始查询并添加普罗米修斯数据源以查询您的变量。
${net_ordered_storage}
您将不得不稍微调整显示的数据点数量(查询选项>最大数据点)和普罗米修斯查询中数据点的最小步长,以使 grafana 连接点。
Green horizontal line from variable
我使用 grafana 绘制时间序列数据。在时间序列图中,我想添加一条来自监控级别的常量线。该级别的值是动态的(来自 postgres 数据库)时间序列来自 ifluxdb 数据源。
监控级别没有时间戳。结果应如下所示:
我已经搜索了很长时间如何做到这一点,但没有找到很好的解释。
要画一条这样的线,您必须“伪造”一个时间序列。 (阈值不起作用,因为据我所知它们不是动态的)
首先要记住的是,grafana 需要时间戳来绘制它,因此全局变量 ${__to} 和 ${__from} 派上用场了。
那么,要画一条线,grafana至少需要两个点。 ([t0, t1][y0, y1])
所以这是导致所需结果的 sql (postgre) 查询:
SELECT
${__from} AS time,
level_1,
FROM my_table where display_name = '${my_grafana_var:raw}'
union all
SELECT
${__to} AS time,
level_1,
FROM my_table where display_name = '${my_grafana_var:raw}';
另一种肮脏的方式是使用混合数据源创建面板。 在 grafana 中创建变量 - 它可以是查询、常量或自定义。请记住将其保持为单个浮点数。 添加您的原始查询并添加普罗米修斯数据源以查询您的变量。
${net_ordered_storage}
您将不得不稍微调整显示的数据点数量(查询选项>最大数据点)和普罗米修斯查询中数据点的最小步长,以使 grafana 连接点。
Green horizontal line from variable