【问题标题】:Prometheus 范围向量默认值
【发布时间】:2022-01-22 00:55:05
【问题描述】:

我正在尝试编写一个查询来查找在一定时间内值相同的实例。这种类型的查询大部分只对报告值为 0 或 1 的“元数据”指标有用。

在我的例子中,如果一个指标在 20 分钟内的值为 1,我很感兴趣。我的方法是随着时间的推移获取最小值,就好像时间序列在 20 分钟窗口内只有一个 0 值,它会报告为 0。

min_over_time(meta_metric[20m]) > 0

这适用于大多数部分,但创建新时间序列的实例除外。在这些情况下,如果时间序列以值 1 开头,则结果会导致时间序列在整整 20 分钟内都具有值 1,因为窗口中的所有其他值都为空。

是否有任何方法可以将空值默认为 0 或忽略缺少值的窗口?

【问题讨论】:

    标签: prometheus promql


    【解决方案1】:

    如果您知道每个时间序列中原始样本之间的间隔(在 Prometheus 世界中也称为 scrape_interval),则可以使用以下查询:

    min_over_time(meta_metric[20m]) > 0 and count_over_time(meta_metric[20m]) > N
    

    其中N 必须替换为 20 分钟后视窗口中每个时间序列的最小原始样本数,必须考虑到这一点。例如,如果原始样本之间的间隔为 1 分钟,则可以将 N 替换为接近 20 的数字。

    【讨论】:

    • 这也是我想到的解决方案之一,但感觉更像是一种黑客攻击。特别是因为它假设刮擦间隔将保持不变。现在我想这是“最”正确的答案,因为似乎没有其他选择。
    猜你喜欢
    • 1970-01-01
    • 2011-07-25
    • 2021-01-20
    • 2017-04-04
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多