本文让我们一起来看看PromQL查询解析。虽然PromQL有操作符、函数、选择器等,但我们无需被本篇文章中的这些细节所困扰。让我们来看看查询的总体性质:PromQL查询是如何结构化和类型化的?随着时间的推移它们是如何评估的?
让我们来看一下PromQL的查询结构。PromQL有操作符、函数、选择器等等,但是我们不要被本篇文章中的细节所困扰。相反,让我们看看查询的整体:PromQL查询是如何构造和输入的,以及随着时间的推移它们是如何被评估的?
让我们开始吧!
1.PromQL是一种嵌套的函数式语言
不像SQL或其他一些更倾向于命令式的查询语言(SELECT * FROM...),PromQL是一种嵌套的函数式语言。这意味着您将所寻找的数据描述为一组嵌套表达式,每个表达式都计算出一个中间值(没有副作用)。每个中间值都用作它周围表达式的参数或操作数,而查询的最外层表达式表示您在表、图或类似用例中看到的最终返回值。
查询示例如下所示:
# Root of the query, final result, approximates a quantile.
histogram_quantile(
# 1st argument to histogram_quantile(), the target quantile.
0.9,
# 2nd argument to histogram_quantile(), an aggregated histogram.
sum by(le, method, path) (
# Argument to sum(), the per-second increase of a histogram over 5m.
rate(
# Argument to rate(), the raw histogram series over the last 5m.