查询示例

简单的时间序列选择器

返回数据指标名称为http_requests_total的所有时间序列:

http_requests_total

返回数据指标名称为http_requests_total及给定jobhandler标签的所有时间序列:

http_requests_total{job="apiserver", handler="/api/comments"}

返回相同向量的整个时间范围(在本例中为5分钟),使其成为范围向量:

http_requests_total{job="apiserver", handler="/api/comments"}[5m]

请注意,无法直接绘制范围向量的表达式结果,而是在表达式浏览器的表格视图("控制台")中查看。

使用正则表达式,您可以只选择job标签值与特定模式匹配的时间序列,在本例子中,所有job标签以server结尾的向量:

http_requests_total{job=~".*server"}

Prometheus中的所有正则表达式都使用RE2语法arrow-up-right

想要选择除了 4xx 以外的所有 HTTP 状态码,你可以执行:

http_requests_total{status!~"4.."}

子查询

返回过去 30 分钟的 http_requests_total 指标的 5 分钟内的平均速率,分辨率为 1 分钟.

rate(http_requests_total[5m])[30m:1m]

这是一个嵌套子查询的示例。deriv函数的子查询使用默认分辨率。请注意,不必要地使用子查询是不明智的。

使用函数、操作符等

返回最近 5 分钟内指标名称为http_requests_total的所有时间序列的每秒速率:

假设http_requests_total时间序列都有job(按作业名称进行划分)和instance(按作业的实例进行划分),我们可能希望得到的输出时间序列较少,所以对所有实例的速率进行求和,但仍然保留job维度:

如果我们有具有两个相同维度标签的不同数据指标,则可以对它们进行二元运算,并且具有相同标签集的两侧的元素都将匹配并传播到输出。例如:此实例表达式为每个实例以 MiB 返回未使用的内存(在虚构的集群上暴露了有关其运行实例的这些指标):

相同的表达式,但根据应用汇总,可以这么写:

如果相同的虚拟集群调度程序对每个实例暴露了以下 CPU 使用率指标:

我们可以按应用程序(app)和进程类型(proc)分组,排名前 3 位的 CPU 用户是这样的:

假设此指标每个运行实例包含一个时间序列,则可以像这样计算每个应用程序的运行实例数:

最后更新于