Prometheus: remote_read的read_recent参数对查询的影响

时间:Aug. 13, 2021 分类:

目录:

read_recent: true表示近期数据也要读远程存储,因为Prometheus近期数据无论如何都是要读本地存储的,如果开启这个标志位,Prometheus会把本地和远程的数据进行Merge。开启这个标志位,可以方便验证读取远程TSDB是否正常工作。如果正式在生产环境,可以根据实际情况将read_recent: true去掉,可提升Prometheus的查询性能。

func (c *sampleAndChunkQueryableClient) ChunkQuerier(ctx context.Context, mint, maxt int64) (storage.ChunkQuerier, error) {
    cq := &chunkQuerier{
        querier: querier{
            ctx:              ctx,
            mint:             mint,
            maxt:             maxt,
            client:           c.client,
            externalLabels:   c.externalLabels,
            requiredMatchers: c.requiredMatchers,
        },
    }
    if c.readRecent {
        return cq, nil
    }

    var (
        noop bool
        err  error
    )
    cq.querier.maxt, noop, err = c.preferLocalStorage(mint, maxt)
    if err != nil {
        return nil, err
    }
    if noop {
        return storage.NoopChunkedQuerier(), nil
    }
    return cq, nil
}