# laixintao on Twitter - PromQL 简明教程 (Highlights)

## Metadata
**Cover**:: https://readwise-assets.s3.amazonaws.com/static/images/article1.be68295a7e40.png
**Source**:: #from/readwise
**Zettel**:: #zettel/fleeting
**Status**:: #x
**Authors**:: [[laixintao on Twitter]]
**Full Title**:: PromQL 简明教程
**Category**:: #articles #readwise/articles
**Category Icon**:: 📰
**URL**:: [www.kawabangga.com](https://www.kawabangga.com/posts/4408)
**Host**:: [[www.kawabangga.com]]
**Highlighted**:: [[2021-07-25]]
**Created**:: [[2022-09-26]]
## Highlights
- Range Vector 基本上只是为了给函数用的,Grafana 绘图只能接受 Instant Vector。
- 假如要绘制 1 个小时内的 Chart 的话,Grafana 首先需要你在创建 Chart 的时候传入一个 step 值,表示多久查一个数据,这里假设 step=1min 的话,我们对每分钟需要查询一次数据。
- 60 次请求太多了。所以就有了第二种 API query_range,接收的参数有 ?start=<start timestamp>&end=<end timestamp>&step=60。
- Range Vector 并不是一个“绘制的时间”,而是函数计算所需要的时间区间。
- rate 函数可以帮我们用这段时间([1m])的总 packet 数量,除以时间 [1m] ,就得到了一个“平均值”,以此作为曲线来绘制。
moving average
- irate 是计算的最后两个点之间的差值。
#c1
- 那既然是使用最后两个点计算,这里又为什么需要 [1m] 呢?这个 [1m] 不是用来计算的,是用来限制找 t-2 个点的时间的,比如,如果中间丢了很多数据,那么显然这个点的计算会很不准确,irate 在计算的时候会最多向前在 [1m] 找点,如果超过 [1m] 没有找到数据点,这个点的计算就放弃了。
#c2
- 在计算 rate 的时候,就会识别出来这个下降。但是 sum 不会,所以如果先 sum 再 rate,曲线就会出现非常大的波动。