【博客616】prometheus staleness对PromQL查询的影响
prometheus staleness对PromQL查询的影响
1、prometheus staleness
官方文档的解释:
概括:
-
运行查询时,将独立于实际的当前时间序列数据选择采样数据的时间戳。这主要是为了支持聚合(sum、avg 等)等情况,其中多个聚合时间序列在时间上不完全对齐。由于它们的独立性,Prometheus 需要在这些时间戳处为每个相关时间序列分配一个值。它通过简单地获取此时间戳之前的最新样本来实现。
-
如果目标抓取或规则评估不再返回以前存在的时间序列的样本,则该时间序列将被标记为陈旧。如果一个目标被删除,它之前返回的时间序列将很快被标记为过时的。
-
如果在时间序列标记为陈旧后在采样时间戳处评估查询,则不会为该时间序列返回任何值。如果随后为该时间序列摄取新样本,它们将照常返回。
-
如果在采样时间戳前 5 分钟未找到样本(默认情况下),则此时不会为该时间序列返回任何值。这实际上意味着时间序列在其最新收集的样本早于 5 分钟或被标记为陈旧之后从图表中“消失”。
-
对于在其数据中包含时间戳的时间序列,不会标记过时。在这种情况下,将仅应用 5 分钟阈值。
-
如果您评估像 my_counter_total[10m] 这样的范围向量,它总是返回
评估时间和之前 10 分钟之间的所有数据点。
如果您评估像 my_gauge 这样的即时向量,它将返回之前的最新值
评估时间,但回头看不会超过 5 分钟。
也就是说,当时间序列在过去 5 分钟内没有样本时,它就会“过时”。
这 5 分钟由 -query.staleness-delta 标志控制。改变它很少是个好主意。
2、prometheus staleness data的判定原理
-
如果一次抓取失败,那么前一次抓取的所有时间序列都将被标记为陈旧;
需要这个的原因是:如果有目标已经消失,不再从服务发现中出现了,此时该目标前五分钟的符合告警的数据应该全部标记为过时数据,不再参与告警评估,否则如果对象已经消失,但还持续查其前五分钟的数据来做告警就不合理,那么将会一直发出五分钟的无效告警,这就会导致垃圾告警的产生。
-
如果评估前 5 分钟内没有样本,时间序列将被标记为陈旧。
3、prometheus staleness对非范围向量和范围向量的不同处理方式
-
对于非范围向量选择器则不返回陈旧的数据
-
对于范围向量选择器则完全忽略陈旧标记
4、example及分析
example:
一个样本在一次scrape上曝光一个时间序列,但在下一次scrape时不曝光,然后再次曝光。时间序列现在的值为 t0=7,t10=stale,t20=9。
分析:
如果在 t=0 到 t=10 之前对即时向量选择器求值,则将返回 7。如果在 t=10 或直到 t=20 之前评估即时向量选择器,则不会返回该时间序列。从 t=20 开始,将返回 9。通过这种方式,时间序列的出现和消失得到了正确处理。也就说t10时刻没有曝光此目标,那么t10之前的数据都会被当作staleness data,被隐藏起来,不返回
范围向量选择器的情况:
范围向量完全忽略陈旧标记,因此 avg_over_time 和 rate 等函数将仅作用于非陈旧样本。例如,对上述数据的 count_over_time 将返回 2
scrape失败的情况:
如果刮擦失败,无论出于何种原因,那么前一次刮擦的所有时间序列都将被标记为陈旧。这避免了当一个目标失败时聚合重复计数,一个新的目标被提出来取代它,但原始目标仍在服务发现中。然而,这确实意味着您在使用 Prometheus 2.x 对即时向量发出警报时需要小心,以确保一次失败的抓取不会中断您的警报
当目标从服务发现中消失时的情况:
目标可能会在下一次抓取被安排之前重新出现,所以不能只写下一个目标消失时下一次抓取的陈旧标记。相反,我们所做的是等到这样一个重新创建的目标已经摄取数据(大约 2 个抓取间隔)之后,然后摄取那些陈旧的标记。如果目标被重新创建,那么这些陈旧的标记将被拒绝,因为 TSDB 只允许附加数据——而不是替换最新或以前时间戳的样本。
目标消失的这种行为取决于 Prometheus 在目标消失后继续运行一段时间,以便可以摄取延迟的陈旧标记。如果普罗米修斯要重启或崩溃,那么它们就会丢失。在这种情况下,如果在评估时间之前的 5 分钟内没有样本,则行为会回退到考虑系列陈旧的 2.0 之前的逻辑。这个逻辑并不完美(这就是现在有陈旧标记的原因),但是对于普罗米修斯重新启动的奇怪时间来说已经足够了。 5 分钟通常适用,因为 PromQL 仅回顾 5 分钟以查找样本。在前面的示例中,只有在 t=320 之前的评估才会返回 9。这样做的一个结果是要避免大于大约 2 分钟的刮擦和评估间隔,因为单个失败的刮擦会遇到这种情况。
6、详细解析staleness算法的参考文档
staleness-in-prometheus-2-0
相关文章:

【博客616】prometheus staleness对PromQL查询的影响
prometheus staleness对PromQL查询的影响 1、prometheus staleness 官方文档的解释: 概括: 运行查询时,将独立于实际的当前时间序列数据选择采样数据的时间戳。这主要是为了支持聚合(sum、avg 等)等情况,…...

多传感器融合定位十三-基于图优化的建图方法其二
多传感器融合定位十二-基于图优化的建图方法其二3.4 预积分方差计算3.4.1 核心思路3.4.2 连续时间下的微分方程3.4.3 离散时间下的传递方程3.5 预积分更新4. 典型方案介绍4.1 LIO-SAM介绍5. 融合编码器的优化方案5.1 整体思路介绍5.2 预积分模型设计Reference: 深蓝学院-多传感…...

linux 服务器线上问题故障排查
一 线上故障排查概述 1.1 概述 线上故障排查一般从cpu,磁盘,内存,网络这4个方面入手; 二 磁盘的排查 2.1 磁盘排查 1.使用 df -hl 命令来查看磁盘使用情况 2.从读写性能排查:iostat -d -k -x命令来进行分析 最后一列%util可以看到每块磁盘写入的程度,而rrqpm/s以及…...

Sandman:一款基于NTP协议的红队后门研究工具
关于Sandman Sandman是一款基于NTP的强大后门工具,该工具可以帮助广大研究人员在一个安全增强型网络系统中执行红队任务。 Sandman可以充当Stager使用,该工具利用了NTP(一个用于计算机时间/日期同步协议)从预定义的服务器获取并…...

【SSL/TLS】准备工作:HTTPS服务器部署:Nginx部署
HTTPS服务器部署:Nginx部署1. 准备工作2. Nginx服务器YUM部署2.1 直接安装2.2 验证3. Nginx服务器源码部署3.1 下载源码包3.2 部署过程4. Nginx基本操作4.1 nginx常用命令行4.2 nginx重要目录1. 准备工作 1. Linux版本 [rootlocalhost ~]# cat /proc/version Li…...

微搭低代码从入门到精通11-数据模型
学习微搭低代码,先学习基本操作,然后学习组件的基本使用。解决了前端的问题,我们就需要深入学习后端的功能。后端一般包括两部分,第一部分是常规的数据库的操作,包括增删改查。第二部分是业务逻辑的编写,在…...

【算法基础】前缀和与差分
😽PREFACE🎁欢迎各位→点赞👍 收藏⭐ 评论📝📢系列专栏:算法💪种一棵树最好是十年前其次是现在1.什么是前缀和前缀和指一个数组的某下标之前的所有数组元素的和(包含其自身&#x…...

LTD212次升级 | 官网社区支持PC端展示 • 官网新增证件查询应用,支持条形码扫码查询
1、新增证件查询应用,支持条形码扫码查询; 2、新增用户社区PC端功能; 01证件查询应用 1、新增证件查询应用功能 支持证件信息录入、打印功能,支持条形码扫码识别。 后台管理操作路径:官微中心 - 应用 - 证件查询 …...

【安全】nginx反向代理+负载均衡上传webshell
目录 一、负载均衡反向代理下上传webshell Ⅰ、环境搭建 ①下载蚁剑,于github获取官方版: ②下载docker&docker-compose ③结合前面启动环境 ④验证 负载均衡下webshell上传 一、负载均衡反向代理下上传webshell 什么是反向代理? 通常的代…...

线程池框架
这是之前有做的一个可以接受用户传入任意类型的任务函数和任意参数,并且能拿到任务对应返回值的一个线程池框架,可以链接成动态库,用在相关项目里面。一共实现了两版,都是支持fixed和cached模式的,半同步半异步的&…...

【TCP的拥塞控制】基于窗口的拥塞控制
TCP的拥塞窗口CWND大小和传输轮次n的关系如下所示。(本题10分) cwnd12481632333435363738394041422122232425261248N1234567891011121314151617181920212223242526 问题: (1)慢开始阶段的时间间隔?&#…...

STP协议基础
STP协议技术来源二层环路及危害二层交换机网络的冗余性与环路人为错误导致的二层环路二层环路带来的问题STP生成树协议STP概述STP基本概念桥ID根桥COSTRPC(Root Path Cost)根路径开销PORT ID端口IDBPDU桥协议数据单元STP的计算过程(1…...

Linux上面配置Apache2支持Https(ssl)具体方案实现
虽然Nginx比较流行,但是由于一些老项目用到了Apache2来支持Web服务,最近想给服务上一个Https支持,虽然看似教程简单,但是也遇到一些特殊情况,经历了一番折腾也算是解决了所有问题,将过程记录如下。演示是基…...

[Linux]进程替换
🥁作者: 华丞臧. 📕专栏:【LINUX】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉 LeetCode刷题网站 文…...
常见的锁策略面试题
你是怎么理解乐观锁和悲观锁的,具体怎么实现呢? 悲观锁认为多个线程访问同一个共享变量冲突的概率较大, 会在每次访问共享变量之前都去真正加锁 乐观锁认为多个线程访问同一个共享变量冲突的概率不大. 并不会真的加锁, 而是直接尝试访问数据. 在访问的…...

设计师一定要知道这几个网站,解决你80%的设计素材。
本期推荐一波设计师必备的设计素材网站,设计党赶紧马住!能解决你日常设计中80%的素材。 1、菜鸟图库 菜鸟图库-免费设计素材下载 这是一个为新手设计师提供免费素材的设计网站,站内有超多平面模板、海报、UI设计、电商设计等相关素材&#x…...

QT基础入门
学习视频:QT开发概述_哔哩哔哩_bilibili 1.QT开发概述 1.什么是QT QT是一个1991年由Qt Company开发的跨平台C图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架&#…...
高数不定积分72题解答
题目来源:这72道积分题目会积了,绝对是高高手 作者: 湖心亭看雪 第一题 原式∫15x3dx15∫15x3d(5x3)15ln(5x3)C\begin{aligned} \text{原式}&\int \frac{1}{5x3}dx \\ &\frac{1}{5} \int\frac{1}{5x3}d(5x3) \\ &\frac{1}{5} ln…...

基于北方苍鹰算法优化LSTM(NGO-LSTM)研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

Linux内核启动(理论,0.11版本)分段与分页
为什么要虚拟内存 我们知道,在之前上微机原理时,我们的程序是可以直接访问内存的,而且访问的是直接的物理内存,在实模式下,寄存器是16位的,数组总线(data bus)是16位的,…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
今日科技热点速览
🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
django blank 与 null的区别
1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是,要注意以下几点: Django的表单验证与null无关:null参数控制的是数据库层面字段是否可以为NULL,而blank参数控制的是Django表单验证时字…...