absent() 函数是一个标量函数,用于检测一个瞬时向量中是否缺少特定的样本。
如果指定的样本不存在,absent() 函数返回 1(true)。
如果指定的样本存在,absent() 函数返回 0(false)。
这对于在查询中检测缺失的数据点非常有用,尤其是在与聚合操作(如 sum() 或 avg())结合使用时。
absent() 函数通常用于构建条件查询或警报规则,以便在数据缺失时触发警报。例如,你可以使用 absent() 函数来检测某个服务是否没有报告任何数据,这通常表示服务可能出现了问题。
absent() 函数的语法如下:
absent(v instant-vector)
参数说明:
v instant-vector: 是你想要检查样本存在性的瞬时向量。
假设存在一个 prometheus_http_requests_total 指标和一个根本不存在的 prometheus_http_requests_total 指标,然后通过 absent() 函数判断指标是否真的存在。如下图:
如果你想要检查在当前时间点上是否有一个特定的标签组合(如 {label1="value1", label2="value2"})的样本存在。你可以使用 absent() 函数来实现这一点:
absent(prometheus_http_requests_total{handler="/api/v1/rules",job="prometheus"})
如果 prometheus_http_requests_total 指标在当前时间点没有与 {handler="/api/v1/rules",job="prometheus"} 匹配的样本,absent() 函数将返回1。如果样本存在,则返回0。
注意:absent() 函数与 absent_over_time() 函数不同,后者用于检测在指定时间范围内是否缺少数据点。absent() 函数仅检查当前时间点的样本存在性。