跳到主要内容

PromQL基础查询

PromQL(Prometheus Query Language)是Prometheus用于查询和分析时间序列数据的强大语言。它允许你从Prometheus中提取、过滤、聚合和操作时间序列数据。本文将带你逐步了解PromQL的基础查询语法,并通过实际案例帮助你掌握其核心概念。

什么是PromQL?

PromQL是Prometheus的查询语言,专门用于处理时间序列数据。时间序列数据是按时间顺序记录的数据点集合,通常用于监控和告警系统。PromQL允许你从Prometheus中提取这些数据,并进行各种操作,如过滤、聚合和计算。

基本查询语法

PromQL的基本查询语法非常简单。你可以通过指定一个指标名称来查询该指标的时间序列数据。例如:

promql
http_requests_total

这条查询语句将返回所有名为 http_requests_total 的时间序列数据。

过滤标签

Prometheus中的时间序列通常带有标签(labels),这些标签可以用来过滤和分组数据。你可以通过在查询中使用 {} 来指定标签过滤条件。例如:

promql
http_requests_total{job="api-server", status="200"}

这条查询语句将返回所有 job 标签为 api-serverstatus 标签为 200http_requests_total 时间序列数据。

时间范围选择

PromQL允许你指定时间范围来选择数据。你可以使用 [time] 语法来选择过去一段时间内的数据。例如:

promql
http_requests_total[5m]

这条查询语句将返回过去5分钟内所有 http_requests_total 时间序列数据。

聚合操作

PromQL提供了多种聚合操作,如 sumavgminmax 等。你可以使用这些操作来对时间序列数据进行聚合。例如:

promql
sum(http_requests_total)

这条查询语句将返回所有 http_requests_total 时间序列数据的总和。

实际案例

案例1:计算HTTP请求的总数

假设你想计算过去5分钟内所有HTTP请求的总数。你可以使用以下查询:

promql
sum(http_requests_total[5m])

这条查询语句将返回过去5分钟内所有 http_requests_total 时间序列数据的总和。

案例2:计算每个服务的平均响应时间

假设你有多个服务,每个服务都有一个 response_time 指标。你想计算每个服务的平均响应时间。你可以使用以下查询:

promql
avg(response_time) by (service)

这条查询语句将返回每个服务的平均响应时间。

总结

PromQL是Prometheus的核心查询语言,掌握其基础查询语法对于使用Prometheus进行监控和告警至关重要。本文介绍了PromQL的基本查询语法,包括如何过滤标签、选择时间范围和进行聚合操作。通过实际案例,你可以更好地理解这些概念。

附加资源

练习

  1. 查询过去10分钟内所有 cpu_usage 时间序列数据。
  2. 计算每个 jobhttp_requests_total 总和。
  3. 查询 response_time 大于100ms的所有时间序列数据。

通过完成这些练习,你将进一步巩固对PromQL基础查询的理解。