首页 > 其他分享 >【博客708】victoriametrics如何处理counter跳变

【博客708】victoriametrics如何处理counter跳变

时间:2024-03-31 12:03:33浏览次数:11  
标签:跳变 708 counter values https true prevValue

victoriametrics如何处理counter跳变

背景

监控中我们经常会使用一些counter类型的metrics来计算速率,比如:rate(https_request_total)
但是如果我们的服务突然由于异常导致重启了,那么这时候counter会重新从0开始计算,那么这时候就会有问题,假设我们原来https_request_total是计数到500,然后服务异常重启,启动后https_request_total是0,那么此时如果没有counter跳变的处理,那么rate(https_request_total)就会变成负数,我们期待的是当异常重启后,能够在原来基础上,从500继续计数,但是我们服务又不会记得上一次的值(不是不能处理,其实存下来每次启动读取也能实现,只是不应该把这部分基建层的逻辑侵入到业务里面去),所以就依赖于监控方案来处理!

victoriametrics对counter跳变的处理

counter重置会补上前面的值,同时如果跳变只是一小下,那么补上差值即可,不需要直接加上前一个值:

更多细节的相关issue:https://github.com/VictoriaMetrics/VictoriaMetrics/issues/2787

func removeCounterResets(values []float64) {
    // There is no need in handling NaNs here, since they are impossible
    // on values from vmstorage.
    if len(values) == 0 {
        return
    }
    var correction float64
    prevValue := values[0]
    for i, v := range values {
        d := v - prevValue
        if d < 0 {
            if (-d * 8) < prevValue {
                // This is likely a partial counter reset.
                // See https://github.com/VictoriaMetrics/VictoriaMetrics/issues/2787
                // 这里做了部分reset的优化
                correction += prevValue - v
            } else {
                // 这里叠加了上一个值,也是就在原来基础上继续计算counter
                // 这就是为什么服务重启后,明明counter变小了,但是对counter进行计算却不会出错的原因 
                correction += prevValue
            }
        }
        prevValue = v
        values[i] = v + correction
    }
}

类似的,victoriametrics会自动处理counter的函数:

// rollupFuncsRemoveCounterResets contains functions, which need to call removeCounterResets
// over input samples before calling the corresponding rollup functions.
var rollupFuncsRemoveCounterResets = map[string]bool{
    "increase":            true,
    "increase_prometheus": true,
    "increase_pure":       true,
    "irate":               true,
    "rate":                true,
    "rollup_increase":     true,
    "rollup_rate":         true,
}

标签:跳变,708,counter,values,https,true,prevValue
From: https://blog.csdn.net/qq_43684922/article/details/137195673

相关文章

  • 巴旦木(美国大杏仁)到2030年市场规模将接近708亿元
    一、市场趋势分析作为一种健康且多功能的坚果,巴旦木(又称美国大杏仁)在全球范围内因其营养价值和美味口感而受到消费者的青睐。随着健康食品趋势的兴起,巴旦木的需求持续增长,尤其在零食和烘焙行业中被广泛应用。二、主要竞争者概览市场上的主要竞争来自拥有强大种植和加工能力......
  • CSCI 5708移动计算
    CSCI4176/CSCI5708移动计算截止日期:2023年11月14日星期日下午11点59分提交:在Brightspace请阅读-所有课业的一般重要说明:•对于要求您进行在线搜索的研究类型ques/ons或ques/ons,请确保您的答案中正确引用了所有参考文献。使用IEEE参考样式。•请记住,不能仅仅因为引用了参考文......
  • 论文解读(CGC)《Generating Counterfactual Hard Negative Samples for Graph Contrasti
    Note:[wechat:Y466551|可加勿骚扰,付费咨询]论文信息论文标题:GeneratingCounterfactualHardNegativeSamplesforGraphContrastiveLearning论文作者:论文来源:2023WWW论文地址:download 论文代码:download视屏讲解:click0-摘要图对比学习已经成为一种强大的无监督图......
  • 「杂题乱刷」洛谷 P1708
    题目链接P1708解题思路解法一:考虑预处理,这部分可以直接打表。其他题解这部分讲的比较详细了,在此不再赘述。期望得分\(100\)分。解法二:考虑数位dp。这里采用记搜的写法。dfs(last,sum,maxsum,_1)分别表示还需要枚举几位数,目前枚举的数位和,可以枚举的最大数位和,是否均......
  • Windows RDP远程漏洞|CVE-2019-0708
    WindowsRDP远程漏洞|CVE-2019-0708目录WindowsRDP远程漏洞|CVE-2019-07081描述:2影响范围:3漏洞检测3.10708detector3.1.1程序说明3.1.2下载地址3.1.3使用方法3.2cve_2019_0708_bluekeep.rb4缓解措施5修复建议:1描述:北京时间2019年5月14日当未经身份验证的攻击者使......
  • 【题解】「HDU 7084」Pty loves string
    CQBZOJHDU7084不难想到把最终在\(S\)从中间分开,就变成了前后两个broder拼起来。考场重现:直接把所有的broder求出来,将相同长度的broder的下标存在一起,然后暴力匹配,最后还没来及优化。考场代码(除了fail树,其她其实都挺逼近正解正解是建出fail树(甚至搞忘还有这东......
  • P7086 题解
    考虑把每个字符串的前\(k\)位和后\(k\)位看成点,字符串看成边,那么一个字符串前缀后缀至少有一个是相似群体的前缀后缀,看成这条边的两个端点至少有一个被选中。那么这就变成了一个最小点覆盖问题。考虑匈牙利算法算出答案,然后考虑如何构造答案。考虑右边没有被匹配的点,选中这......
  • P4708 画画 题解
    先叠层甲。此解法非本题正解如果想看正解可以去看上面\(Sdchr\)或\(Log_x\)大佬的。第一眼看到此题,\(N\)个点的无标号的每个连通块有欧拉回路的图的个数。这不就是\(N\)阶赛德尔矩阵的个数吗?什么?你不知道赛德尔矩阵是什么。没关系。这东西是个很小众的东西。百度上都......
  • windows server 2019/2022安装WSUS更新服务器配置System.Runtime.InteropServices.COM
    现象: 2024-02-1814:41:10Postinstallstarted2024-02-1814:41:10Detectedroleservices:Api,UI,WidDatabase,Services2024-02-1814:41:10Start:LoadSettingsFromXml2024-02-1814:41:10Start:GetConfigValuewithfilename=UpdateServices-Services.xmlit......
  • Encountered fatal error while reloading routing: Routing trace file does not mat
      efinity编译在routersetup时候报错Encounteredfatalerrorwhilereloadingrouting:Routingtracefiledoesnotmatchnetlist(netlistnetcount24888v.tracenetcount0).  解决方案:检查客户工程的PNR页面。beneficialskew页面是否打开,如果是on状态,试......