idelta() 函数用于计算两个连续的样本值之间的差异,并返回这些差异的时间序列。这对于检测时间序列的变化率特别有用,特别是当原始数据可能包含跳变或不规则间隔时。
idelta() 函数会计算每个时间序列中相邻样本之间的差异,并返回一个新的时间序列,其中包含了这些差异值。如果原始时间序列中的样本不是连续的(即它们之间的时间间隔不是恒定的),idelta() 会考虑这些间隔,并计算出基于这些间隔的差异。
需要注意的是,idelta() 函数计算的是相邻样本之间的差异,而不是样本值与某个固定点之间的差异。此外,如果原始时间序列中存在跳变(即一个样本的值突然变得与前一个样本的值非常不同),idelta() 函数会准确地反映这种变化。
在某些情况下,你可能还希望使用 rate() 或 irate() 函数来计算时间序列的变化率,但这些函数与 idelta() 在计算方式和用途上有所不同。rate() 函数计算的是时间序列的平均变化率,而 irate() 函数则计算的是最近两个样本之间的即时变化率。选择哪个函数取决于你的具体需求和数据的特性。
idelta() 函数的基本语法如下:
idelta(<vector expr>)
参数说明:
<vector expr> 是一个向量表达式,通常是一个时间序列选择器。
假设你有一个名为 prometheus_http_requests_total 的时间序列,记录了所有的 HTTP 请求总数。由于 HTTP 请求欧总数可能随时间变化,而记录的间隔可能不固定,你可能想知道 HTTP 请求数变化的速度。在这种情况下,你可以使用 idelta() 函数:
idelta(prometheus_http_requests_total[5m])
上面查询将返回一个新的时间序列,其中包含了 prometheus_http_requests_total 中每个样本与其前一个样本之间的差异。执行查询,如下图: