• 欢迎来到小爱博客,一个分享互联网IT技术的网站,喜欢就收藏吧!

prometheus 官方函数介绍

prometheus 小爱 3个月前 (08-08) 43次浏览 已收录 0个评论 扫描二维码

一些函数具有默认参数,例如year(v=vector(time()) instant-vector)。这意味着有一个参数v是一个即时向量,如果不提供该参数,它将默认为expression的值 vector(time())

abs()

abs(v instant-vector) 返回所有样本值均转换为绝对值的输入向量。

absent()

absent(v instant-vector) 如果传递给它的向量有任何元素,则返回一个空向量;如果传递给它的向量没有元素,则返回值为1的1元素向量。

这对于在给定度量标准名称和标签组合不存在任何时间序列时发出警报非常有用。

absent(nonexistent{job="myjob"})
# => {job="myjob"}

absent(nonexistent{job="myjob",instance=~".*"})
# => {job="myjob"}

absent(sum(nonexistent{job="myjob"}))
# => {}

在前两个示例中,absent()尝试聪明地从输入向量中导出1元素输出向量的标签。

absent_over_time()

absent_over_time(v range-vector) 如果传递给它的范围向量有任何元素,则返回一个空向量;如果传递给它的范围向量没有元素,则返回一个值为1的1元素向量。

这对于在给定的度量标准名称和标签组合在一定时间内没有时间序列时发出警报是很有用的。

absent_over_time(nonexistent{job="myjob"}[1h])
# => {job="myjob"}

absent_over_time(nonexistent{job="myjob",instance=~".*"}[1h])
# => {job="myjob"}

absent_over_time(sum(nonexistent{job="myjob"})[1h:])
# => {}

在前两个示例中,absent_over_time()尝试聪明地从输入向量中导出1元素输出向量的标签。

ceil()

ceil(v instant-vector)将所有元素的样本值四舍五入v到最接近的整数。

changes()

对于每个输入时间序列,changes(v range-vector)返回其值在提供的时间范围内变化的次数作为即时向量。

clamp_max()

clamp_max(v instant-vector, max scalar)将所有元素的样本值钳位为的v上限max

clamp_min()

clamp_min(v instant-vector, min scalar)将所有元素的样本值钳制在v一个下限内min

day_of_month()

day_of_month(v=vector(time()) instant-vector)返回UTC中每个给定时间的月份。返回值是1到31。

day_of_week()

day_of_week(v=vector(time()) instant-vector)返回UTC中每个给定时间的星期几。返回值是从0到6,其中0表示星期日等。

days_in_month()

days_in_month(v=vector(time()) instant-vector)返回UTC中每个给定时间的月份中的天数。返回值是28到31。

delta()

delta(v range-vector)计算范围向量中每个时间序列元素的第一个值与最后一个值之间的差v,并返回具有给定增量和等效标签的即时向量。根据范围向量选择器中的指定,可以将增量外推以覆盖整个时间范围,因此即使采样值都是整数,也可以获得非整数结果。

以下示例表达式返回从现在到2小时前的CPU温度差异:

delta(cpu_temp_celsius{host="zeus"}[2h])

delta 只能与压力表一起使用。

deriv()

deriv(v range-vector)v使用简单的线性回归来计算范围向量中时间序列的每秒导数。

deriv 只能与压力表一起使用。

exp()

exp(v instant-vector)计算中的所有元素的指数函数v。特殊情况是:

  • Exp(+Inf) = +Inf
  • Exp(NaN) = NaN

floor()

floor(v instant-vector)将所有元素的样本值四舍五入v到最接近的整数。

histogram_quantile()

histogram_quantile(φ float, b instant-vector)计算φ -分位数(0≤φ≤1)从桶b一个的 直方图。(有关φ分位数的详细说明以及总体上使用直方图度量类型的信息,请参见 直方图和摘要。)中的样本b是每个存储桶中观察值的计数。每个样本必须有一个标签le,其中标签值表示存储桶的包含上限。(没有这种标签的样本将被忽略。)直方图度量标准类型会 自动提供带有_bucket后缀和适当标签的时间序列。

使用该rate()功能可以指定分位数计算的时间窗口。

示例:直方图度量称为http_request_duration_seconds。要计算最近10m的请求持续时间的90%,请使用以下表达式:

histogram_quantile(0.9, rate(http_request_duration_seconds_bucket[10m]))

计算中的每个标签组合的分位数 http_request_duration_seconds。要进行聚合,请sum()rate()函数周围使用聚合器。由于le标签是必需的 histogram_quantile(),因此必须将其包含在by子句中。以下表达式通过以下方式汇总第90个百分点job

histogram_quantile(0.9, sum by (job, le) (rate(http_request_duration_seconds_bucket[10m])))

要汇总所有内容,请仅指定le标签:

histogram_quantile(0.9, sum by (le) (rate(http_request_duration_seconds_bucket[10m])))

histogram_quantile()函数通过假设存储桶内的线性分布来内插分位数。最高存储桶的上限必须为+Inf。(否则,NaN返回。)如果分位数位于最高存储桶中,则返回第二高存储桶的上限。如果该存储桶的上限大于0,则将最低存储桶的下限假定为0。在这种情况下,通常在该存储桶中应用线性插值。否则,将为位于最低存储桶中的分位数返回最低存储桶的上限。

如果b有0个观察值,NaN则返回。如果b包含少于两个存储桶, NaN则返回。对于φ<0,-Inf返回。如果φ> 1,+Inf则返回。

holt_winters()

holt_winters(v range-vector, sf scalar, tf scalar)根据中的范围为时间序列生成平滑值v。平滑因子越低sf,对旧数据的重视程度越高。趋势因子越高tf,考虑的数据趋势就越多。二者sftf必须在0和1之间。

holt_winters 只能与压力表一起使用。

hour()

hour(v=vector(time()) instant-vector)返回UTC中每个给定时间的一天中的小时。返回值是从0到23。

idelta()

idelta(v range-vector)计算范围向量中最后两个样本之间的差v,并返回具有给定增量和等效标签的即时向量。

idelta 只能与压力表一起使用。

increase()

increase(v range-vector)计算范围向量中时间序列的增加。单调性中断(例如由于目标重新启动而导致的计数器重置)会自动进行调整。根据范围向量选择器中的指定,可以推断出增加的时间以覆盖整个时间范围,因此即使计数器仅以整数增量增加,也可以得到非整数结果。

以下示例表达式返回范围向量中每个时间序列在最近5分钟内测得的HTTP请求数:

increase(http_requests_total{job="api-server"}[5m])

increase仅应与计数器一起使用。它是语法糖rate(v)乘以指定时间范围窗下的秒数,应主要用于人类可读性。rate在记录规则中使用,以便在每秒的基础上始终跟踪增长情况。

irate()

irate(v range-vector)计算范围向量中时间序列的每秒瞬时增加率。这基于最后两个数据点。单调性中断(例如由于目标重新启动而导致的计数器重置)会自动进行调整。

下面的示例表达式返回范围向量中每个时间序列的两个最近数据点的HTTP请求的每秒速率,该速率最多可追溯5分钟:

irate(http_requests_total{job="api-server"}[5m])

irate仅应在绘制易变,快速移动的计数器时使用。使用rate警报和缓慢移动的柜台,因为在房价短暂变化可以重设FOR条款和图表完全由罕见尖峰难以阅读。

请注意,在irate()与 聚合运算符(例如sum())或随时间推移聚合的函数(以结尾的任何函数_over_time)结合时,请始终irate()先进行汇总,然后进行聚合。否则irate(),在目标重新​​启动时无法检测到计数器重置。

label_join()

对于中的每个时间序列vlabel_join(v instant-vector, dst_label string, separator string, src_label_1 string, src_label_2 string, ...)将所有src_labels using 的所有值结合separator在一起,并返回带有dst_label包含结合值的标签的时间序列。src_labels此功能可以有任意多个。

此示例将返回一个向量,其中每个时间序列都有一个foo标签,并在标签上a,b,c添加了值:

label_join(up{job="api-server",src1="a",src2="b",src3="c"}, "foo", ",", "src1", "src2", "src3")

label_replace()

对于其中的每个时间序列vlabel_replace(v instant-vector, dst_label string, replacement string, src_label string, regex string)将正则表达式regex与标签匹配src_label。如果匹配,则返回时间序列,并dst_label用的扩展名替换 标签replacement$1用第一个匹配的子组替换,$2再用第二个匹配的子组替换。如果正则表达式不匹配,则时间序列不变。

此示例将返回一个向量,其中每个时间序列都有一个foo 标签,并在标签上a添加了值:

label_replace(up{job="api-server",service="a:c"}, "foo", "$1", "service", "(.*):.*")

ln()

ln(v instant-vector)计算中所有元素的自然对数v。特殊情况是:

  • ln(+Inf) = +Inf
  • ln(0) = -Inf
  • ln(x < 0) = NaN
  • ln(NaN) = NaN

log2()

log2(v instant-vector)计算中的所有元素的二进制对数v。特殊情况与中的情况相同ln

log10()

log10(v instant-vector)计算中所有元素的十进制对数v。特殊情况与中的情况相同ln

minute()

minute(v=vector(time()) instant-vector)返回UTC中每个给定时间的小时分钟。返回值是从0到59。

month()

month(v=vector(time()) instant-vector)返回UTC中每个给定时间的一年中的月份。返回值是从1到12,其中1表示一月等。

predict_linear()

predict_linear(v range-vector, t scalar)t根据距离向量v,使用简单的线性回归预测从现在开始的时间序列秒值 。

predict_linear 只能与压力表一起使用。

rate()

rate(v range-vector)计算范围向量中时间序列的每秒平均平均增长率。单调性中断(例如由于目标重新启动而导致的计数器重置)会自动进行调整。此外,计算会外推到时间范围的末尾,从而允许遗漏刮擦或刮擦周期与该范围的时间段不完全对齐。

以下示例表达式返回范围向量中每个时间序列最近5分钟内测得的HTTP请求的每秒速率:

rate(http_requests_total{job="api-server"}[5m])

rate仅应与计数器一起使用。它最适合于警报以及慢速计数器的图形显示。

请注意,在rate()与聚合运算符(例如sum())或随时间推移聚合的函数(以结尾的任何函数_over_time)结合时,请始终rate()先进行汇总,然后进行聚合。否则rate(),在目标重新​​启动时无法检测到计数器重置。

resets()

对于每个输入时间序列,resets(v range-vector)将提供的时间范围内的计数器重置次数作为即时向量返回。两个连续采样之间值的任何减少都将解释为计数器复位。

resets 仅应与计数器一起使用。

round()

round(v instant-vector, to_nearest=1 scalar)将所有元素的样本值四舍五入为v最接近的整数。领带通过四舍五入解决。可选to_nearest参数允许指定样本值应四舍五入到的最接近倍数。该倍数也可以是分数。

scalar()

给定一个单元素输入向量,scalar(v instant-vector)返回该单个元素的样本值作为标量。如果输入向量不完全具有一个元素,scalar则将返回NaN

sort()

sort(v instant-vector) 返回按其采样值升序排列的向量元素。

sort_desc()

与相同sort,但以降序排列。

sqrt()

sqrt(v instant-vector)计算中的所有元素的平方根v

time()

time()返回自1970年1月1日UTC以来的秒数。请注意,这实际上并不返回当前时间,而是返回要计算表达式的时间。

timestamp()

timestamp(v instant-vector) 返回给定向量的每个样本的时间戳记,作为自1970年1月1日UTC以来的秒数。

该功能已在Prometheus 2.0中添加

vector()

vector(s scalar)s以没有标签的向量形式返回标量。

year()

year(v=vector(time()) instant-vector) 返回UTC中每个给定时间的年份。

<aggregation>_over_time()

以下功能允许随着时间的推移聚合给定范围向量的每个序列,并返回具有每个序列聚合结果的即时向量:

  • avg_over_time(range-vector):指定间隔内所有点的平均值。
  • min_over_time(range-vector):指定间隔中所有点的最小值。
  • max_over_time(range-vector):指定间隔内所有点的最大值。
  • sum_over_time(range-vector):指定时间间隔内所有值的总和。
  • count_over_time(range-vector):指定时间间隔内所有值的计数。
  • quantile_over_time(scalar, range-vector):指定间隔内值的φ分位数(0≤φ≤1)。
  • stddev_over_time(range-vector):指定间隔内值的总体标准偏差。
  • stdvar_over_time(range-vector):指定间隔内值的总体标准方差。

请注意,即使在整个时间间隔内这些值的间隔不相等,指定时间间隔内的所有值在聚合中的权重也相同。


小爱博客 , 版权所有
转载请注明原文链接:prometheus 官方函数介绍
喜欢 (0)
【你的支持, 我的动力】
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址