scalar() 函数用于将向量转换为标量值。通常,PromQL 查询返回的是一个向量,即包含多个时间序列样本的集合。然而,在某些情况下,你可能只需要获取单个值,而不是整个向量。这时,你可以使用 scalar() 函数来提取向量中的单个值。
scalar() 函数通常用于需要与 Prometheus 的 API 或其他需要标量值的服务进行交互的场景,例如将 Prometheus 的数据导出到 Grafana 或其他监控工具中。在这些情况下,你可能需要将 PromQL 查询的结果转换为单个标量值。
注意:
(1)scalar() 函数只返回向量中的第一个样本值,如果向量为空(即没有匹配的样本),scalar() 函数将返回 NaN(表示不是一个数字)。因此,在使用 scalar() 函数之前,你应该确保你的查询能够返回一个有效的向量。
(2)如果向量中有多个样本,scalar() 函数的行为将是不确定的,因此使用时应确保向量只包含一个样本。
scalar() 函数的基本语法是:
scalar(<vector>)
参数说明:
<vector> 是一个向量表达式,它应该只返回一个样本。
假如你有一个 prometheus_http_requests_total 指标,存放 Prometheus HTTP 请求总数,使用 scalar 函数将 prometheus_http_requests_total{handler="/api/v1/query"} 向量转换成标量,如下:
scalar(prometheus_http_requests_total{handler="/api/v1/query"})
运行查询,输出如下: