查询示例
简单的时间序列选择
返回所有带有http_requests_total
元素的时间序列:
http_requests_total
返回所有带有http_requests_total
元素和给定job
和handler
标签的时间序列:
http_requests_total{job="apiserver", handler="/api/comments"}
返回从查询时间前5分钟到当前查询时间的整个时间范围内的同一向量,使其成为范围向量选择器:
http_requests_total{job="apiserver", handler="/api/comments"}[5m]
请注意,产生范围向量的表达式不能直接绘图,需要在表达式浏览器的表格(“Console”)视图中进行查看。
使用正则表达式,可以选择只匹配特定模式名称的所有工作负载的时间序列,在这种情况下,所有以server
结尾的工作负载:
http_requests_total{job=~".*server"}
在 Prometheus 中使用的所有正则表达式都遵循 RE2语法。
为了选择除了4xx状态码之外的所有 HTTP 状态码,可以运行以下命令:
http_requests_total{status!~"4.."}## 子查询
返回过去30分钟内http_requests_total
指标的5分钟滚动率(rate),解析度设置为1分钟。
rate(http_requests_total[5m])[30m:1m]
这是一个嵌套子查询的示例。deriv
函数的子查询使用了默认解析度。请注意,无谓地使用子查询是不明智的。
max_over_time(deriv(rate(distance_covered_total[5s])[30s:5s])[10m:])## 使用函数、运算符等
计算所有名为http_requests_total
的时间序列在过去5分钟内的每秒变化率:
rate(http_requests_total[5m])
假设http_requests_total
时间序列都带有job
(按服务名分组)和instance
(按服务实例)标签,我们可能希望对所有实例的每秒率求和,以减少输出的时间序列数量,但同时保持job
维度:
sum by (job) ( rate(http_requests_total[5m]))
如果有两个具有相同维度标签的不同指标,我们可以对它们应用二元运算符,并在两边具有相同标签集的元素之间进行匹配和传递。例如,这个表达式返回每个实例的未使用内存(单位:MB):
(instance_memory_limit_bytes - instance_memory_usage_bytes) / 1024 / 1024
同样的表达式,但按应用进行求和,可以这样写:
sum by (app, proc) ( instance_memory_limit_bytes - instance_memory_usage_bytes) / 1024 / 1024
如果同一个虚构集群调度器以每个实例的形式暴露了 CPU 使用量指标,如下所示:
instance_cpu_time_ns{app="lion", proc="web", rev="34d0f99", env="prod", job="cluster-manager"}instance_cpu_time_ns{app="elephant", proc="worker", rev="34d0f99", env="prod", job="cluster-manager"}instance_cpu_time_ns{app="turtle", proc="api", rev="4d3a513", env="prod", job="cluster-manager"}instance_cpu_time_ns{app="fox", proc="widget", rev="4d3a513", env="prod", job="cluster-manager"}...
我们可以得到按应用(app
)和进程类型(proc
)分组的前三个 CPU 使用者:
topk(3, sum by (app, proc) (rate(instance_cpu_time_ns[5m])))
假设此指标包含每个运行实例的一个时间序列,可以按应用计数运行实例的数量如下:
count by (app) (instance_cpu_time_ns)
如果我们正在探索某些指标的标签,以便能够对其中的一些进行聚合,可以使用以下方式:
limitk(10, app_foo_metric_bar)
或者,如果我们想要返回的时间序列样本更均匀,可以使用以下方式获取大约 10% 的数据:
limit_ratio(0.1, app_foo_metric_bar)
该文档基于 Prometheus 官方文档翻译而成。