从 0 开始学微服务
胡忠想
微博技术专家
64643 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 43 讲
开篇词 (1讲)
结束语 (1讲)
从 0 开始学微服务
15
15
1.0x
00:00/00:00
登录|注册

07 | 如何监控微服务调用?

思考题
总结
监控系统原理
监控维度
监控指标
监控对象
如何监控微服务调用

该思维导图由 AI 生成,仅供参考

与单体应用相比,在微服务架构下,一次用户调用会因为服务化拆分后,变成多个不同服务之间的相互调用,这也就需要对拆分后的每个服务都监控起来。
在讲述如何监控微服务调用前,首先你要搞清楚三个问题:监控的对象是什么?具体监控哪些指标?从哪些维度进行监控?下面就从这三个问题开始,一起来看看如何监控微服务调用

监控对象

既然要监控,那么要监控哪些对象呢?根据我的实践经验,对于微服务系统来说,监控对象可以分为四个层次,由上到下可归纳为:
用户端监控。通常是指业务直接对用户提供的功能的监控。以微博首页 Feed 为例,它向用户提供了聚合关注的所有人的微博并按照时间顺序浏览的功能,对首页 Feed 功能的监控就属于用户端的监控。
接口监控。通常是指业务提供的功能所依赖的具体 RPC 接口的监控。继续以微博首页 Feed 为例,这个功能依赖于用户关注了哪些人的关系服务,每个人发过哪些微博的微博列表服务,以及每条微博具体内容是什么的内容服务,对这几个服务的调用情况的监控就属于接口监控。
资源监控。通常是指某个接口依赖的资源的监控。比如用户关注了哪些人的关系服务使用的是 Redis 来存储关注列表,对 Redis 的监控就属于资源监控。
基础监控。通常是指对服务器本身的健康状况的监控。主要包括 CPU 利用率、内存使用量、I/O 读写量、网卡带宽等。对服务器的基本监控也是必不可少的,因为服务器本身的健康状况也是影响服务本身的一个重要因素,比如服务器本身连接的网络交换机上联带宽被打满,会影响所有部署在这台服务器上的业务。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

在微服务架构下,监控服务调用变得更加复杂,需要监控用户端、接口、资源和基础四个层次的对象。监控指标主要包括请求量、响应时间和错误率,需要从全局、分机房、单机、时间和核心等多个维度进行监控。本文详细介绍了如何监控微服务调用,从明确监控对象、监控指标到监控维度,为读者提供了全面的监控系统搭建指南。文章主要包括四个环节:数据采集、数据传输、数据处理和数据展示。数据采集方式有服务主动上报和代理收集两种,而数据传输方式常用的有UDP传输和Kafka传输。数据处理包括接口维度聚合和机器维度聚合,存储一般选用索引数据库或时序数据库。最后,数据展示以Dashboard的方式呈现,包括曲线图、饼状图和格子图等多种方式。监控系统在微服务架构中的重要性不言而喻,搭建一个完善的监控系统对于业务的稳定性和可用性至关重要。读者可通过本文了解监控系统的原理和实现方式,为自己的技术团队选择合适的监控技术方案提供参考。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学微服务》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(30)

  • 最新
  • 精选
  • 金hb.Ryan 冷空氣駕到
    主要分几块,接口性能、微服务性能、日志汇总,接口性能参考鹰眼自研了一套全链路系统也类似pinpoint,微服务性能基于dubbo做了扩展可以全盘监控,日志采用solrflume做统一日志,然后每块数据作为元数据放入hadoop和storm做历史汇总和实时分析,后面计划加入数据挖掘和数据分析做智能监控:)

    作者回复: 自研方案能够满足自己需求就可以

    2018-09-07
    27
  • snakorse
    使用skywalking框架做apm的路过

    作者回复: skywalking是一款优秀的支持java语言的监控系统

    2018-09-06
    20
  • 楼下小黑哥
    目前我们业务主要使用 Dubbo ,故我们采用 Dubbo-Monitor 监控 dubbo 接口相关数据。并采用 Grafana 展示数据。对于第三方接口数据,我们将调用信息发送 Kafaka,然后服务端分析。我们的业务为提供支付服务,所以全局维度我们会监控支付接口请求量,错误率等。而从接口维度,我们会监控相关对接支付通道的成功率,掉单率等。

    作者回复: 嗯,错误率是个很重要的业务指标

    2018-09-07
    9
  • oddrock
    问老师个问题,做服务监控时,是否必须事先要求先制定服务日志的规范和系统日志的规范,包括格式规范、文件位置规范等,让各个微服务去遵守?

    作者回复: 是的,日志必须符合规范,位置也是

    2018-09-06
    6
  • eason2017
    我们的系统是网关系统,是客户端接口请求的入口,在此我们做了如下维度:接口http/https状态,接口的SLA,接口的TPS。这几个维度。网关是基于openresty做的改造,所以,这些数据都可以通过lua脚本记录在共享内存当中,以供Prometheus拉取,通过Granfanna来展示。 老师,目前会出现一个问题,就是如果某一台网关机器重启,那么Granfanna的展示图上面就是不正确的了,是通过差值来画图的,刚好重启为零,那么做差值就是负值了,请问老师,您有什么画图的方法可以规避这种情况吗? 谢谢🙏

    作者回复: 我理解是采集点的频率问题吧,如果没数据的话用前一个点的数据

    2018-09-06
    4
  • Len
    老师,正如专栏正文中最后一张图显示,假如我们现在已经有了各个接口的 QPS 数据,那么在实际监控报警中该怎么使用呢?每个接口上线前做一个压测确定一个 QPS 基准,然后看每个接口是否超过阀值来报警?

    作者回复: 这个QPS不一定准确,可以采用性能或者接口慢速比(比如接口超过1秒的比率)作为报警指标

    2018-09-07
    3
  • 梦想是星空
    有开源的,可用于生产的监控系统吗?

    作者回复: 有的,专栏后面会讲zipkin和pinpoint

    2018-09-06
    2
    3
  • Goku
    请问您说的PB对象是protocol buffers吗?

    作者回复: 是的

    2018-09-06
    2
  • Sam_Deep_Thinking
    后面会介绍微服务监控的框架吗??

    作者回复: 有专门一章对比开源监控框架

    2018-09-06
    2
  • Mac Kwan
    胡老师,为什么没有谈谈专门给我们程序猿看的错误信息的数据采集分析调试呢

    作者回复: 服务追踪系统其实能起到这个作用,后面专栏会讲

    2018-09-06
    1
收起评论
显示
设置
留言
30
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部