0%

Prometheus 查询示例

简单的时间序列查询

  • 返回所有指标名字为 http_requests_total 的时间序列
1
http_requests_total
  • 返回所有名字为 http_requests_total,并且 jobhandler 标签为以下值的时间序列
1
http_requests_total{job="apiserver", handler="/api/comments"}
  • 返回一个时间范围内的指标数据(返回一个范围向量,range vector)
1
http_requests_total{job="apiserver", handler="/api/comments"}[5m]

返回范围向量的表达式不能直接用图表展示,但是可以通过表格的方式展示。

  • 匹配标签的时候我们也可以使用正则表达式,如:
1
http_requests_total{job=~".*server"}
  • 选择不是 4xx 的状态的数据:
1
http_requests_total{status!~"4.."}

子查询

  • 返回 http_requests_total 过去 30 分钟内每 5 分钟的速率,分辨率(resolution)为 1 分钟
1
rate(http_requests_total[5m])[30m:1m]
  • 嵌套的子查询
1
max_over_time(deriv(rate(distance_covered_total[5s])[30s:5s])[10m:])

使用函数、操作符等

  • 返回 http_requests_total 过去 5 分钟每秒的速率
1
rate(http_requests_total[5m])
  • 根据相同 job 统计
1
2
3
sum by (job) {
rate(http_requests_total[5m])
}
  • 不同指标计算
1
(instance_memory_limit_bytes - instance_memory_usage_bytes) / 1024 / 1024
  • 根据相同标签聚合
1
2
3
sum by (app, proc) {
instance_memory_limit_bytes - instance_memory_usage_bytes
} / 1024 / 1024