PromQL(Prometheus Query Language)是 Prometheus 监控系统中用于查询时间序列数据的查询语言。它提供了丰富的功能,包括数据选择、范围选择、聚合计算等。以下是一些 PromQL 的基本语法:
选择特定的指标或标签组合,语法如下:
metric_name{label1="value1", label2="value2"}
例如,选择 HTTP 请求延迟的指标,方法类型为 GET,URL 地址为 /api/users:
http_requests_latency_seconds{method="GET", path="/api/users"}
选择一段时间范围内的数据,语法如下:
metric_name{label1="value1", label2="value2"}[duration]
其中,duration 可以是秒(s)、分钟(m)、小时(h)、天(d)、周(w)或年(y)。
例如,选择过去5分钟内 HTTP 请求延迟的指标:
http_requests_latency_seconds{method="GET", path="/api/users"}[5m]
对所选数据进行聚合计算。PromQL 支持多种聚合操作符,如 sum、count、avg、min、max 等。语法如下:
aggregate_op(metric_name{label1="value1", label2="value2"})
例如,计算过去 5 分钟内 HTTP 请求延迟的平均值:
avg(http_requests_latency_seconds{method="GET", path="/api/users"}[5m])
PromQL 支持使用 =、!= 以及正则表达式 =~ 和 !~ 进行标签匹配,语法如下:
metric_name{label=~"regexp"}
例如,选择所有处理器为 /graph 或 /rules 或 /metrics 的 HTTP 请求总数:
prometheus_http_requests_total{handler=~"/graph|/rules|/metrics"}
以上是 PromQL 的一些基本语法。PromQL 还支持更多的复杂查询和操作符,可以满足各种时间序列数据的查询需求,后续将详细介绍。