ln() 函数用于计算时间序列中每个样本值的自然对数(以数学常数e为底),这个函数对于需要将时间序列数据转换到对数尺度进行分析或可视化时非常有用。
ln() 函数会返回一个与输入时间序列具有相同时间戳和标签的新时间序列,但每个样本的值被替换为其自然对数。如果原始样本值小于或等于 0,ln() 函数将返回 NaN(不是一个数字),因为自然对数在这些点上未定义。
ln(+Inf) = +Inf
ln(0) = -Inf
ln(x < 0) = NaN
ln(NaN) = NaN
需要注意的是,由于 ln() 函数在 0 和负数上不定义,因此在使用该函数之前,你可能需要确保你的时间序列不包含这些值,或者使用其他函数(如 clamp_max() 或 clamp_min())来避免 NaN 值。
此外,如果你想要计算以 10 为底的对数(常用对数),可以使用 log10() 函数;如果你想要计算以 2 为底的对数(二进制对数),可以使用 log2() 函数。
ln() 函数的基本语法如下:
ln(<vector expr>)
参数说明:
<vector expr>是一个向量表达式,通常是一个时间序列选择器,指定了你想要计算自然对数的样本值。
假设你有一个名为 prometheus_http_requests_total 的时间序列,记录了 prometheus 的 http 请求总数。如果你想要分析 http 请求总数的对数增长趋势,你可以使用 ln() 函数:
ln(prometheus_http_requests_total)
上面查询将返回一个新的时间序列,其中包含了 prometheus_http_requests_total 中每个样本值的自然对数。如下图: