监控需求来源及主流方案对比

news2024/11/26 16:47:35

我们从开始了解监控系统来说,首先我们要先了解监控的需求来源,即监控系统都可以用于做什么?

监控需求来源

其实最初的需求很简单,即"系统出问题了我们要能及时感知"。后面随着技术的不断发展,我们对监控系统提出了更多的诉求。

  • 通过监控了解数据趋势,知道系统在未来的某个时刻可能出问题,预知问题。
  • 通过监控了解系统的水位情况,为服务扩缩容提供数据支撑。
  • 通过监控来给系统把脉,感知到哪里需要优化,比如一些中间件参数的调优。
  • 通过监控来洞察业务,提供业务决策的数据依据,及时感知业务异常

目前监控系统越来越重要,同时也越来越完备。不但能够很好地解决上面这几点诉求,还沉淀出了很多监控系统中的稳定性相关的知识。

可观性的三大支柱

我们这里说的监控系统,其实只是指标监控,使用折线图形态呈现在图表上,比如某个机器的 CPU 利用率、某个数据库实例的流量等,都可以体现为随着时间而变化的趋势图。

image-20230506171611725

指标监控智能处理数字,但它历史数据存储成本较低,实时性好,生态庞大,是可观测性领域里最重要的一根支柱。聚焦在指标监控领域的开源产品有zabbix、prometheus、夜莺等。

除了指标监控,另一个重要的可观察性支柱是日志。从日志中可以得到很多信息,对于了解软件的运行情况、业务的运营情况都很关键。比如操作系统的日志、接入层的日志、服务运行日志,都是重要的数据源。

从操作系统的日志中,可以得知很多系统级事件的发生;从接入层的日志中,可以得知有哪些域名、IP、URL 收到了访问,是否成功以及延迟情况等;从服务日志中可以查到 Exception 的信息,调用堆栈等,对于排查问题来说非常关键。但是日志数据通常量比较大,不够结构化,存储成本较高。处理日志这个场景,也有很多专门的系统,比如开源产品 ELK 和 Loki,商业产品 Splunk 和 Datadog。国内也有很多公有云服务在售。下面是在 Kibana 中查询日志的一个页面。

img

可观测性最后一大支柱是链路追踪。随着微服务的普及,原本的单体应用被拆分成很多个小的服务,服务之间有错综复杂的调用关系,一个问题具体是哪个模块导致的,排查起来其实非常困难

链路追踪的思路是以请求串联上下游模块,为每个请求生成一个随机字符串作为请求 ID。服务之间互相调用的时候,把这个 ID 逐层往下传递,每层分别耗费了多长时间,是否正常处理,都可以收集起来附到这个请求 ID 上。后面追查问题时,拿着请求 ID 就可以把串联的所有信息提取出来。链路追踪这个领域也有很多产品,比如 Skywalking、Jaeger、Zipkin、CAT 等. 下图为 Skywalking相关页面

image-20230506174456513

业界开源方案对比

老一代整体方案代表 zabbix

Zabbix 是一个企业级的开源解决方案,擅长设备、网络、中间件的监控。

Zabbix 核心由两部分构成,Zabbix Server 与可选组件 Zabbix Agent。Zabbix Server 可以通过 SNMP、Zabbix Agent、JMX、IPMI 等多种方式采集数据,它可以运行在 Linux、Solaris、HP-UX、AIX、Free BSD、Open BSD、OS X 等平台上。拥有很好的兼容性。

Zabbix 还有一些配套组件,Zabbix Proxy、Zabbix Java Gateway、Zabbix Get、Zabbix WEB 等,共同组成了 Zabbix 整体架构

image-20230506175517969

Zabbix 的优点:

  • 对各种设备的兼容性较好,Agentd 不但可以在 Windows、Linux 上运行,也可以在 Aix 上运行。
  • -架构简单,使用数据库做时序数据存储,易于维护,备份和转储都比较容易。社区庞大,资料多。
  • Zabbix 大概是 2012 年开源的,发展的时间比较久,网上可以找到海量的资源。

Zabbix 的缺点

  • 使用数据库做存储,无法水平扩展,容量有限。如果采集频率较高,比如 10 秒采集一次,上限大约可以监控 600 台设备,还需要把数据库部署在一个很高配的机器上,比如 SSD 或者 NVMe 的盘才可以。
  • Zabbix 面向资产的管理逻辑,监控指标的数据结构较为固化,没有灵活的标签设计,面对云原生架构下动态多变的环境,显得力不从心。

新一代整体方案代表 Prometheus

Prometheus 的设计思路来自 Google 的 Borgmon,师出名门,就像 Borgmon 是为 Borg 而生的,而 Prometheus 就是为 Kubernetes 而生的。它针对 Kubernetes 做了直接的支持,提供了多种服务发现机制,大幅简化了 Kubernetes 的监控。

在 Kubernetes 环境下,Pod 创建和销毁非常频繁,监控指标生命周期大幅缩短,这导致类似 Zabbix 这种面向资产的监控系统力不从心,而且云原生环境下大都是微服务设计,服务数量变多,指标量也呈爆炸态势,这就对时序数据存储提出了非常高的要求。Prometheus 1.0 的版本设计较差,但从 2.0 开始,它重新设计了时序库,性能、可靠性都有大幅提升,另外社区涌现了越来越多的 Exporter 采集器,非常繁荣。

image-20230506180316725

Prometheus 的优点

  • 对 Kubernetes 支持得很好,目前来看,Prometheus 就是 Kubernetes 监控的标配。
  • 生态庞大,有各种各样的 Exporter,支持各种各样的时序库作为后端的 Backend 存储,也有很好的支持多种不同语言的 SDK,供业务代码嵌入埋点

Prometheus 的缺点

  • 使用有一定门槛,比如告警策略需要修改配置文件,协同起来比较麻烦。当然了,对于 IaC 落地较好的公司,反而认为这样更好,不过在国内当下的环境来看,还无法走得这么靠前,大家还是更喜欢用 Web 界面来查看监控数据、管理告警规则。
  • Exporter 参差不齐,通常是一个监控目标一个 Exporter,管理成本比较高。
  • 容量问题,Prometheus 默认只提供单机时序库,集群方案需要依赖其他的时序库。

image-20230506181911500

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

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

相关文章

Linux的超级用户及权限

目录 一:Linux下的两个用户 二:权限 1:目录文件 文件创建的默认权限 2:普通文件 一:Linux下的两个用户 在使用Linux的时候会有两个身份,第一个是普通用户,普通用户在很多方面是受阻的,原因就是权限不够,在这种情况下就有一个超级用户,也…

iOS图片系列一 图片的基本属性

图片在项目的开发中使用频率很高,但是绝大部分都是作为普通的展示或者偶尔需要裁剪,并不需要对图片做什么特别的处理,最近做了一个项目对于图片的需求功能比较多,踩了很多坑的同时也对图片的使用有了更深的理解,整理下…

C++面经:初始化全局变量和未初始化全局变量有什么区别

全局变量初始化而且初始值不为0,那么这样的全局变量是放在内存的.data段的,如果全局变量初始值为0或者未初始化,那么这样的全局变量是放在.bss段的。 考点: 考察C/C语言内存模型,.data,.bss段存放的内容。 …

Windows shell环境: 从git bash切换到msys2

文章目录 1. 目的2. msys2 环境 (Environment)3. 升级 MSYS2: 使用 pacman 滚动式升级整个系统4. 在 Windows Terminal 中增加显示 MSYS25. 使用 zsh6. VSCode 中的配置增加 MSYS2 终端配置 git 路径 7. 安装 C/C 依赖库安装 ag查询 bison 和 flex 的安装目录 8. References 1.…

ES6模块化规范

在没有ES6模块化规范前,有像AMD、CMD这样的浏览器模块化规范,还有像CommonJS这样的服务端模块化规范。 2015年,JS终于推出了官方的模块化规范,为了统一各种规范,我们简称ES6 模块化。 ES6目前作为JS的内置模块化系统&a…

Spring的创建和使用,存储和读取Bean总结

目录 Spring项目创建和使用流程 1.创建一个 Spring 项目 2.存储 Bean 3.读取 Bean ApplicationContext和BeanFactory的区别 通过注解存储 Bean对象 五大类注解的关系 Java程序标准分层 方法注解Bean 注入Bean对象的三种方式 1.属性注入 2.Setter注入 3.构造方法注入…

【Java数据结构】Map和Set

Map和Set 搜索树概念操作 - 查找操作 - 插入操作 - 删除cur没有左树(cur.left null)cur没有右树(cur.right null)cur既有左树也有右树(最困难的情况)替罪羊删除法 操作代码性能分析和 java 类集的关系 搜…

程序员困局:去大城市进大厂却买不了房,回老家又没有高薪工作…

对于在外打拼的程序员来说,难的是进大厂,而不是买不起房。 进大厂的程序员,能不能买得起房? 进大厂的程序员的薪资,还是相当可观的。以阿里P6为例,年薪50万,到手40万左右,刨去10万…

【C++学习】C++11——新特性 | 右值引用 | 完美转发

🐱作者:一只大喵咪1201 🐱专栏:《C学习》 🔥格言:你只管努力,剩下的交给时间! C11——新特性 | 右值引用 | 完美转发 👀列表初始化🦴 std::initializer_list…

收藏!网络行业主流的六大技术认证全科普

大家好,我是老杨。你的年终总结做完了没?还没做完,点击“年终总结”,拿个模板,快速完成。 很多人在年末都会有列一个新年愿望清单,写写来年想要完成的事情。 不少网工在这两年的就业环境之下,…

Nginx-部署2个vue项目(多个项目)-二级域名设置代理

前言 最近在实际开发过程中,需要在服务器部署2个项目。需要nginx二级域名。 开始时候在网上查了一圈,各有说法,不是很全,很头大。这里把自己成功的二级域名代理记录一下。 网上有很多文章说要该router.js文件,要该vu…

自动备份交换机的配置到远程服务器

环境 交换机配置修改后及时备份相关配置,每次配置变化后需要在1分钟后自动进行保存,并且将配置上传至FTP服务器;每隔30分钟,交换机自动把配置上传到FTP服务器 配置命令: [huawei]set save-configuration delay 1 //…

单片机外围电路:电阻之上下拉电阻

1.基础概念 上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。下拉同理,也是将不确定的信号通过一个电阻钳位在低电平。 2.基础应用 上下拉电阻在数字电路中使用,为了好理解一点,可把上下拉电阻大致分为两种…

货币简史:从物物交换到数字货币

货币简史 1. 物物交换阶段2. 一般等价物阶段3. 信用货币阶段4. 电子货币阶段5. 数字货币阶段 金钱是什么时候产生的呢,这取决于你如何定义金钱。 费利克斯马丁(FelixMartin)名为《金钱:未授权的传记》(Money:An Unauthorized Biography)书中…

19c rac环境修改pubic, vip,scan ip步骤

19c rac环境第一次修改public、vip和scan ip,和11g还是稍有不同。首先说明下环境 具体步骤如下 1、修改public地址,关闭实例后使用root用户操作 [rootdb1 ~]# ./oifcfg getif bond0 172.20.30.0 global public bond2 100.100.100.0 global clust…

【JVM】JVM堆内存(heap)详解

文章目录 前言一、堆内存划分二、为什么移除永久代?三、分代概念四、为什么分代?五、为什么survivor分为两块相等大小的幸存空间?六、JVM堆内存常用参数七、垃圾回收算法(GC,Garbage Collection)八、垃圾收…

java 反射及代理模式初步学习

java 反射及代理模式初步学习 0. 什么是反射? Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象,可以了解任意一个对象所属的类,可以了解任意一个类的成员变量和方法&#xf…

小程序组件

swiper swiper 和 swiper-item 结合使用,, swiper有默认高度 300rpx 属性: autoplay : 自动播放circular : 循环播放indicator-dots : 显示指示点indicator-active-color : 轮播选中的颜色 &…

SpringBoot整合钉钉消息推送(四十四)

从头开始,并不意味着失败,相反,正是拥抱成功的第一步,即使还会继续失败 上一章简单介绍了 SpringBoot 发送邮件(四十三), 如果没有看过,请观看上一章 钉钉消息推送, 官方文档: https://open.dingtalk.com/document/gr…

3.结构化的数学思想

前言 今天在复习概率论的公理化过程中,我发现它的公理其实也是人为定义的,为什么我会这么想呢?这是因为我曾听过严伯均在为什么诺贝尔奖没有数学讲曾说过数学是一门无法证伪的学科,甚至不能算是科学,而诺贝尔设置这个…