PromQL 示例:子查询

什么是 "分辨率" ?

在 Prometheus 中,"分辨率" 指的是数据采集和存储的粒度。它通常与采样率和存储的时间序列数据的精度有关。Prometheus 采集的指标数据是基于时间序列的,每个时间序列数据点都包含了一个时间戳和一个值。

分辨率可以从两个方面来理解:

  • 采集分辨率:这是指 Prometheus 从目标(例如服务或应用程序)采集指标数据的频率。默认情况下,Prometheus 每秒采集一次数据,这意味着每个指标的时间序列数据点之间的时间间隔是 1 秒。然而,可以通过配置来调整这个采集频率,以适应不同的需求。

  • 存储分辨率:这是指 Prometheus 在存储时间序列数据时所保留的精度。默认情况下,Prometheus 会将采集到的数据以 15 秒的分辨率存储,这意味着每个数据点实际上代表的是 15 秒内的平均值。这种降采样(downsampling)是为了减少存储需求和查询负载。然而,Prometheus 也支持存储原始数据或更高分辨率的数据,这可以通过配置调整。

在查询 Prometheus 时,你可以通过指定时间范围和分辨率来获取数据。例如,你可以请求过去 30 分钟内每分钟的平均数据,或者你可以请求每 5 分钟的速率数据。Prometheus 会根据你的请求和存储的数据分辨率来返回相应的结果。

注意:分辨率的选择应该根据你的具体需求和数据特性来决定。过高的分辨率会增加存储和查询的负载,而过低的分辨率可能会丢失一些重要的细节信息。因此,在实际使用中,需要根据监控目标的特点和业务需求来平衡分辨率的选择。

示例一:使用子查询计算速率

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

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

让我们逐步分析这个查询:

  1. prometheus_http_requests_total[5m]  这部分选择了 prometheus_http_requests_total 指标在过去 5 分钟内的数据点。[5m] 表示一个范围向量选择器,它选择了一个时间窗口内的数据点。

  2. rate(...)  函数 rate() 计算指标的平均增长率。在这个例子中,它计算了 prometheus_http_requests_total 指标在过去 5 分钟内的平均增长率。rate() 函数会对选定的时间窗口内的数据点进行采样,并计算这些样本点之间的增长率。

  3. rate(prometheus_http_requests_total[5m])[30m:1m]  这里的 [30m:1m] 是一个矩阵选择器。它选择了过去 30 分钟内每 1 分钟的数据点。

执行结果如下图:

PromQL 示例:子查询

示例二:嵌套子查询

这是一个嵌套子查询的示例,用于 deriv 函数的子查询使用默认分辨率:

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

让我们逐步分析这个查询:

  • prometheus_http_requests_total[5m]  选择了 prometheus_http_requests_total 指标在过去5分钟内的数据点。

  • rate(prometheus_http_requests_total[5m])  使用 rate() 函数计算了prometheus_http_requests_total 指标在过去5分钟内的平均增长率。

  • rate(prometheus_http_requests_total[5m])[30m:5m]  使用矩阵选择器 [30m:5m] 选择了过去30分钟内,每5分钟计算一次的平均增长率。

  • deriv(...)  函数 deriv() 计算了输入矩阵的导数,即增长率的变化率。在这个上下文中,它计算了每5分钟平均增长率的变化率。

  • deriv(rate(prometheus_http_requests_total[5m])[30m:5m])[1h:]  使用范围向量选择器 [1h:] 选择了从1小时前到现在的数据点,这些数据点是每5分钟平均增长率的变化率。

  • max_over_time(...)  函数 max_over_time()  从其输入的时间序列中选择每个时间点的最大值。在这个查询中,它返回了从1小时前到现在的时间段内,每5分钟平均增长率的变化率的最大值。

总结来说,这个查询的目的是找到在过去1小时内,prometheus_http_requests_total 指标每5分钟平均增长率的变化率的最大值。这可以帮助你识别出在指定时间段内,请求速率变化率的最大峰值,这可能是由于某些突发事件或系统行为引起的。

执行结果如下图:

PromQL 示例:子查询

说说我的看法
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号