【博客671】prometheus如何选择数据点以及处理counter跳变

这篇具有很好参考价值的文章主要介绍了【博客671】prometheus如何选择数据点以及处理counter跳变。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

prometheus如何选择数据点以及处理counter跳变

1、prometheus如何选择数据点

时间是怎么进来的?范围和即时查询!

您可能已经注意到,PromQL 查询中对时间的唯一引用是相对引用(例如[5m],回顾 5 分钟)。那么如何指定绝对图形时间范围或在表中显示查询结果的时间戳呢?在 PromQL 中,此类时间参数与表达式分开发送到Prometheus 查询 API,确切的时间参数取决于您发送的查询类型。Prometheus 知道两种类型的 PromQL 查询:即时查询和范围查询

1-1、即时查询

即时查询用于类表视图,您希望在其中显示单个时间点的 PromQL 查询结果。

即时查询具有以下参数:

  • PromQL 表达式。
  • 评估时间戳。

即时查询示例:让我们看一个即时查询示例,看看它的评估是如何工作的

http_requests_total想象一下在给定时间戳评估表达式。http_requests_total是一个即时向量选择器,它为具有度量名称 的任何时间序列选择最新样本http_requests_total。更具体地说,“最新”意味着相对于评估时间戳“最多 5 分钟旧且不陈旧”。因此,此选择器只会为在评估时间戳之前最多 5 分钟具有样本的系列生成结果,并且评估时间戳之前的最后一个样本不是过时标记(将系列标记为在某个时间点终止的显式方法) Prometheus TSDB 中的特定时间)。

如果我们在有最近样本的时间戳运行此查询,结果将包含两个系列,每个系列一个样本:

【博客671】prometheus如何选择数据点以及处理counter跳变
请注意,每个返回样本的输出时间戳不再是原始样本时间戳,而是设置为评估时间戳。
想象一下在某个时间戳执行相同的查询,其中该时间戳之前的数据有 >5m 的间隙:

【博客671】prometheus如何选择数据点以及处理counter跳变

在这种情况下,查询将返回空结果,因为所有匹配样本都太旧而无法包含在内。

1-2、范围查询

范围查询主要用于图形,您希望在其中显示给定时间范围内的 PromQL 表达式。范围查询的工作方式与许多完全独立的即时查询完全相同,这些查询在给定时间范围内的后续时间步长进行评估。当然,这是在幕后高度优化的,在这种情况下,Prometheus 实际上并没有运行许多独立的即时查询。

范围查询具有以下参数:

  • PromQL 表达式。
  • 一个开始时间。
  • 结束时间。
  • resolution step

在开始时间和结束时间之间的每个解析步骤评估表达式后,单独评估的时间片将缝合在一起形成单个范围向量。范围查询允许传入即时向量类型或标量类型表达式,但始终返回范围向量(标量或即
时向量在一定时间范围内求值的结果)。

范围查询示例:

如果我们将上面的示例表达式作为范围查询进行计算,它将如下所示(示例查询的解析步骤为 2.5 分钟):

【博客671】prometheus如何选择数据点以及处理counter跳变

请注意,每个评估步骤的行为与独立即时查询完全相同,并且每个独立即时查询没有查询总体范围的概念。另请注意,当原始样本恰好仍然是这两个步骤的最新样本(且不早于 5 分钟)时,某些后续解析步骤最终如何选择相同的基础原始样本作为其输出样本值。

在这种情况下,最终结果将是一个范围向量,其中包含一定时间范围内两个选定序列的样本,但也包含某些时间步长的序列数据中的间隙。

2、prometheus处理counter跳变

场景:

某个counter值对应的exporter重启了,导致counter重新计数,但是我们不希望因此在计算速率的时候出现负速率等异常结果

解决方法:发现并处理counter跳变

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

实际解决原理:

尽管counter一般只会叠加,但是当追踪它们的过程重置时,它们也会重置为0 。为了不把这些重置解释成实际的负rate,和counter相关的函数具有检测和处理这些重置的逻辑:如当在提供的时间窗口下迭代样本时,函数会检查是否有任何样本的值比前一个低,并将这种情况解释为counter重置。Counter在重置后总是从0开始,那么根据这个假设,这些函数只是将新的采样值加到之前看到的采样值上,以补偿重置。

counter重置处理并非万能和无损的:

注意:当counter重置时,数据有可能在Prometheus最后一次拉取之后,重置之前增加。这些增量会被Prometheus永远丢失,且无法找回。为了尽量减少这种影响,重置应该只在一段时间内发生一次,而且要比Prometheus拉取目标数据的频率低。文章来源地址https://www.toymoban.com/news/detail-507065.html

到了这里,关于【博客671】prometheus如何选择数据点以及处理counter跳变的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 开源解决方案OpenTelemetry的介绍以及如何将其与Prometheus结合使用

    作者:禅与计算机程序设计艺术 OpenTelemetry 是 CNCF(Cloud Native Computing Foundation)旗下的一个开源项目。它的目标是在云原生时代成为应用性能监控领域的事实标准,目前已经成为 Prometheus、Jaeger等工具的事实标准。 OpenTelemetry 提供了一套统一的 API 和 SDK ,使得开发者可以基于

    2024年02月05日
    浏览(35)
  • 【博客654】prometheus配置抓取保护以防止压力过载

    担心您的应用程序指标可能突然激增,以及指标突然激增导致prometheus压力过载 就像生活中的许多事情一样,标签要有节制。当带有用户 ID 或电子邮件地址的标签被添加到指标时,虽然它不太可能结束,因为突然之间,您的一个目标可能会在每次抓取时抽出数十万个时间序列

    2024年02月09日
    浏览(50)
  • 【博客675】prometheus生产上易犯的错误

    这是每个人在开始使用 Prometheus 时至少会遇到一次的经典陷阱。一旦您发现 Prometheus 基于标签的数据模型的有用性,您可能会想按各种有用的标签维度来拆分指标,直到您创建的时间序列超出 Prometheus 服务器可以处理的数量。 例如,您可能有一个 HTTP 服务器公开一个由 HTTP

    2024年02月11日
    浏览(49)
  • 算法:分治思想处理快排递归以及快速选择/最小K个数问题

    分治的原理就是分而治之,从原理上讲,就是把一个复杂的问题划分成子问题,再将子问题继续划分,直到可以解决 基于分治的原理进行快速排序,区别于传统的快速排序,这里对快速排序进行改良,成为更优先的三路划分算法,可以处理一些极端场景,使快速排序的适用性

    2024年02月10日
    浏览(55)
  • 【博客674】警惕Prometheus 中的重复样本和无序时间戳错误

    您的 Prometheus 服务器日志中是否遇到过以下错误? 那么您的设置中可能存在配置错误,导致多个系列相互碰撞和冲突。在这篇文章中,我们将解释这些错误背后的背景、可能导致这些错误的原因以及如何调试和修复它们。 Prometheus 是一个实时监控系统,通常只需要随着时间的

    2024年02月11日
    浏览(48)
  • 【博客662】prometheus对rule规则和alert规则作单元测试

    在实际生产中,对于rules和alerts的配置有时候出于某些特殊原因,无法进行模拟,这时候就需要我们对采集规则和告警规则进行单元测试,以确保正确性 example: 要测试此规则,您可以使用以下内容创建 test.yml: 进行测试: 测试结果: 分析一下测试文件: 这表示我们要加载

    2024年02月09日
    浏览(48)
  • 【博客647】MetricsQL(VictoriaMetrics)和PromQL(Prometheus)的不同之处

    https://valyala.medium.com/promql-tutorial-for-beginners-9ab455142085 2-1、MetricsQL 考虑了方括号中窗口之前的前一个点,用于范围函数,例如速率和增加。这允许返回用户对 increase(metric[$__interval]) 查询期望的准确结果,而不是 Prometheus 为此类查询返回的不完整结果 2-2、MetricsQL不推断范围函数

    2024年02月08日
    浏览(65)
  • 【博客673】Lookback delta, Staleness and NaN in Prometheus

    Lookbackdelta是可以修改的,默认是5分钟 当必须定义“最新”样本时,就会出现棘手的情况。Prometheus 没有样本之间固定间隔的概念,因此很难绝对地说给定series是否存在“当前”最新样本。如果series的最新样本已经有一周了,您可能不希望将其包含在当前时间戳的即时向量选

    2024年02月11日
    浏览(35)
  • 【Node.js实战】一文带你开发博客项目(使用假数据处理)

    个人简介 👀 个人主页: 前端杂货铺 🙋‍♂️ 学习方向: 主攻前端方向,也会涉及到服务端 📃 个人状态: 在校大学生一枚,已拿 offer(秋招) 🥇 推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2Vue3项目实战 🥝Node.js 🌕 个人推广:每篇文章最下方都有加入方式,旨在

    2024年02月02日
    浏览(53)
  • 如何让搜索引擎搜索到自己的个人博客网站(如何提交网站到各搜索引擎,如百度、必应Bing,以及提交页面URL的地址)

    之前我写了很多关于 GitHub Pages 和 Jekyll 如何搭建个人博客的博客,但是我忘了这样别人是看不到的。 一个网页能被别人看到的方式有几种: 点开分享的 URL; 点开搜索结果中的链接; … 第一种方法相当古早了,虽然现在还在用,但是在扩大读者/用户数量这方面效率太低了

    2024年02月05日
    浏览(71)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包