在 Prometheus 中,Instant Vector(瞬时向量)表示在某个时间点上所有样本点的值。这种类型通常用于查询一个给定时间点的度量值或判断某个指标是否满足特定条件。
以下是几个 Instant Vector 类型的表达式示例:
- 查询当前系统中所有运行中的 Docker 容器数量:
count(container_last_seen{image!="",name=~"^k8s_.*",state="running"})
在上述查询语句中,count()
函数接收一个 Instant Vector 类型参数 container_last_seen{}
,该参数表示要统计符合条件的容器数量。该表达式会返回在当前时间点下,满足所有条件(镜像不为空,名称以 "k8s_"
开头,状态为 "running"
)的容器数量。
- 查询当前系统中 CPU 使用率最高的 5 个进程:
topk(5, sum(rate(process_cpu_seconds_total[1m])) by (process_name))
在上述查询语句中,sum(rate())
表示统计每个进程在过去 1 分钟内使用 CPU 时间总数,并将结果按 process_name
标签分组。然后使用 topk()
函数从这些分组数据中获取前 5 名。
- 查询当前系统中所有 HTTP 请求响应时间大于等于 500ms 的端点:
http_request_duration_seconds{job="myapp", handler=~".+", quantile("0.5") >= 0.5}
在上述查询语句中,http_request_duration_seconds{}
表示匹配所有 HTTP 请求响应时间的样本点。然后使用 quantile()
函数计算每个请求的 50 分位数,并将结果与 0.5 进行比较,从而找到所有响应时间大于等于 500ms 的端点。