【博客616】prometheus staleness对PromQL查询的影响

news2024/9/30 15:06:34

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

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

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

相关文章

【ChatGpt】——不一样的使用感受分享

作者:狮子也疯狂 专栏:《基础知识查漏》 坚持做好每一步,幸运之神自然会降临在你的身上 目录一. 🦁 前言二. 🦁 使用详情Ⅰ. 🐇 使用过程Ⅱ. 🐇 使用感受Ⅲ. 🐇 遇到的问题3.1 我遇…

linux服务器挂载硬盘/磁盘

1. 查看机器所挂硬盘个数及分区情况:fdisk -l可以看出来目前/dev/vda 目前有300G可用.内部有两个分区(/dev/vda1,/dev/vda2)。2. 格式化磁盘格式化磁盘命令为【mkfs.磁盘类型格式 目录路径组成】查看磁盘文件格式:df -T格式化磁盘…

SharkTeam:Move合约开发与合约安全

近期,围绕 Aptos 和 Sui,新兴的高性能 L1链 以及这些新链背后的 Move 智能合约编程语言引起了很多关注,社区也非常活跃,很多开发者和项目已经开始积极转向 Move。但Move相对Solidity差别较大,即使是相对比较接近的Rust…

数据与C(字符串)

目录 一.概念引入 二.字符串(数组存储,必须以\0结尾) 三.错误示范 四.strlen()和sizeof()相对于字符串的不同 一.概念引入 “a”,a哪个是字符哪个又是字符串,嘿嘿不用猜了 我们在上一章中说过&#x…

服务端开发Java面试复盘篇1

上周投了一些简历,约了8-9家面试,其中完成了3家的第一轮面试,由于面试的是Java 的实习生,感觉问的题目都比较基础,不过有些问题回答的不是很好,在这里对回答的不太好的题目做一下总结和复盘。 目录 一、后…

【数据库】 mysql用户授权详解

目录 MySQL用户授权 一,密码策略 1,查看临时密码 2,查看数据库当前密码策略: 二, 用户授权和撤销授权 1、创建用户 2,删除用户 3,授权和回收权限 MySQL用户授权 一,密码策略…

Https 协议超强讲解(一)

都说Https协议非常安全,那为什么还是会被抓包呢?抓包后会影响什么吗? HTTPS协议 随着 HTTPS 建站的成本下降,现在大部分的网站都已经开始用上 HTTPS 协议。大家都知道 HTTPS 比 HTTP 安全,也听说过与 HTTPS 协议相关…

ChatGPT vscode中文插件

方式一和方式二只需要做一个就行 方式一:直接购买账号,购买渠道请自行寻找。 快捷键打开命令面板(ctrlshiftp 或者 commandshiftp) 输入 ChatGPT 然后选择 ChatGPT: 切换成国内/国外模式(将会重启VSCode) 命令来切换到国外模式此时会弹出一个输入框&am…

12.hadoop系列之MapReduce分区实践

本文我们学习MapReduce默认分区以及自定义分区实践 当我们要求将统计结果按照条件输出到不同文件(分区)&#xff0c;比如按照统计结果将手机归属地不同省份输出到不同文件中(分区) 1.默认Partitioner分区 public class HashPartitioner<K, V> extends Partitioner<…

ChatGPT已接入微软必应Bing搜索?如何进入新必应候补名单抢先体验

文章目录1. 前提2. 开始申请3. 直接使用ChatGPT1. 前提 Edge浏览器微软账号科学上网工具 2. 开始申请 进入新必应网址&#xff1a;https://www.bing.com/new&#xff0c;点击加入等待列表。 此时会弹出微软的登录界面&#xff0c;登录自己的微软账号即可&#xff0c;建议使用…

【C++/QT】QT5.6解析Excel教程(qtxlsx)

这里写目录标题【背景】【下载qtxlsx】【安装perl】【编译qtxlsx】【添加模块】【使用qtxlsx】【背景】 新接触QT&#xff0c;很多东西都不会&#xff0c;刚接触一个解析Excel的demo&#xff0c;记录一下安装、编译、解析Excel的过程 【下载qtxlsx】 在解析之前&#xff0c;…

多传感器融合定位十-基于滤波的融合方法Ⅰ其二

多传感器融合定位十-基于滤波的融合方法Ⅰ其二3. 滤波器基本原理3.1 状态估计模型3.2 贝叶斯滤波3.3 卡尔曼滤波(KF)推导3.4 扩展卡尔曼滤波(EKF)推导3.5 迭代扩展卡尔曼滤波(IEKF)推导4. 基于滤波器的融合4.1 状态方程4.2 观测方程4.3 构建滤波器4.4 Kalman 滤波实际使用流程4…

【Python学习笔记】25.Python3 输入和输出(1)

前言 在前面几个章节中&#xff0c;我们其实已经接触了 Python 的输入输出的功能。本章节我们将具体介绍 Python 的输入输出。 输出格式美化 Python两种输出值的方式: 表达式语句和 print() 函数。 第三种方式是使用文件对象的 write() 方法&#xff0c;标准输出文件可以用…

Linux手工创建新用户

准备工作&#xff08;配置流程的理解&#xff09; Linux中useradd命令即一系列文件操作的结合体&#xff0c;所以我们可以通过查看useradd命令来确认我们手工创建新用户需要完成的文件配置 找到man useradd中涉及的文件部分 对于手工创建用户有用的文件&#xff1a; /etc/pas…

jvm学习的核心(五)---垃圾回收算法和常见垃圾回收器

文章目录1.垃圾回收算法**1.1. 标记阶段****1.2. 清除阶段**1.2.1.标记清除算法1.2.2.标记复制算法1.2.3.标记整理算法1.3.引用2.常见的垃圾回收器2.1.Serial回收器2.2.ParNew回收器2.3.Parallel回收器2.4.CMS回收器<font color red>2.5.G1垃圾回收器ZGC回收器&#xff…

2月面经:真可惜...拿了小米的offer,字节却惨挂在三面

我是2月份参加字节跳动和华为的面试的&#xff0c;虽然我只拿下了小米的offer&#xff0c;但是我自己也满足了&#xff0c;想把经验分享出来&#xff0c;进而帮助更多跟我一样想进大厂的同行朋友们&#xff0c;希望大家可以拿到理想offer。 自我介绍 我是16年从南京工业大学毕…

java ssm idea高校图书借阅管理系统设计2z87z

本论文是以构建高校图书管理系统设计为目标&#xff0c;使用 jsp制作&#xff0c;由前台用户图书借阅、后台管理员图书分类两大部分组成。着重论述了系统设计分析&#xff0c;系统的实现&#xff08;用户注册模块&#xff0c;用户登录&#xff0c;用户图书借阅模块&#xff0c;…

ONNXRUNTUIME c++使用与相关资料(暂记)

下面的教程是在linux系统上运行的&#xff0c;如果想在windows系统上运行&#xff0c;可以看官方链接或中文教程https://bbs.huaweicloud.com/blogs/335706&#xff0c;官方链接中有完整的VS的带.sln的项目。 ONNXRUNTUIME OPENCV不支持某些算子(挤压层在opencv 中不支持) 安…

开关电源环路稳定性分析(10)——OPA和OTA型补偿器传递函数

大家好&#xff0c;这里是大话硬件。 在前面9讲的内容中将开关电源环路分析进行了梳理&#xff0c;我相信很多人即使都看完了&#xff0c;应该还是不会设计&#xff0c;而且还存在几个疑问。比如我随便举几个&#xff1a; 开关电源的带宽怎么设定&#xff1f;开关电源精度和什…

IDEA下java程序的调试(简易实例图示版)

在线排版不太好看&#xff0c;介意的读者可下载word下来看&#xff1a;https://download.csdn.net/download/xijinno1/87441301IDEA下java程序的简单调试-System.out.println首先本次进行调试的一个程序是实现从1累加到100的功能&#xff0c;是在IDEA下进行编写的。如图所示&am…