文档

查询示例

更新时间:
一键部署

查询示例

简单的时间序列选择

返回metric为http_requests_total的所有时间序列:

http_requests_total
http_requests_total {job =“apiserver”,handler =“/ api / comments”}

返回metric是http_requests_total, 标签分别是job="apiserver, handler="/api/comments,且是5分钟内的所有时间序列样本数据:

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

注意:一个范围向量表达式结果不能直接在Graph图表中,但是可以在”console”视图中展示。使用正则表达式,你可以通过特定模式匹配标签为job的特定任务名,获取这些任务的时间序列。在下面这个例子中, 匹配所有job以server结尾的时间序列数据。

http_requests_total{job=~".*server"}

Prometheus中的所有正则表达式都使用RE2语法。

返回metric为http_requests_total, 且HTTP返回码不以4开头的所有时间序列数据:

http_requests_total{status!~"4.."}

子查询

返回过去30分钟的http_requests_total指标的5分钟速率,分辨率为1分钟。

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

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

max_over_time(deriv(rate(distance_covered_total[5s])[30s:5s])[10m:])

使用功能,运算符等

返回metric为http_requests_total,且过去5分钟的所有时间序列数据值rate。

rate(http_requests_total[5m])

假设http_request_total时间序列都有标签job和instance,我们可能希望对5m时间范围内所有实例的速率求和,这样我们得到的输出时间序列更少,但仍保留job维度:

sum(rate(http_requests_total[5m])) by (job)

如果我们有相同维度标签,我们可以使用二元操作符计算样本数据,返回值:(key: value)=(标签列表:计算样本值)。例如,下面这个表达式返回每一个实例剩余内存,单位是M, 如果不同,则需要使用ignoring(label_lists),如果多对一,则采用group_left, 如果是一对多,则采用group_right。

(instance_memory_limit_bytes - instance_memory_usage_bytes) / 1024 / 1024

相同表达式,求和可以采用下面表达式:

sum(
  instance_memory_limit_bytes - instance_memory_usage_bytes
) by (app, proc) / 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"}
...

我们可以获取最高的3个CPU使用率,按照标签列表appproc分组

topk(3, sum(rate(instance_cpu_time_ns[5m])) by (app, proc))

假设一个服务实例只有一个时间序列数据,那么我们通过下面表达式,可以统计出每个应用的实例数量:

count(instance_cpu_time_ns) by (app)
  • 本页导读 (1)
文档反馈