2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

微服务架构下的监控系统设计(一)——指标数据的采集展示

  • 2019-11-12
  • 本文字数:1867 字

    阅读完需:约 6 分钟

微服务架构下的监控系统设计(一)——指标数据的采集展示

微服务是一种架构风格,一个大型复杂软件应用通常由多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。


微服务之前很多单体应用,其监控复杂度较低,场景也比较单一。微服务下,由于业务逻辑散布在众多进程中(很多大型业务,一个业务流程涉及的服务有几十个),一旦业务出现问题,追查其源头就好比大海捞针,这个时候就需要完善的监控体系。


一个完善的监控体系,其构建周期比较漫长,而且随着业务场景的变化,自身也是需要不断迭代优化的。本文仅从几个监控维度以及原子化场景谈谈如何建立统一的监控数据收集、展示系统,希望能够启发大家继续深入地思考监控体系的建设。

微服务下的几个监控维度

微服务监控与传统应用的监控相比,最明显的改变就是视角的改变,我们把监控从机器视角转换成以服务为中心的视角,在微服务的视角下,监控可以从数据维度、资源维度和代码维度进行分层,如下图:


数据维度

当前 WEB 化服务是主流,每一个 WEB 服务都有一个入口,不管是 APP 还是 WEB 网页,入口负责跟用户交互,并将用户的信息发给后台,后台一般都会有接入 LB 或者 Gateway,负责负载均衡并将数据转发给具体的应用处理,最后由应用处理之后写入数据库。

资源维度

现在很多服务部署在云端,涉及虚拟化技术,虚拟主机运行在物理服务器上,虚拟主机之间通过虚拟网络相互连接。在资源层面的监控,是不可缺少的一环,我们不但需要采集虚拟主机的性能指标,同时还需要知道运行虚拟主机的服务器上的 CPU、内存、磁盘 IO 等数据,以及连接虚拟主机之间的虚拟网络的带宽负载等。

代码维度

APM,也就是应用性能分析,代码侧的监控采集,是随着微服务的兴起而出现的。在微服务场景下,一个业务流程横跨几十个服务的场景,只有传统的监控数据,很难定位到问题的根源。


我们可以针对代码的技术栈,开发出特定的采集框架,在性能损耗可以接受的范围之内,采集函数之间的调用关系,服务之间的调用拓扑,并测量函数或者服务的响应时间,才能有针对性地优化性能或者提前预判故障。

关键监控指标的场景描述

微服务监控最大的特点,用一句话概括:就是服务特别多,服务间的调用也非常复杂。当系统出现问题时,想要在上百个相关的、依赖错综复杂的服务系统之中快速定位到出错的系统,需要依靠关键的监控指标。我们在上述的三个维度之上,分析了每个维度下每个层级可能会产生的告警情况,总结了 URL 监控、主机监控、产品监控等八个原子化监控场景。



URL 监控:无论是 APP 还是 WEB,本质上都是通过 URL 发起后台调用,可以通过 MOCK 调用 API 获取响应时间、响应状态码等指标,展示监测业务的整体健康状况。


主机监控:通过安装代理采集主机上基本的监控信息如 CPU、内存、IO 等数据,同时用户可以通过配置文件打开其它开源应用如 Tomcat、Nginx 等数据采集开关。


产品监控:公有云将主机、网络、存储以及一些中间件以产品的形式提供给用户使用,产品服务后台上报各个产品相关指标数据,用来监控各个产品资源的健康状况。


组件监控:一些开源组件,比如 Tomcat、Nginx、Netty 等监控数据的采集,可以通过主机上的代理加载相应组件的监控采集程序。


自定义监控:服务实例收集业务相关数据,定时调用 API 接口上报数据,支持多个服务实例同时上报一个监控项,并且支持多维度查询告警。


资源监控:用户以资源为维度上报自定义数据,每个资源都有相同的几个监控项,各个资源的监控项之间相互独立。


APM:根据各语言栈的不同,分别实现函数调用关系、服务之间调用拓扑的展示。根据各个语言的不同,有的需要入侵代码,以 SDK 嵌入的形式收集数据,有的则与代码解耦,通过元编程重载一些方法来实现数据采集。


事件监控:针对公有云产品、业务逻辑中的不连续事件,比如云盘的不可用事件、SSD 硬盘的 Reset 事件等,提供统一的存储、分析、展示。


有了以上原子化场景的数据收集,我们就可以通过 UI 统一展示监控数据,可以按照前文描述的三个维度,以用户体验为核心,设计图形化页面。图形化一般是以时间序列为横轴,展示指标随时间变化,针对一些统计指标,也可以通过饼图、柱状图等展示分析、对比结果。


本文主要阐述了监控体系中数据的采集、展示。至于数据的存储及告警流程,有兴趣的同学可以继续关注后续监控相关文章。


作者介绍;


董磊,UCloud 技术专家。十年 IT 行业开发经验,目前负责 UCloud 混合云、监控产品的设计开发,持续关注微服务架构、监控、DevOps 等领域。


本文转载自公众号 UCloud 技术(ID:ucloud_tech)。


原文链接:


https://mp.weixin.qq.com/s/RjvzQQSa-wzOi8Tr6FnSPQ


2019-11-12 10:333719

评论

发布
暂无评论
发现更多内容

SpringBoot3整合SpringSecurity6(三)基于数据库的用户认证

电子尖叫食人鱼

oracle Spring Boot

腾讯元宝再更新!上线“对话分组”,支持自定义回答风格

极客天地

AI 调教指南!一文教会你如何在 Trae IDE 中配置自定义规则

TRAE.ai

人工智能 编程 开发者 MCP Trae

Arthas mc(Memory Compiler/内存编译器 )

刘大猫

人工智能 监控 Arthas 监控工具 mc

区块链RWA系统的运营

北京木奇移动技术有限公司

区块链技术 软件外包公司 RWA系统开发

为什么重写equals一定也要重写hashCode方法?

电子尖叫食人鱼

Java

Timefold 仓库拣货优化案例导读

PeterOne

人工智能 算法 运筹规划

台达支持经济学人集团Economist Impact发布全球可持续AI报告

财见

中烟创新入选“2024卓越软件项目优秀案例”

中烟创新

从表格到系统:Classmethod 用 NocoBase 构建员工信息管理系统

NocoBase

开源 低代码 表格 管理工具 员工信息管理

抖音商品详情API接口(附代码示例)

tbapi

抖音API 抖音数据采集 抖音商品详情接口 抖音商品sku接口

数字中国 | 史宾格荣获 “2025数字中国创新大赛”银奖

百度安全

《算法导论(第4版)》阅读笔记:p9-p9

codists

算法

区块链RWA系统的上线

北京木奇移动技术有限公司

区块链技术 软件外包公司 RWA开发

云MES系统源码,支持 SaaS 多租户,支持二次开发

万界星空科技

开源 mes 开源mes mes源码 万界星空科技mes

内网im软件,支持企业云盘的协同办公软件推荐

BeeWorks

即时通讯 IM 私有化部署

区块链ETF系统的优化

北京木奇移动技术有限公司

区块链技术 软件外包公司 区块链ETF

企业内部IM即时通讯软件,如何解决公司安全办公问题?

BeeWorks

即时通讯IM 私有化部署 企业级应用

通义发布小尺寸多模态模型 Qwen2.5-Omni-3B;英伟达开源 ASR 模型 Parakeet TDT 0.6B 丨日报

RTE开发者社区

玩转MCP | 一文看懂如何在 Trae IDE 中解锁 MCP

TRAE.ai

人工智能 开发者 #编程 MCP Trae

彻底搞懂 MCP 是什么、和 API 的区别、对企业的价值,如何在企业落地、未来趋势丨社区来稿

RTE开发者社区

PPT美化AI哪个好?2个AI美化PPT软件盘点!

职场工具箱

效率 职场 PPT 办公软件 AI生成PPT

黑龙江等保测评最新消息如下

黑龙江陆陆信息测评部

天翼云息壤全面升级!

天翼云开发者社区

算力 智能云 息壤

HarmonyOS运动开发:如何集成百度地图SDK、运动跟随与运动公里数记录

王二蛋和他的张大花

鸿蒙

AI智上 | 数智司库:某能源央企集团智慧司库建设领先实践

用友智能财务

信息化 用友 财务 数智化 司库

深圳金融科技交流会,探讨AI大模型重塑资管新生态

非凸科技

零信任的用户行为分析: 通过综合策略解锁安全洞察力(一)

天翼云开发者社区

安全 零信任策略

斯曼森携手亚马逊云科技,使用 Amazon Nova 打造中文法律大模型

亚马逊云科技 (Amazon Web Services)

Q1收入猛增46%,AI出海致富的秘密,藏在昆仑万维财报里

脑极体

AI

微服务架构下的监控系统设计(一)——指标数据的采集展示_文化 & 方法_董磊_InfoQ精选文章