【博客646】将消息队列放在Prometheus前以提高可靠性并不总是“好主意“

news2024/11/7 22:40:11

将队列放在Prometheus前以提高可靠性并不总是"好主意"

为了防止突发流量,而在prometheus前加上消息队列以达到削峰填谷的目的

架构如下:
在这里插入图片描述

应用程序将指标推送到某种形式的队列(通常是 Kafka),暴露器二进制文件从队列中读取并提供自上次抓取到 Prometheus 以来的所有应用程序指标。细节各不相同,通常涉及分片和冗余。在某些情况下,queue 和 exposer 被组合在一起

给出这种设计的原因通常是其中之一,这是已经流传下来的所需企业架构,它是为了减少延迟,它是可扩展性所必需的,或者它是为了可靠性。

但是监控的可靠性是更多的是及时和准确,即实效性是非常重要的环节!甚至有时候迟到的数据不如没有数据

那么鉴于监控意义上的可靠性含义,上述设计类别存在哪些问题?

  • 首先是应用程序和队列之间的通信。如果这不起作用,那么应用程序可能需要缓冲 RAM 中的指标。当事情发生故障时占用更多资源可能会导致问题变得更糟,例如,如果队列与其他系统共享并导致它们也在 RAM 中建立积压。您不能假定队列是可靠的,尤其是当涉及到共识机制时。例如,Kafka 领导人选举可能需要一段时间(尽管我相信较新的版本不再按分区顺序进行)。总是存在过载或意外达到资源限制的可能性。

  • 第二个是当 Prometheus 抓取数据时,指标不会同步生成。这可能会由于数据未对齐而导致伪影(尤其是在传播延迟中存在抖动的情况下),并且延迟的时间序列在未被抓取时会被错误地标记为陈旧。您可能认为添加时间戳可以解决这个问题,但这样您就失去了陈旧处理的好处。记录规则和查询不会始终拥有最新数据,从而导致奇怪的图表和不正确的警报。所以就时间戳而言,在一次抓取中处理来自同一时间序列的具有不同时间戳的多个样本在技术上也是未定义的行为。

  • 第三个是可扩展性问题。Prometheus 抓取是为许多小目标设计的,而不是为少数大目标设计的。让单个曝光器为单个抓取提供数十万个样本意味着您还需要 Prometheus 能够在抓取间隔内解析和摄取这些指标——否则 Prometheus 会将抓取视为失败。通过 exposer 集中抓取可扩展性实际上变得更糟,因为它现在是一个 CPU 核心瓶颈,需要仔细管理以确保抓取继续成功。

  • 第四个是缺乏服务发现和摄取控制。由于 Prometheus 只知道曝光器,它不会up为每个目标提供时间序列,因此您必须实施其他一些解决方案来提供该功能。

因此,与普罗米修斯的设计背道而驰并不能给你带来多少好处,事实上,与普罗米修斯直接抓取应用程序的标准设置相比,总体上可能会使你的系统可靠性和可扩展性降低。

这并不是说你永远不应该使用队列,队列有很多有效的用例。Prometheus 不是其中之一,因为它在设计时考虑了一组不同的工程权衡。

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

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

相关文章

超详细IDEA创建Maven项目

文章目录 一、Maven概述二、创建Maven项目三、Maven项目简单介绍3.1 标准化的项目结构3.2 标准化的构建流程3.3 方便的依赖管理 一、Maven概述 Maven是一个专门用于管理和构建Java项目的工具。我们之所以要使用Maven,是因为Maven可以为我们提供一套标准化的项目结构…

Python单元测试框架《python 自动化框架 pytest》

​ 编辑切换为居中 添加图片注释,不超过 140 字(可选) Pytest 简介 pytest 是python 的一种单元测试框架,不python 自带的unittest 测试框架类似,但是比 unittest 框架使用起来更简洁,效率更高。根据pyt…

智警杯半决赛知识点

hive: 启动hadoop 启动本地连接,连接外网 主机就是外网IP 1.修改云主机host文件,添加内网ip,对应映射名为hadoop000,实现云主机自身使用root用户ssh访问hadoop000免密登录 改host文件 vim/etc/hosts 比赛时会提…

【论文阅读】(2023.05.10-2023.06.03)论文阅读简单记录和汇总

(2023.05.10-2023.06.08)论文阅读简单记录和汇总 2023/05/10:今天状态,复阳大残,下午淋了点雨吹了点风,直接躺了四个小时还是头晕- -应该是阳了没跑了。 2023/06/03:前两周出差复阳,这两周调整作息把自己又…

第十三届蓝桥杯c++b组国赛题解(还在持续更新中...)

第十三届蓝桥杯Cb组国赛真题pdf自取 试题A:2022 解题思路: 有2022个物品,它们的编号分别是1到2022,它们的价值分别等于它们的编号。也就是说,有2022种物品,物品价值等于物品编号。 从2022个物品种选取10个…

虹科案例 | 虹科Dimetix激光测距传感器可实现无接触式监测采矿设备健康状况!

Part.01 行业挑战 采矿业机器的环境条件通常非常恶劣,损坏的设备会导致生产力和利润下降。虹科虹科Dimetix激光测距传感器为采矿设备和危险区域机器的机器健康监测提供了非接触式解决方案。 采矿操作中的处理设备通常包括分离、混合和粉碎矿石的机械设备。许多重型…

客户线上反馈:从信息搜集到疑难 bug 排查全流程经验分享

写在前面:本文是我在前端团队的第三次分享,应该很少会有开发者写客户反馈处理流程以及 bug 排查的心得技巧,全文比较长,写了一个多星期大概1W多字(也是我曾经2年工作的总结),如果你有耐心阅读&a…

因数据库字段可存储长度设置的小了,已达到设置字符类型的存储上限,导致数据存储时报错 及 常用的数据类型

项目场景: 提示:这里简述项目相关背景: 使用MySQL数据库,因数据库字段可存储长度设置的小了,已达到设置字符类型的存储上限,导致数据存储时报错 问题描述 提示:这里描述项目中遇到的问题&am…

2天刷完这套八股文,offer到手啦?

前言 大家好,最近有不少小伙伴在后台留言,得准备面试了,又不知道从何下手!为了帮大家节约时间,特意准备了一份面试相关的资料,内容非常的全面,真的可以好好补一补,希望大家在都能拿…

我的GIT练习Three

目录 前言 GIT安装教程 Git作者 GIT优点 GIT缺点 为什么要使用 Git GIT练习Three 总结 前言 Git 是一个分布式版本控制及源代码管理工具;Git 可以为你的项目保存若干快照,以此来对整个项目进行版本管理 GIT安装教程 点击进入查看教程:点击进入 G…

(深入浅出)详解虚拟内存

概述 我们都知道一个进程是与其他进程共享CPU和内存资源的。正因如此,操作系统需要有一套完善的内存管理机制才能防止进程之间内存泄漏的问题。 为了更加有效地管理内存并减少出错,现代操作系统提供了一种对主存的抽象概念,即是虚拟内存&am…

从未尝试过的 7 种处理 CSS 的方法

啊,Web 开发的世界——您可以从学习 HTML、JavaScript,当然还有 CSS 等基础知识开始。 但是一旦你在现实世界中构建应用程序,纯 CSS 就不再适用了。 挣扎是真的。 因此,今天我们将深入探讨使用 NextJS 为 React 应用程序编写 CSS…

NLP与GPT联合碰撞:大模型与小模型联合发力

目录标题 NLP是什么东西?Al大小模型联合发力 NLP是自然语言处理,而GPT是自然语言生成模型。 它们的联合碰撞结果是大模型与小模型联合发力,是因为大模型可以提供更好的语言理解和生成能力,而小模型则可以更快地进行推理和预测。 …

考虑微网新能源经济消纳的共享储能优化配置(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【剑指offer专项突破版】字符串篇——“C“

前言 剑指offer专项突破版(力扣官网)——> 点击进入 本文所属专栏——>点击进入 一.字符串中的变位词 题目分析 总结 要求——在字符串2中找到字符串的1的排列顺序之一 数据格式——仅包含小写字母——哈希表! 返回值——bool值 思路分…

国产数据库有哪些?关键行业数据库为何一定要国产化?

国产数据库主要有以下几种: 1. 中国数据库(ChinaDB):由中国科学院计算技术研究所开发的关系型数据库系统。 2. 华为GaussDB(高斯数据库):国内首个软硬协同、全栈自主的国产数据库GaussDB&…

操作系统-内存管理-内存管理

目录 一、内存概念 1.1程序的链接 静态链接 装入时动态链接 运行时动态链接 1.2 程序的装入 绝对装入 可重定位装入(静态重定位) 动态运行时装入(动态重定位) 1.3内存空间的扩充 1.3.1覆盖 1.3.2交换技术 1.4连续管理分配管理方式 1.4.1单一连续分配 1.4.2固定分区分…

设计师必备!Axure RP10汉化版下载,一站式工具满足所有需求!

Axure RP10 汉化版是一款全新的原型、设计、交付工具,它兼容 Axure、Figma、Sketch 和 Adobe XD 等格式,提供一站式协同设计,帮助团队高效工作。在本文中,我们将为你介绍 Axure RP10 汉化版即时设计的下载和安装步骤,让…

c++学习——多态

多态 **多态的语法****多态的底层原理图****多态案1——计算机类****纯虚函数和抽象类****多态案例2——饮品****虚析构和纯虚析构****多态案例3—— 电脑组装** 多态是C面向对象三大特性之一 多态分为两类 静态多态:函数重载和运算符重载属于静态多态,复用函数名 动…

ssm本地上传文件

SSM实现图片本地上传并保存到本地磁盘中 功能描述 实现房屋租赁网站中添加房屋信息的功能。其中add.jsp页面是一个表单提交信息——添加房屋 首先输入房屋的相关信息,并上传房屋的图片。上传成功后会将图片的名字添加到数据库中成功后跳转到success.jsp&#xff…