大家好,我是哪吒。
与单体应用相比,在微服务架构下,一次用户调用会因为服务化拆分后,变成多个不同服务之间的相互调用,这也就需要对拆分后的每个服务都监控起来。
在进行系统监控之前,需要明确三个问题:
监控对象大概分为四个方向:
这是微服务最基本的监控指标之一,包括实时请求量和历史请求量。实时请求量可以用QPS(每秒查询次数)来衡量,反映了服务的实时负载情况。历史请求量可以用来分析服务的负载趋势,为容量规划提供依据。
响应时间是衡量微服务性能的重要指标。它反映了服务处理请求的速度。通常,我们关注平均响应时间和P99响应时间(即99%的请求的响应时间)。如果响应时间过长,可能意味着服务存在性能瓶颈或者资源不足。
错误率是衡量服务稳定性的重要指标。它包括HTTP错误率(如4xx、5xx错误)和业务错误率(如业务逻辑错误、数据库查询错误等)。如果错误率过高,可能意味着服务存在bug或者配置问题。
服务可用性是衡量服务健康状态的重要指标。它反映了服务是否能够正常处理请求。如果服务可用性降低,可能意味着服务存在故障或者资源不足。
这包括CPU使用率、内存使用率、磁盘使用率等。这些指标反映了服务的资源消耗情况,如果资源使用率过高,可能意味着服务存在资源泄露或者配置不足。
包括数据库连接数、SQL执行次数、数据库读写延迟等。这些指标反映了微服务对数据库的访问情况,可以帮助发现数据库性能瓶颈和访问模式问题。
这一维度关注整体的服务运行状况,包括整体的请求量、平均耗时以及错误率。这个维度的监控帮助我们对服务的整体运行情况有个全面的了解。
由于服务可能部署在多个机房,这个维度关注不同机房内的服务运行状况。不同机房的服务可能会因为地域等因素导致各种指标存在很大的差异,因此需要从机房维度进行监控。
即使在同一个机房,由于机器采购批次等因素,同一服务在不同机器上的表现也可能存在差异。这个维度的监控帮助我们了解每台机器上的服务运行情况。
这个维度关注服务在不同时间段的性能表现,例如一天前,一周前等。通过时间维度的对比,我们可以了解服务的性能变化趋势,以便更好地预测未来的负载和需求。
通过这四个维度的监控,我们可以更全面地了解微服务的运行状态和性能,从而及时发现并解决问题,保证服务的稳定和高效运行。
通常有两种方式:
无论哪种方式,要先确认采集频率,采样频率关系着数据实时性和精确度。频率越高,数据实时性和精确度越高,但性能压力也越大。过高的采样频率会导致系统写入磁盘的IO过高,存储压力也会过大,进而影响程序的性能。所以设置合理的采集频率非常重要。最好采用动态频率,系统比较空闲时间加大采样率,系统任务比较重时,减少采样频率,以减少系统的运行压力。
数据传输最常用的方式有两种:
无论采用哪种传输方式,数据格式都十分重要,尤其是对带宽敏感以及解析性能要求比较高的场景,一般数据传输时采用的数据格式有两种:
数据处理是对收集来的原始数据进行聚合并存储。数据聚合通常有两个维度:
聚合后的数据需要持久化到数据库中存储,所选用的数据库一般分为两种:
微服务监控系统的数据展示通常是通过监控仪表板来实现的。在这个仪表板上,可以展示各种监控维度的重要指标。
一般来说,数据展示会包括如下内容:
(1)实时数据
展示微服务的实时运行数据,例如当前的请求量、响应时间、错误率等。这些数据通常以图表或者数字的形式直观展示,便于快速了解服务状态。
(2)历史数据
通过折线图、柱状图等形式,展示微服务在过去一段时间内的性能变化趋势。这样可以观察到服务的负载变化,以及是否有性能瓶颈或者故障发生。
(3)告警提示
当某个监控指标超过预设的阈值时,监控系统会产生告警提示。这些数据展示通常会比较醒目,以便快速发现并处理问题。
服务详情:通过点击仪表板上的某个服务,可以展示该服务的详细信息,包括请求量、响应时间、错误率的详细数据,以及该服务所调用的其他服务和被调用的情况等。
(4)自定义视图
根据用户需要,可以选择展示特定的监控维度和数据,定制符合自己需求的监控视图。
请注意,上述描述的一般性数据展示方式可能会因不同的监控系统和工具而有所差异。实际使用中,建议参考具体监控系统的用户手册和操作指南,以获得更详细和准确的信息。
服务监控在微服务改造过程中的重要性不言而喻,没有强大的监控能力,改造成微服务架构后,就无法掌控各个不同服务的情况,在遇到调用失败时,如果不能快速发现系统的问题,对于业务来说就是一场灾难。
搭建一个服务监控系统,涉及数据采集、数据传输、数据处理、数据展示等多个环节,每个环节都需要根据自己的业务特点选择合适的解决方案。
京东购买链接:从零开始学架构:照着做,你也能成为架构师(博文视点出品)
在很多人眼中,架构师极其神秘,每天做什么,需要具备哪些能力,众说纷纭、莫衷一是。在我看来,架构师虽然是一个技术职位,但综合能力要求很高,是胸怀理想的现实主义者,是团队中的技术领导者,需要具备突出的软硬技能。许多人想成为架构师,却不得其法,本书提纲挈领,从概念到模式并结合实战,为我们掀开神秘面纱,展示架构师的全景视图,相信会成为很多工程师进阶架构师的入门宝典。可惜当初我当架构师的时候,没有这样接地气的好书,如今的同行们有福了!
互联网资深技术专家,十多年技术老兵,目前带领多个研发团队,承担架构设计、架构重构、技术团队管理、技术培训等职责;专注于开源技术、系统分析、架构设计,对互联网技术的特点和发展趋势有较深入的研究,对系统解耦、高性能、高可用架构有丰富的经验。
架构设计是技术人员成长和晋升过程中必须掌握的技能,但目前业界缺乏架构师学习和培养方面体系化的知识和实践的指导,本书结合作者多年在架构设计方面的学习、思考、实践,提出了完整的一套架构设计方法论,包括什么是架构、架构设计的目的、架构设计原则、架构设计流程、架构设计模式和技巧、互联网公司技术演进等内容。这套架构设计方法论适合不同行业,比如互联网、企业应用等;也适合不同的技术领域,比如后端架构设计、前端架构设计、客户端架构设计、测试平台架构设计、运维平台架构设计等。
本书由浅入深地阐述了架构设计的相关内容,比较适合以下类型的读者:
微服务架构之路2,一文讲透微服务核心架构(注册中心、服务通信、服务监控、服务追踪、服务治理)
🏆哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师。
华为OD机试 2023B卷题库疯狂收录中,刷题点这里
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。