absent_over_time() 函数是一个范围向量函数,用于检测在指定的时间范围内是否有数据点存在。
如果在整个时间范围内没有任何数据点,该函数将返回 1(true)。
如果在整个时间范围内有数据点,该函数将返回 0(false)。
这对于检测服务中断、指标丢失或其他潜在问题非常有用。
这种检测对于触发警报也非常有用,因为它可以让你知道何时需要采取行动来修复服务或调查潜在的问题。例如,你可以设置一个警报规则,当 absent_over_time(up[5m]) 返回1时发送通知。
absent_over_time() 函数的语法如下:
absent_over_time(v range-vector)
参数说明:
v range-vector: 是你想要检查数据点存在性的范围向量。
假设你有一个名为 up 的指标,它表示某个服务的健康状况。当服务正常运行时,up 指标会返回1,如果服务停止或出现问题,up 指标可能会返回0或根本没有数据点。
你可以使用 absent_over_time() 函数来检测服务是否在过去5分钟内完全停止运行:
absent_over_time(up[5m])
如果 up 指标在过去5分钟内没有任何数据点(即服务完全停止运行),该函数将返回1。如果至少有一个数据点存在(即服务至少在某一点上是运行的),则该函数将返回0。
注意:absent_over_time() 函数仅检查数据点的存在性,而不关心数据点的具体值。因此,即使 up 指标的值在整个时间范围内都是0,absent_over_time() 函数也会返回0,因为它认为数据点是存在的。如果你想要检查指标值是否为0,你应该使用其他函数,如 == 运算符。