如何使用Prometheus的up指标查询服务器SLI(如99.3%)
用Prometheus的up指标计算服务器SLI(可用性百分比)
核心问题在于:up指标在服务器宕机时往往会缺失(无返回值),而非返回0,直接对原始up指标求平均会忽略这些宕机时段,导致结果偏高。
单实例可用性查询
要准确计算单台服务器的可用性,需要先把缺失的up指标补为0,再计算时间范围内的平均值:
100 * avg_over_time( (up{instance="你的服务器实例ID"} or vector(0))[1d:] )
or vector(0):将up指标无返回的时段强制设为0,确保宕机时间被纳入计算[1d:]:指定统计的时间范围,可替换为[1h:](1小时)、[7d:](7天)等- 乘以100是将小数结果转换为百分比形式
多实例集群整体可用性查询
如果要计算一组服务器(比如同一个job下的实例)的整体平均可用性,可先计算每个实例的单例可用性,再求整体平均:
100 * avg( avg_over_time( (up{job="你的job名称"} or vector(0))[1d:] ) by (instance) )
常见错误排查
- 若之前直接用
avg_over_time(up[1d:]),会自动忽略up缺失的时段,相当于只统计服务器在线时的平均(结果永远是1),完全错误 - 确认标签筛选(instance/job)是否正确,避免筛选到无关实例导致结果偏差
内容的提问来源于stack exchange,提问作者Neel Kamath
相关产品推荐
相关产品推荐

