Prometheus+Node Exporter+Grafana 可视化求助。

Node Exporter 有一个 metric 是 node_network_transmit_bytes_total,它是一个 counter 类型。

我想在 Grafana 中创建一个直方图(或者 Heatmap),展示每个整小时内,发送了多少数据。

举个例子,这个 counter 的原始数据可能是每 60 秒采集一次的

Timestamp Value
00:00:00 100
00:01:00 200
08:59:00 53900
09:30:00 57000

我希望能用直方图,展示出每个小时的差值

Bucket Delta
00:00:00-01:00:00 6000
01:00:00-02:00:00 6000
08:00:00-09:00:00 6000
09:00:00-10:00:00 3000(因为这个小时还没过完,目前只有 3000)

问过各种 GPT,但是通常给出的第一个解答都是用 increase(),但这个函数的问题是,它是一个滑动窗口,它会“遍历”每个点,然后找相对于这个数据点,一小时前的数据是多少,然后算差值。所以假设我一天内记录了 24*60=1440 个数据点,它会给出 1440 个差值,但我想要的只是 24 个整点时刻的差值。

GPT 给出的一些其他复杂解答也有,但基本都不符合要求或者有语法错误无法查询。

此外,如果直接用 increase() 的数据,放到 Grafana 里做直方图,它会把这个 metric 的值分桶作为横坐标,然后把一个桶内有多少数据点作为纵坐标,也并不符合我的期望(以时间分桶)。

Google 英文搜索结果大多是官方文档对 Prometheus 几个 data type 的说明,不太有帮助。另外就是在知乎上看到一个非常接近的问题 如何使用prometheus来统计每日增量? - 明波00 的回答,但是他的查询也是类似 increase() 的结果,并且可能是 Grafana 版本差异问题,我在我的版本里并没有找到他所展示的一些设置。

不知道 L 站有没有人对 PromQL 和 Grafana 比较熟悉的人可以帮我解决一下这个问题。提前感谢:folded_hands:

2 Likes

点开图表,点开Query options,在Relative time填入now/d,这样就是从0点开始查询了,不受全局时间范围的影响 好吧没看清楚你的要求 :tieba_087:

1 Like