关于即时向量和范围向量,我仍然不明白
即时向量 - 一组时间序列,每个时间序列包含一个样本,所有时间序列共享相同的时间戳。
范围向量 - 一组时间序列,其中包含每个时间序列随时间变化的一系列数据点。
我只能绘制一个即时向量。
当我在表达式中写入时,我得到即时向量:my_metric_name并且我看到没有时间戳的指标值。那么如何将其绘制成图表呢?如果它现在只有一个值。范围向量似乎更合乎逻辑,因为它具有每个时间戳的值(写作my_metric_name[5m])
你能向我解释一下我在这里不明白的这两个向量的外观/工作原理吗?
谢谢你!
zan*_*ngw 27
总结自
\n\nhttp_requests_total是一个向量,表示服务接收到的 http 请求总数http_requests_total{code="200"}http_requests_total 指的是指定的整个时间序列集。通过附加 a {code="200"},我们\xe2\x80\x99 正在选择一个子集。http_requests_total想象一下在给定时间戳评估表达式。http_requests_total 是一个即时向量选择器,它为具有度量名称 的任何时间序列选择最新样本http_requests_total。更具体地说,“最新”意味着“最多 5 分钟且不陈旧” “最新”意味着相对于评估时间戳因此,此选择器只会为在评估时间戳之前最多 5 分钟具有样本的系列生成结果,并且评估时间戳之前的最后一个样本不是过时标记(将系列标记为在某个时间点终止的显式方法) Prometheus TSDB 中的特定时间)。[15m]。这部分称为范围选择器,它将瞬时向量转换为范围向量。然后,我们使用像increase这样的函数,它可以有效地从范围末尾的数据点中减去范围开头的数据点。increase(http_requests_total{code="200",handler="/api/v1/query"}[15m])代表it is the increase in the total number of requests over the past fifteen minutesval*_*ala 20
VictoriaMetrics作者在这里。这是一个类似 Prometheus 的监控系统,它支持类似 PromQL 的查询语言 - MetricsQL。
instant vector在普罗米修斯中, 和确实range vector是令人困惑的术语。这就是 VictoriaMetrics 文档中避免使用这些术语的原因。Prometheus 查询语言 - PromQL - 提供各种功能,可分为两组:
instant vector. 此类函数可以分为以下子组:
range vector. VictoriaMetrics 将此类函数命名为汇总函数,因为它们根据方括号中指定的给定后视窗口(也称为滑动窗口)上的输入时间序列样本来计算结果。例如,计算过去 5 分钟内时间序列rate(http_requests_total[5m])的平均每秒增长率。http_requests_total从用户的角度来看, 和 之间的唯一区别是instant vector和range vector是通过在方括号中添加后视窗口range vector来构造的。instant vector例如,http_requests_total是一个instant vector,而http_requests_total[5m]是一个range vector。我想说,该range vector语法只是PromQL 中汇总函数的语法糖。例如,rate(m[d])可以写为rate(m, d),例如,后视窗口d可以作为单独的参数传递给汇总函数。
当我开始学习Prometheus时,我也有类似的问题。
首先要注意的是,Prometheus 表达式语言评估为四种类型。
(即时向量与范围向量在我下面链接的资源中得到了很好的解释。)
Prometheus HTTP API有两种类型,
通过 Prometheus UI 查询时,结果可以表示为table或graph。
如果您检查从 Prometheus UI 进行的 API 调用,您会注意到
这会产生四种组合:
查询返回即时向量(通过范围查询 API 端点)
当我们从表视图切换到图形视图时,Prometheus UI 会调用范围查询端点。范围查询端点本质上只是运行一系列即时查询的语法糖。该端点可以轻松可视化/绘制时间序列图表。
如果范围查询端点不存在,则必须进行多个即时查询调用才能生成特定时间段的图表。
API 调用中的步骤(秒)决定应获取多少个值。(显然这里可能的最高分辨率取决于抓取间隔)。step=2 表示在这两个时间戳之间,请为我们提供每秒的值。
查询返回范围向量(通过即时查询 API 端点)
查询返回范围向量(通过范围查询 API 端点)
失败并出现错误“执行查询时出错:范围查询的表达式类型“范围向量”无效,必须是标量或即时向量”
您无法直接绘制范围向量输出的图表,因为它会在图表中的每个分辨率步骤为每个系列生成多个输出点。此外,不能保证向量中的每个元素在给定范围内具有相同数量的样本。
学习资源
要了解更多信息,请参阅以下我发现非常有用的资源
小智 5
您需要熟悉另外两个相关术语:
因此,您的表达式中可以包含许多即时和范围向量,并作为即时或范围查询发送到 Prometheus 。
小智 1
这个视频帮助我理解了同样的问题,希望它也能帮助你。
https://training.robustperception.io/courses/204997/lectures/3156025
| 归档时间: |
|
| 查看次数: |
28917 次 |
| 最近记录: |