百万级监控指标的秒级采集与处理

随着云原生概念的深入普及和应用落地,企业应用架构由单体架构演进为微服务架构,应用将状态剥离到中间件层,通过无状态化实现更灵活的容器化部署和水平伸缩。然而,引入微服务框架、Kubernetes、分布式中间件等组件,使得系统变得复杂且“黑盒化”;被监控对象多样化程度倍增,监控对象数量也呈指数级增长;同时业务在线化使得企业更加关注系统可观测性,故障预警和恢复实时性诉求逐步提升,监控的实时性要求已从分钟级提高至秒级。

对于一个企业级的监控平台,要服务于不同的商业客户,客户的系统规模有不同的级别。一个典型的运营商BOSS系统项目,项目的规模一般会有500+左右的虚机,2500+左右的容器实例,每个业务产品大概会有3-5个核心业务指标。对于主机和容器,一般会要求30秒左右的采集频度;对于核心业务指标,需要实现秒级监控。

图片

从上面的数据计算分析可以看出,要满足常规业务生产运维支撑时的持续可观测诉求,首先需要具备百万级指标处理能力。具体包括如下三个方面:

具备海量指标实时采集的能力

  • 海量指标实时采集是必要条件,指标采集管理模块要能够实时采集海量的监控对接指标数据,采集服务端要具备水平扩展的能力。

  • 低成本,高效的对接各类监控对象也是采集管理模块重点考量的条件之一。

- 具备指标秒级计算的能力

实时计算框架首先应具备海量指标的秒级处理能力,随着业务规模的扩大,系统需要能够快速而准确地处理大量的实时数据。为了应对用户告警场景中的多样化需求,包括同比昨天、同比上周或同比上个月等计算规则,实时计算框架必须具备批式处理的能力,以有效规避内存占用可能出现的问题。

复杂的实时计算规则通常伴随着较高的使用成本,因此实时计算框架在规则配置方面需要提供更低的接入门槛,以降低用户的配置和维护成本,使其更易于自定义处理规则。

构建存算分离的架构亦是关键,尤其在极端情况下,即使指标存储系统出现异常,也不能对指标的实时计算造成影响。这种存算分离的设计能够保障实时计算的稳定性和可靠性。

具备毫秒级延迟的指标读写能力

实现指标存储的高实时性是首要任务,确保能够达到毫秒级的延迟,以满足对实时性要求极高的业务场景。存储效能的高效性同样至关重要,尤其在处理海量指标数据的情境下,指标存储服务需要具备出色的性能,以确保快速而可靠地存储大量数据。

为了应对用户对指标数据的实时查询需求,指标存储服务必须能够提供秒级响应,确保用户能够及时获取最新的数据并进行分析。在满足企业级容灾管理需求方面,指标存储架构应具备多副本的能力,以确保数据备份和容灾,从而提高整体系统的稳定性和可用性。

01 单一开源产品的端到端解决方案

目前业界完备的单一开源监控平台端到端解决方案,比较流行的有Zabbix和Prometheus监控解决方案,它们提供了一体化的监控告警能力,具备采集、计算、存储和告警能力。

对于Zabbix,是一个比较传统的监控管理平台,在设备监控方面具备比较成熟和完备的对接流程,但在面向大规模的指标流量需求上有一些不足:对于指标存储,zabbix标准版本指标存储默认还存储在关系型数据库mysql中。同时在采集领域,当前的云原生组件优先默认支持prometheus,zabbix的开源插件存在一定的滞后以及定制化成本。

原生的 Prometheus 并不支持高可用,也不能做横向扩缩容,当集群规模较大时,单一 Prometheus 会出现性能瓶颈。同时Prometheus 告警规则是基于文件的管理模式,用户使用门槛较高。当前虽然Thanos已经具备了prometheus集群管理的方案,但依然无法解决prometheus单一性能和运维难度高等问题。

综上所述,不管是面对海量指标处理,还是在运维管理复杂度,二者都无法满足企业级的商用监控诉求。

02 开源+自研的融合解决方案

当前业界监控平台建设的主流思路是基于开源产品的能力,结合自身面对的场景进行改进和优化,以构建更贴近自身业务场景的技术解决方案。这类平台方案通常使用时序数据库(如InfluxDB、OpenTSDB、VictoriaMetrics、Prometheus)与流式计算框架(如Flink、Spark、Kapacitor、Prometheus)相结合,以满足对超大规模项目的监控处理需求。

浩鲸科技监控平台解决方案也是这种建设思路,监控平台功能架构如下:

图片

百万级指标采集、处理平台的改进和优化,重点要在指标采集、指标存储和指标计算三个方面。

>>>>遵从OpenMetrics标准协议自建分布式采集服务

在OpenMetrics协议下,业界普遍采用 Prometheus 作为采集服务的事实标准,在业界绝大多数的可观测平台中,Prometheus 是充当了生态适配和采集组件服务端的角色。但作为采集组件服务端,原生 Prometheus 存在以下劣势:

  • Prometheus 作为采集服务,原生的 prometheus-remote 模块,具备数据远端写的能力,但资源消耗较大。

  • 目标的管理载体是本地文件或者依赖于 consul 服务发现组件,要么不易与第三方系统集成,要么要引入新的组件,增大复杂度。

  • 缺乏足够的中间计算的能力,OpenMetrics 协议下,指标数据类型包括counter,guage等多种。如cpu使用率指标为 count 类型的时间累计值,原始值对用户不可读;同时一个指标组中只有一个指标,还是以 cpu 指标举例,对于 cpu 指标,就有 system、idle、wait、user 等指标;用户想要了解主机 cpu 性能状态,要查询每个指标组。

为解决这些问题,分布式采集服务(nms-prometheus-scraper)应运而生:

  • 首要构建原则是支持 OpenMetrics 协议,可以复用业界大量的*_exporter组件,降低开发对接的成本。

  • nms-prometheus-scraper 是专门为采集服务而开发的,解决了prometheus 在只作为采集服务时内存占用超大的问题;nms-prometheus-scraper 采集服务,采集指标后不落盘,直接写后端存储,效率极大提升。

  • 为了应对大规模的采集需求,nms-prometheus-scraper+mysql 构建了分布式集群管理能力;采集目标和分组在mysql中管理,nms-prometheus-scraper 基于目标分组来做采集负载均衡,这种不依赖于复杂度第三方组件的设计模式,极大地降低的运维复杂度。

  • 为了提高指标的可读性,我们通过内置通用的指标计算服务,方便用户对指标做进一步的加工,如常见的纵表转横表,counter 类型的数据转换为比率,一些数据差值计算等。

通过上述优化改进,使用 nms-prometheus-scraper 可达到更高的采集处理性能,降低损耗的设计初衷。

浩鲸科技指标采集服务平台功能架构:

图片

nms-prometheus-scraper 分布式采集服务,对比原生 prometheus 具备如下优势:

  • 原生的分布式能力支持,可弹性伸缩。

  • 支持 Prometheus 原生服务发现能力、文件、consul、k8s等。

  • 业界绝大多数的 cmdb 后端存储在 mysql 数据库中,分布式采集服务增加针对mysql的目标服务发现能力,方便资源的一键接入服务发现。

  • 数据不落盘,采集后直写分布式时序数据集群。

  • 绝大部分的指标原始数据不具备可读性,需要进行函数运算才能更好的表达业务语义。分布式采集服务提供了数据运算,纵转横等能力,使得数据更具可读性和符合用户使用习惯。

  • 高性能,低损耗。3000+主机、采集频度30s、6.7万points/s、nms-prometheus-scraper,内存占用是Prometheus的1/8, cpu使用率是Prometheus的1/7。

>>>>解决InfluxDB单点隐患的分布式时序存储

InfluxDB 作为时序数据库领域的领导者,被广泛运用。在一些中小型的项目中,InfluxDB 以单点的高性能、易用性以及自运维等优势是时序数据库的首选。但原生的 InfluxDB 开源版本,不支持分布式集群的方案,无法在超大规模,超高可用性要求的项目下落地。为了解决这个问题,可采用分布式时序存储方案,基于中间件代理模式构建分布式的 influxdb 分布式存储集群。

  • 分布式集群首先要能够支持 InfluxDB 的标准 http 协议,支持查询和写入。能够面向上层透明,方便无缝切换。

  • 可以基于多种的分片算法来分片路由管理时序数据,达到水平扩展的能力。

  • 分布式集群要支持多副本的能力,支持副本个数可配置,解决企业级的高可用需求。

构建完的分布式指标存储服务具备如下的优势:

  • 分布式集群,数据支持多副本容灾满足企业级数据安全的规范和高性能的要求,可支持百万级指标实时写入。

  • 支持 influxdb 标准协议,面向上层透明,无缝对接,grafana,influxdb web console,InfluxDB SDK。

  • 可视化的分片管理,管理运维复杂度低。

  • 分布式集群版本支持 InfluxDB 标准函数。

  • 分布式集群支持 InfluxDB 常用命令,如数据库管理,measurement管理,存储策略管理,连续查询管理等。

  • 分布式服务代理,支持数据预加工与补齐。

  • InfluxDB 支持的存储策略,连续查询能力,可实现自动清理和归档,降低现场运维投入。

>>>>构建计算和存储分离的流批一体计算平台

Kapacitor 与 InfluxDB 都源于 influxData 技术栈下,基于 golang 开发,高性能,轻量化原生的 Kapacitor 存在如下三个劣势:

  • 默认情况下,Kapacitor 可自动订阅InfluxDB数据源,数据在写入到 Influxdb 时,InfluxDB 会主动推送数据到订阅者。这种模式下,如果指标存储 InfluxDB 异常,将影响 Kapacitor 的指标计算

  • Kapacitor 是单点的模式,无法支持海量指标的计算处理需求。

  • 基本上所有的流式计算框架,计算任务的配置和管理都存在一定的门槛;而计算阈值的调整,计算任务管理是现场运维的高频操作;降低任务配置门槛成为了分布式计算框架的核心关注点。

浩鲸科技流批一体计算平台功能架构:

图片

基于 Kapacitor 的劣势制约了其在大规模实时计算领域的落地效果,浩鲸科技的流批一体计算平台,从下面几个的架构提升点来解决这些问题:

  • 在面向单点的问题,流批一体的实时计算方案采用和分布式时序存储方案一致的架构思路,通过中间件代理的模式来路由转发数据,达到分布式集群的能力。Kapacitor 不再直接订阅 InfluxDB 实例,而是直接监听中间件代理;外部数据写入时,写入中间件代理,由代理配置的路由转发规则,将数据路由到不同的kapacitor实例上。既解决了 kapacitor 单点的隐患,也解除了Kapacitor 计算程序,与 InfluxDB 存储程序的耦合。

  • 对于运维复杂度门槛高的问题,流批一体的计算平台,通过可视化导航管理配置界面来与 Kapacitor 的 TICKscript 做转换,用户配置计算规则不需要直面门槛更高的领域脚本。当前可视化配置,可以支持95%实时计算告警场景。

最终,浩鲸科技通过自建基于 OpenMetrics 规范的分布式采集服务,优化InfluxDB存储为分布式架构,并结合Kapacitor打造流批一体计算平台,实现了高效、可扩展且易于管理的百万级指标采集、处理与计算解决方案。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

定向减免!函数计算让 ETL 数据加工更简单

业内较为常见的高频短时 ETL 数据加工场景,即频率高时延短,一般费用大头均在函数调用次数上,推荐方案一般为攒批处理,高额的计算成本往往令用户感到头疼,函数计算推出定向减免方案,让 ETL数据加工更简单、更…

【漏洞复现】CloudPanel makefile接口远程命令执行漏洞(CVE-2023-35885)

文章目录 前言声明一、CloudPanel 简介二、漏洞描述三、影响版本四、漏洞复现五、修复建议 前言 CloudPanel 是一个基于 Web 的控制面板或管理界面,旨在简化云托管环境的管理。它提供了一个集中式平台,用于管理云基础架构的各个方面,包括 &a…

相关系数(皮尔逊相关系数和斯皮尔曼相关系数)

本文借鉴了数学建模清风老师的课件与思路,可以点击查看链接查看清风老师视频讲解:5.1 对数据进行描述性统计以及皮尔逊相关系数的计算方法_哔哩哔哩_bilibili 注:直接先看 ( 三、两个相关系数系数的比较 ) 部分&#x…

解决 BeanUtil.copyProperties 不同属性直接的复制

1、引入hutool <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.16</version> </dependency> hutool官网 2、直接上例子 对象&#xff1a;User.java Data public class User {p…

二进制计算

二进制的引入 十进制规则:满10进1&#xff0c;由数字0到9组成。 而所谓十六进制&#xff0c;八进制&#xff0c;二进制的规则也是类似。 这里为了区分十六进制和八进制&#xff0c;十六进制前面会加上0x&#xff0c;八进制前面会加个0作为区分 而二进制的规则类似于十进制&…

ZEM20台式扫描电子显微镜在混凝土材料微观结构及性能研究中的应用

混凝土作为当今世界上使用量最大的建筑材料&#xff0c;广泛应用于桥梁、大坝、高楼等重要民用工程和设施中发挥着举足轻重的作用。但是普通混凝土存在抗压强度不高、脆性大等缺陷。此外&#xff0c;水泥生产过程还伴随着高能耗和二氧化碳排放问题。因此研发高性能、环保型混凝…

5G_射频测试_发射机测量(四)

6.2 Base station output power 用于测量载波发射功率的大小&#xff0c;功率越大小区半径越大但是杂散也会越大 载波功率&#xff08;用频谱仪测&#xff09;天线口功率&#xff08;用功率计测&#xff09;载波功率是以RBW为单位的filter测量的积分功率不同带宽的多载波测试时…

Jedis(一)与Redis的关系

一、Jedis介绍&#xff1a; 1、背景&#xff1a; Jedis是基于Java语言的Redis的客户端&#xff0c;Jedis Java Redis。Redis不仅可以使用命令来操作&#xff0c;现在基本上主流的语言都有API支持&#xff0c;比如Java、C#、C、PHP、Node.js、Go等。在官方网站里有一些Java的…

密码学的100个基本概念

密码学作为信息安全的基础&#xff0c;极为重要,本文分为上下两部分&#xff0c;总计10个章节&#xff0c;回顾了密码学的100个基本概念&#xff0c;供小伙伴们学习参考。本文将先介绍前五个章节的内容。 一、密码学历史 二、密码学基础 三、分组密码 四、序列密码 五、哈希…

【产品交互】超全面B端设计规范总结

不知不觉已经深耕在B端这个领域3年有余&#xff0c;很多人接触过B端后会觉得乏味&#xff0c;因为B端的设计在视觉上并没有C端那么有冲击力&#xff0c;更多的是结合业务逻辑&#xff0c;设计出符合业务需求的交互&#xff0c;以及界面排版的合理性&#xff0c;达到产品的可用性…

ARMv8-AArch64 的异常处理模型详解之异常类型 Exception types

异常类型详解 Exception types 一&#xff0c; 什么是异常二&#xff0c;同步异常&#xff08;synchronous exceptions&#xff09;2.1 无效的指令和陷阱异常&#xff08;Invalid instructions and trap exceptions&#xff09;2.2 内存访问产生的异常2.3 产生异常的指令2.4 调…

2024区块链应用趋势,RWA实物资产化

作者 张群&#xff08;赛联区块链教育首席讲师&#xff0c;工信部赛迪特聘资深专家&#xff0c;CSDN认证业界专家&#xff0c;微软认证专家&#xff0c;多家企业区块链产品顾问&#xff09;关注张群&#xff0c;为您提供一站式区块链技术和方案咨询。 实物资产通证化&#xff0…

PyTorch内置损失函数汇总 !!

文章目录 一、损失函数的概念 二、Pytorch内置损失函数 1. nn.CrossEntropyLoss 2. nn.NLLLoss 3. nn.NLLLoss2d 4. nn.BCELoss 5. nn.BCEWithLogitsLoss 6. nn.L1Loss 7. nn.MSELoss 8. nn.SmoothL1Loss 9. nn.PoissonNLLLoss 10. nn.KLDivLoss 11. nn.MarginRankingLoss 12. …

微信小程序(十二)在线图标与字体的获取与引入

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.从IconFont获取图标与文字的样式链接 2.将在线图标配置进页面中&#xff08;源码&#xff09; 3.将字体配置进页面文字中&#xff08;源码&#xff09; 4.css样式的多文件导入 获取链接 1.获取图标链接 登入…

如何自己制作一个属于自己的小程序?

在这个数字化时代&#xff0c;小程序已经成为了我们生活中不可或缺的一部分。它们方便快捷&#xff0c;无需下载安装&#xff0c;扫一扫就能使用。如果你想拥有一个属于自己的小程序&#xff0c;不论是为了个人兴趣&#xff0c;还是商业用途&#xff0c;都可以通过编程或者使用…

搭建k8s集群实战(一)系统设置

1、架构及服务 Kubernetes作为容器集群系统,通过健康检查+重启策略实现了Pod故障自我修复能力,通过调度算法实现将Pod分布式部署,并保持预期副本数,根据Node失效状态自动在其他Node拉起Pod,实现了应用层的高可用性。 针对Kubernetes集群,高可用性还应包含以下两个层面的…

回归预测 | Matlab基于OOA-SVR鱼鹰算法优化支持向量机的数据多输入单输出回归预测

回归预测 | Matlab基于OOA-SVR鱼鹰算法优化支持向量机的数据多输入单输出回归预测 目录 回归预测 | Matlab基于OOA-SVR鱼鹰算法优化支持向量机的数据多输入单输出回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab基于OOA-SVR鱼鹰算法优化支持向量机的数据…

IS-IS:01 ISIS基本配置

这是实验拓扑&#xff0c;下面是基本配置&#xff1a; R1: sys sysname R1 user-interface console 0 idle-timeout 0 0 int loop 0 ip add 1.1.1.1 24 int g0/0/0 ip add 192.168.12.1 24 qR2: sys sysname R2 user-interface console 0 idle-timeout 0 0 int loop 0 ip add …

05.Elasticsearch应用(五)

Elasticsearch应用&#xff08;五&#xff09; 1.目标 咱们这一章主要学习Mapping&#xff08;映射&#xff09; 2.介绍 Mapping是对索引库中文档的约束&#xff0c;类似于数据表结构&#xff0c;作用如下&#xff1a; 定义索引中的字段的名称定义字段的数据类型&#xff…

HarmonyOS鸿蒙学习基础篇 - 基本语法概述

书接上文 HarmonyOS鸿蒙学习基础篇 - 运行第一个程序 Hello World 基本语法概述 打开 entry>src>main>ets>pages>index.ets 代码如下代码详细解释如下&#xff1a; Entry //Entry装饰的自定义组件将作为UI页面的入口。在单个UI页面中&#xff0c;最多可以使用…