【分布式系统】聊聊系统监控

news2024/10/2 20:27:11

对于分布式系统来说,出现故障的是常有的事情,如何在短时间内找到故障的原因,排除故障是非常重要的,而监控系统是就像系统的眼睛可以通过分析相关数据,进一步管理和运维整个分布式系统。

监控系统的的基本功能包含

  • 全栈监控
  • 关联分析
  • 跨系统调用的串联
  • 实时报警和自动处置
  • 系统性能分析

多层体系的监控

全栈监控其实就是三层监控

  • 基础层:监控主机和底层资源,比如CPU、内存、网络吞吐、磁盘I/O、硬盘使用等。
  • 中间层:中间件层的监控,网关层Nginx、缓存Redis、消息队列RabbitMQ、Kafka、数据层MySQL、Tomcat,Es等。
  • 应用层:监控应用层的使用,HTTP访问量,响应时间,返回码,调用链路分析,性能瓶颈,用户短监控,异常状态监控,异常指标数据监控等。

什么是好的监控系统

在这里插入图片描述
监控的指标化

  • 日志数据结构化
  • 监控数据格式标准化
  • 统一的监控平台
  • 统一的日志分析

如何作出好的监控

大多数系统监控做的并不到位,主要包含以下几点。

  • 1.监控数据是隔离开的,因为分工原因,开发、应用运维、各管各的,所以很多公司的监控系统是隔离的,比如基础层监控报警,运维只能发到大群里@相关业务人员查看。开发人员依赖的中间件系统出现问题,只能运维人员查看。
  • 2.监控的数据项太多,没有重点,指标太多等于没有重点没有信息。需要监控关键数据。

好的监控系统应该具备以下特征。

  • 关注整体应用的SLA,主要为用户服务的API监控整个系统。
  • 关联指标聚合,将基础层、中间层、应用层数据监控关联起来,和具体的机器绑定在一起。
  • 快速故障定位,出现故障不可怕,可怕的是不能快速定位故障,找到根本原因。导致故障恢复的时间过长,从而因为用户的稳定性。所以需要为分布式系统做一个用户请求跟踪的trace监控,整体的调用链路。

一个很好的说法就是,定时的体检,监控系统是否有问题,另一个就是出现问题进行急诊。

体检

容量管理,提供一个全局的系统运行时数据的展示,工程师可以知道是否需要增加机器或者其他资源。
性能管理,可以查看大盘,找到系统瓶颈,并针对性的优化系统和相应代码。

急诊

定位问题,可以快速找到问题的根本原因。快速修复。
性能分析,出现高并发流量时,可以快速排除问题。

如何做出一个好的监控系统

服务调用链跟踪
从用户请求的地方开始,通过调用链,将经过的网关、服务、相关数据中间件等服务进行串联起来,一旦出现问题,就可以快速定位问题在什么地方。
推荐使用Zipkin。java服务可以通过字节码注入方式做到无侵入式。
在这里插入图片描述
服务调用时长分布
当出现相应慢或者超时的时候,可以通过调用时长,定位出现问题的地方。
在这里插入图片描述
服务的Top N试图
通过邮件或者其他方式,发送每日的接口Top 10的接口。访问次数、耗时接口、热点排名等
在这里插入图片描述
数据库操作关联
记录相关数据库操作,可以通过字节码技术进行记录SQL操作的执行时间。
在这里插入图片描述
服务资源跟踪
我们的服务可能运行在物理机上,也可能运行在虚拟机里,还可能运行在一个 Docker 的容器里,Docker 容器又运行在物理机或是虚拟机上。我们需要把服务运行的机器节点上的数据(如 CPU、MEM、I/O、DISK、NETWORK)关联起来。

通过上述的方式,就可以将基础监控和业务联系起来,。
1.当一台机器挂掉是因为CPU或IO过高的时候,就可以马上知道影响到哪些对外服务的API。
2.当一个服务相应过慢的时候,可以通过关联JVM GC或者资源等 或者依赖服务定位问题。
3.SQL操作过慢的时候,可以定位影响的是哪个对外服务的API
4.消息队列拥塞的时候,可以马上知道对外影响服务的API。
在这里插入图片描述

工作中实际经验

对于接触的公司来说,基本都会进行基础层、应用层、中间层的系统监控。但是并没有将数据进行整合在一起。
当出现问题时,基本的手段就是。
1.当天是否有上线新功能,排除是否是新功能引发的BUG问题。
2.进行搜索 ERROR日志,是否存在大量异常。
3.数据库、中间件层是否出现问题。 数据库是否连接失败,网络操作。JVM相关。
4.系统的CPU、内存、磁盘、网络是否有问题,使用TOP、free -h等查看。
5.是否出现瞬间的高流量导致服务扛不住压力崩溃。
6.系统存在的BUG 导致的系统故障。
7.依赖下游系统出现故障,三方服务不正常等。

如果是逻辑问题,看测试环境能否复原出生产现象,从而进一步排除。

总体来说就是出现故障不可怕,即时解决,减少故障的恢复时间 最重要。

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

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

相关文章

Java02-迭代器,数据结构,List,Set ,TreeSet集合,Collections工具类

目录 什么是遍历? 一、Collection集合的遍历方式 1.迭代器遍历 方法 流程 案例 2. foreach(增强for循环)遍历 案例 3.Lamdba表达式遍历 案例 二、数据结构 数据结构介绍 常见数据结构 栈(Stack) 队列&a…

移远通信携手产业合作伙伴率先完成RedCap端网兼容性现网测试

近日,移远通信与中国联通携手,基于搭载高通骁龙X35平台的移远RedCap模组RG255C-CN,在上海嘉定率先完成3.5GHz、2.1GHz、900MHz 中国联通5G全频段 RedCap端网兼容性现网测试,为5G RedCap商用部署奠定了坚实基础。 本次5G RedCap外场…

【Python:参数解析器argparse】对命令行参数进行解析

常用的流程如下: 1、先创建一个解析器: parser argparse.ArgumentParser(description"...")2、为解析器增加参数,包括name、默认值、帮助信息等 parser.add_argument(name "", default ..., help ...)name前面可以…

CS5366+VL171母座正反插HDMI(CS5466也可搭配)国产芯片TYPEC方案设计 ASL电路原理图 集睿致远+威锋设计

VL171是威锋芯片,可搭配ASL集睿致远CS5366设计TypeC母座正反插转HDMI高清投屏方案,CS5366是2lane 芯片,支持4K60HZ,是CS5266的升级版,CS5366设计拓展坞方案可以替代CS5266携带快充100W的PD和US,多口HUB也不在话下,而画面的刷新率和…

在IDEA同一个窗口中同时打开多个独立项目

文章说明 本文主要说明如何在Intellij Idea中同时打开多个独立的Maven项目。 我在使用idea的时候,由于自己负责了很多项目,经常要在不通的代码之间切换来切换去。然后搜索代码的时候也只能搜到当前打开的这个项目。因为这个原因,一些小项目…

利用prophet实现时间序列数据结果预测及对预测数据进行年度趋势和月度值分解

第一部分:prophet的介绍 选取一段chatgpt对该插件的解释,如下: Prophet(预言家)是由Facebook开发的开源时间序列分析工具,旨在提供一个简单而强大的框架,用于预测时间序列数据。Prophet的设计目…

使用中间人攻击的arp欺骗教程

文章目录 前言一、查看网络接口配置第 1 步:从受害者处获取 IP 配置第 2 步:在 Linux 中打开数据包转发第 3 步:使用 arpspoof 将包重定向到您的计算机步骤4:拦截来自路由器的包裹步骤5:从目标的浏览器历史记录中嗅探图…

LeetCode 热题 100 JavaScript--102. 二叉树的层序遍历

给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2: 输入:root [1…

Java 线程基础

volatile happens-before原则 1、单一线程原则 在一个线程内,在程序前面的操作线性发生于后面的操作 2、管程锁定原则 一个unlock操作先行发生于后面对同一个锁的lock操作 3、volatile变量原则 对一个volatile变量的写操作先行发生于后面对变量的读操作 4、线…

资深测试经验总结,APP测试-关键点整理,少走3年的弯路...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 APP测试它的关键点…

LeetCode--HOT100题(16)

目录 题目描述:238. 除自身以外数组的乘积(中等)题目接口解题思路代码 PS: 题目描述:238. 除自身以外数组的乘积(中等) 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等…

el-table那些事

el-table那些事 获取el-table所有勾选的行数据 用于记录工作和日常学习遇到的坑,需求。 vue3element-plusts 获取el-table所有勾选的行数据 1、需要先声明一个ref变量,并赋值给el-table 2、通过el-table提供的getSelectionRows()函数获取选中的"行…

嵌入式系统:连接数字世界的未来

嵌入式设备是专用微型计算机,由硬件、系统级软件和应用软件三个层次组成。硬件包括处理器、存储和各种I/O接口。系统级软件涵盖操作系统和各种I/O子系统。应用软件包括基于不同操作系统的开发。 几乎所有带数字接口的设备都使用嵌入式系统,从大型飞机到…

媒介易讲解体育冠军助力品牌解锁市场营销新玩法

在当今竞争激烈的市场中,品牌推广成为企业取得商业成功的重要一环。然而,随着传统市场推广方式的日益饱和,企业急需创新的市场营销策略来吸引消费者的关注和认可。在这样的背景下,体育冠军助力品牌成为了一种备受瞩目的市场营销新…

MongoDB文档-进阶使用-MongoDB索引-createindex()与dropindex()-在MongoDB中使用正则表达式来查找

阿丹: 之前研究了MongoDB的基础增删改查。在学会基础的数据库增删改查肯定是不够的。这个时候就涉及到了数据库搜索的时候的效率。需要提高数据的搜索效率。 MongoDB索引 在所以数据库中如果没有数据索引的时候。如果需要查找到一些数据。都会去主动扫描所有可能存…

无涯教程-Perl - 面向对象

Perl中的面向对象概念很大程度上基于引用以及匿名数组和哈希。让我们开始学习面向对象Perl的基本概念。 定义类 在Perl中定义一个类非常简单。类以最简单的形式对应于Perl软件包。要在Perl中创建一个类,我们首先构建一个包。 Perl软件包在Perl程序中提供了一个单…

Java-day05(面向对象-1)

面向对象 面向对象与面向过程的区别: 面向过程,强调功能行为;面向对象,强调功能的对象。 Java类及类成员 类:对一类事物描述,是抽象的,概念上的定义对象:实际存在的该类事物的每…

(自控原理)线性系统的频域分析法

目录 一、频率特性 1、频率特性的基本概念 2、频率特性的几何表示方法 二、典型环节与开环系统的频率特性 1、典型环节 2、开环对数的频率特性曲线 三、稳定裕度 1、相角裕度 2、幅值裕度 一、频率特性 1、频率特性的基本概念 2、频率特性的几何表示方法 二、典型环节…

<van-empty description=““ /> 滚动条bug

使用 <van-empty description"" /> 时&#xff0c;图片出现了个滚动条&#xff0c;图片可以上下滑动。 代码如下&#xff1a; <block wx:if"{{courseList.length < 0}}"><van-empty description"" /> </block> <…

跨境电商怎么做?Live Market教你创业及做大生意

随着全球化的不断深入和互联网技术的迅猛发展&#xff0c;跨境电商成为了一个蓬勃发展的行业。根据eMarketer的数据&#xff0c;2021年全球跨境电商销售额将达到4.5万亿美元&#xff0c;预计到2025年将增长至6.3万亿美元。这表明&#xff0c;跨境电商行业将继续保持强劲增长的趋…