【博客672】prometheus使用数据外推与兼容跳变重置来优化处理窗口函数(rate,irate,increase)

news2024/12/25 8:50:41

prometheus使用数据外推与兼容跳变重置来优化处理窗口函数(rate,irate,increase)

场景

以下是用于计算计数器增长率的三个函数之间差异的高级概述:

  • rate():这计算每秒的增长率,在整个提供的时间窗口内平均。示例:rate(http_requests_total[5m])生成 5 分钟时间窗口内平均的每秒 HTTP 请求速率。此函数是最常见的,因为它产生具有可预测的每秒输出单位的良好平滑速率。
  • irate()(“即时速率”):这与 类似,计算每秒的增长率rate(),但仅考虑提供的时间窗口下的最后两个样本进行计算,并忽略所有较早的样本。示例:irate(http_requests_total[5m])查看提供的 5 分钟窗口下的最后两个样本,并计算它们之间的每秒增长率。如果您想让放大的图表显示对速率变化的快速响应,则此函数会很有帮助,但输出会比rate().
  • increase():此函数与完全相同,只是rate()它不将最终单位转换为“每秒”( 1/s)。相反,最终的输出单位是每个提供的时间窗口。示例:increase(http_requests_total[5m])得出 5 分钟窗口内处理的 HTTP 请求的总增量(单位:)1 / 5m。因此increase(foo[5m]) / (5 * 60)100% 相当于rate(foo[5m]).

所有三个函数都要求在提供的范围窗口下至少需要两个样本才能工作。窗口下样本少于两个的系列将被简单地从结果中删除。

在给定固定时间窗口和属于该窗口的一些数据点的情况下,如何准确计算增量是一个权衡和不完美近似的问题。Prometheus 选择一种方法,旨在在仅给出所提供窗口下的有限数据的情况下提供平均最正确的答案。让我们更详细地看看它是如何做到这一点的:数据外推 + 处理计数器重置

数据外推

经常让人们感到困惑的是rate()和increase()函数的推断行为。例如,即使对于只有整数增量的计数器,也increase()可以返回非整数结果。2.5883原因是increase()试图近似计数器在指定时间窗口的总持续时间内的增加(例如,在 的情况下为 5 分钟increase(foo[5m]))。但实际上,在时间窗口下找到的第一个和最后一个样本永远不会与提供的时间窗口的开始和结束 100% 重合。因此increase()(也rate())将窗口下的第一个和最后一个数据点之间的斜率外推到窗口边界,以获得平均更接近整个窗口的预期增量的值(如果实际上在窗口边界精确存在样本) 。

下图显示了使用rate()1 分钟窗口和间隔 15 秒的样本的示例,1窗口下发生了一个实际计数器的增加:

在这里插入图片描述
正如您所看到的,报告的结果基于窗口下第一个和最后一个样本之间的斜率(几乎正确,请参阅下一节有关计数器重置的内容),并外推到窗口边界。

注意:这种推断行为有一些例外:当一个系列看起来像是在提供的时间窗口内开始或结束时,我们不想在该系列终止的方向上推断得太远。和函数猜测,当第一个或最后一个样本距其各自窗口边界的距离超过窗口下样本之间平均间隔的 1.1 倍时,序列将在窗口下开始或结束rate()。increase()在这种情况下,外推仅向窗口边界延伸平均样本间隔的一半,但不会一直延伸。同样,这些函数避免外推到负值,因为计数器始终从0并且永远不能为负数。0相反,外推仅在达到预期值之前发生。
在这里插入图片描述

由于irate()实际上只查看两个样本之间每秒的增量,因此它不会进行任何此类外推。

处理计数器重置

尽管计数器通常只会上升,但0只要跟踪它们的进程重新启动,它们就会重置。为了不将这些重置解释为实际的负利率,与计数器相关的函数具有检测和处理这些重置的逻辑:在提供的时间窗口下迭代样本时,这些函数检查是否有任何样本的值低于前一个样本的值,并将这种情况解释为计数器重置。0使用计数器始终在重置后开始的进一步假设,这些函数只需将新的样本值添加到之前看到的样本值中,以补偿重置。

以下示例图显示了rate()计算如何处理在提供的窗口下发生的计数器重置。您可以将其想象为rate()从底层“真实”样本创建一组“虚拟”样本。然后根据虚拟样本计算最终速率,就好像从未发生过重置一样:

在这里插入图片描述

注意:每当计数器重置时,它有可能在普罗米修斯最后一次刮擦之后、重置之前增加。这些增量对于普罗米修斯来说永远丢失了,而且没有办法找回来。为了最大限度地减少这种影响,重置应该偶尔发生一次,并且比普罗米修斯刮擦目标的频率要低得多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/684435.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

谷歌推出“能讲会听”的大语言模型AudioPaLM,实现语音理解和生成

出品人:Towhee 技术团队 作者:顾梦佳 近日,谷歌推出了一个能够理解并生成语音理解的大型语言模型——AudioPaLM。这一模型融合了分别基于文本和语音两种语言模型——PaLM-2 和 AudioLM,形成了一个统一的多模态架构。该模型不仅能对…

@monthly /root/.cfg/./dealer病毒清除

登录服务器时,ssh提示密码不对,就去控制台检查,查看到虚拟平台中多台服务器提示虚拟机CPU使用告警,占用过高。远程无法登录。 原因分析:所有中毒的均为linux服务器,密码设置过于简单,防火墙关闭…

【算法题】统计各位数字之和为偶数的整数个数、替换空格、旋转数组的最小数字

算法题之数字处理 一、统计各位数字之和为偶数的整数个数1.1、题目1.2、理解题目1.3、解题思路(暴力枚举)1.4、解题思路2(数学公式)1.5、小结 二、替换空格2.1、题目2.2、解题:遍历原地修改 三、旋转数组的最小数字3.1…

如何判断TongWeb是否支持某种数据库?

起因: 数据库连接池本是一项成熟的技术,但随着数据库厂家、种类的增加,常常被问到TongWeb是否支持XX数据库? 说明: 数据库连接池的基本思路是,平时建立适量的数据库的连接,放在一个集合中&…

举例说明,JS中的【return true】和【return false】的【使用场景】

1.return true和return false都是写在函数里面 2.如果一个函数需要有返回值,则函数中需要写return相关 3.return true和return false是之后调用这个函数判断用: 如果一个函数需要返回值,则需要在函数中添加return 如果函数中添加的是 比如 …

2-css-4

一 标准流 标准流也叫文档流,指的是标签在页面中默认的排布规则,例如:块元素独占一行,行内元素可以一行显示多个。 二 浮动 1 认识 作用:让块元素水平排列。 属性名:float 属性值 left:左…

跳槽过去,刚工作三天就被裁是一种怎样的体验

前言 还有谁?刚上三天班就被公司公司的工作不适合我,叫我先提升一下。 后面我也向公司那边讨要了一个说法,我只能说他们那边的说辞让我有些不服气。 现在之所以把这件事在csdn上记录一下,一是记录一下自己的成长轨迹&#xff0…

2023计算机组成原理【5-7】

第五章 中央处理器 1.指令周期的概念,与时钟周期、机器周期的区别。 指令周期是执行一条指令所需的时间,包括多个子阶段的时间总和时钟周期是计算机系统中的基本时间单位,由时钟信号控制,用于同步处理器和其他组件的操…

Collectors.toMap使用详解

这里写目录标题 一、使用规则二、源码及方法三、代码示例1.将list转成以id为key的map&#xff0c;value是id对应的Dept对象2.假如id存在重复值&#xff0c;则会报错Duplicate key xxx, 解决方案是3.想获得一个id和name对应的Map<Integer, String>4.把Dept集合按照group分…

5年软件测试工作经验,高不成低不就,真的只能转行了吗?

迷茫感&#xff0c;从哪里来&#xff1f; 不知不觉在软件测试行业&#xff0c;野蛮生长了5年之久。这一路上拥有了非常多的感受。有迷茫&#xff0c;有踩过坑&#xff0c;有付出有收获&#xff0c; 有坚持&#xff01; 我一直都在软件测试行业奋战&#xff0c; 毕业时一起入职…

制作自定义pfx证书(数字签名)

目录 生成server.key 生成server.crt 生成server.pfx 结果 exe文件签名 生成server.key openssl genrsa -des3 -out server.key 2048 Generating RSA private key, 2048 bit long modulus (2 p

单独生成 main.exe, pyinstaller × pyecharts 打包报错找不到文件 map_filename.json 一次搞定!

报错&#xff1a; FileNotFoundError: [Errno 2] No such file or directory: ‘C:\Users\xxx\AppData\Local\Temp_MEI3455\pyecharts\datasets\map_filename.json’ pyecharts 打包成 exe 的时候找不到 map_filename.json 文件。先找到这个文件,一般在本机 Python 安装目录下…

一文掌握linux系统管理命令

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

SuperMap GIS基础产品移动GIS FAQ集锦(3)

SuperMap GIS基础产品移动GIS FAQ集锦&#xff08;3&#xff09; 【iMobile】网络分析中设置权值字段&#xff0c;如何添加多个权值字段&#xff1f; 【解决办法】通过权值字段集合类&#xff08;WeightFieldInfos&#xff09;设置&#xff0c;该类是权值字段信息对象&#x…

回波3DFFT处理(测距、测速、测角)

回波3DFFT处理&#xff08;测距、测速、测角&#xff09; 1、测距、测速2、测角3、3DFFT处理4、MATLAB程序 本文主要针对TI 毫米波雷达的测距、测速、测角的基本方法——3DFFT处理进行简单介绍&#xff0c;并提供MATLAB处理程序&#xff0c;分析3DFFT处理结果。 1、测距、测速…

高等数学下拾遗+与matlab结合

如何学好高等数学 高等数学是数学的一门重要分支&#xff0c;包括微积分、线性代数、常微分方程等内容&#xff0c;它是许多理工科专业的基础课程。以下是一些学好高等数学的建议&#xff1a; 扎实的基础知识&#xff1a;高等数学的内容很多&#xff0c;包括初等数学的一些基…

Postgresql源码(107)analyze行采样流程分析(pg_class中reltuples行数评估是哪里来的准确吗)

总结 pg_class中reltuples行数评估是哪里来的&#xff1f; 行数评估发生在acquire_sample_rows采样函数中&#xff0c;算作采样的副产品之一。 总行数评估totalrows即&#xff1a;扫到页面中live元组的数量 / 扫到多少页面 * 总页面&#xff0c;向上取整。 pg_class中reltu…

十九、socket套接字编程——udp

文章目录 一、socket套接字编程接口&#xff08;一&#xff09;socket头文件&#xff08;二&#xff09;socket 常见API&#xff08;套接字编程接口&#xff09;1. 创建 socket 文件描述符 (TCP/UDP, 客户端 服务器 )2.绑定网络信息 (TCP/UDP, 服务器 )3.开始监听 socket (TCP…

【安装教程】KingFunsion3.6-Windows版本的安装教程

哈喽&#xff01;大家好&#xff0c;我是雷工&#xff01; 由于项目需要今天学习认识KingFunsion3.6及记录Windows版本的安装教程。 一、KingFunsion介绍 1、KingFunsion是什么&#xff1f; KingFunsion是一款面向工程师的管控一体化全组态平台&#xff0c;是一套面向制造企…

Flutter进阶-Future、FutureBuilder、StreamBuilder详解

一、时间循环 Event Loop机制 程序之所以卡说白了就是没有时间更新UI界面刷新屏幕导致 常见的卡顿主要是两种&#xff1a; 1.很大的计算量CPU忙不过来 2.等待&#xff0c;等服务器的响应、等用户的输入、等文件的读取...等等 在多线程的机制里每当遇到需要等的东西就开启一…