即时消息技术剖析与实战
袁武林
微博研发中心技术专家
24187 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 25 讲
即时消息技术剖析与实战
15
15
1.0x
00:00/00:00
登录|注册

19 | 端到端Trace:消息收发链路的监控体系搭建

弥补被动监控的缺陷
回环探测方式
分布式Trace系统:Zipkin, Jaeger, 鹰眼, Mtrace
概念:Trace, Span, Annotation
监控体系:Statsd + Graphite + Grafana, ELK
监控指标:QPS, 耗时, 失败数
监控工具:Nagios, Zabbix
优势
概念
全链路Trace监控
应用层监控
系统层监控
思考题
适用性
监控体系的重要性
监控模式总结
基于回环探测的主动监控
基于数据收集的被动监控
服务上线,监控先行的原则
IM系统监控和保障的重要性
小结
监控模式
袁武林
监控体系搭建

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

你好,我是袁武林。
前面的大部分课程,我基本都是围绕“如何开发和设计一个 IM 系统”的技术点,来进行分析和讲解的,但在实际项目的工程落地实践中,IM 系统的监控和保障也是极其重要的一环。
只有通过对消息收发链路的监控,我们才能够实时地了解到链路是否可用,后端服务是否足够健康;如果监控体系不够完善,我们的业务即使上线了,也是处于“蒙眼狂奔”的状态。所以,我们要在工程上线时有一个“服务上线,监控先行”的意识和原则。
今天,我们就一起来聊一聊,消息收发链路中监控体系搭建的问题。
在 IM 场景中,常见的监控模式大概可以分为两种:一种是基于数据收集的被动监控,一种是基于真实探测的主动监控。下面我们来分别看一下这两种监控模式的实现细节和区别。

基于数据收集的被动监控

“基于数据收集的被动监控”,应该是我们日常开发保障中,最常见的服务和系统监控方式了。
一般来说,被动监控可以粗略地分成几个子类型:系统层监控、应用层监控及全链路 Trace 监控。

系统层监控

系统层监控是整个监控体系中最基础的监控方式,一般来说,它主要监控的是操作系统维度的一些核心性能指标。
举个例子:我们要对上线的业务进行监控,可以通过 Nagios、Zabbix 等类似的系统监控工具,来实时收集机器相关的性能数据,如 CPU、内存、IO、负载、带宽、PPS、Swap 等数据信息。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

在即时消息(IM)系统中建立消息收发链路监控体系至关重要。本文探讨了被动监控和主动监控两种监控模式的实现细节和区别。被动监控依赖服务器或应用服务的监控数据上报,包括系统层监控和应用层监控,以及分布式全链路Trace系统。主动监控则通过第三方的主动探测程序,如模拟用户收发消息行为的回环探测方式,来监控通道的可用性。文章详细介绍了监控数据的收集和使用架构,分布式全链路Trace系统的概念和实现方式,以及基于回环探测的主动监控方法。这些内容为读者提供了建立消息收发链路监控体系的重要性和具体实现方法,对技术人员具有一定的参考价值。总的来说,本文内容涵盖了分布式跟踪系统、监控数据采样率、分布式Trace系统的实现架构、基于回环探测的主动监控等内容,为读者提供了全面的技术视角和解决方案。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《即时消息技术剖析与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(8)

  • 最新
  • 精选
  • clip
    思考题: 感觉整体可以正常运转,但是会丢失一些细节。 如果被调用服务只是 server 侧没接 trace 那会丢失 server 侧及这个服务内部的其他调用的 trace。 如果被调用服务的 client 也没接 trace 那这次调用会被当做调用它的服务的内部的一个逻辑,但不影响整个链路里其他部分的监控。

    作者回复: 是的,只是这一个span无法再向后延展,整体trace使用上是ok的,当前这个span也只是丢失ss和sr部分,实际也是属于可用的。

    2019-10-10
    5
  • clip
    “对单机的应用状态分别进行监控”是指怎样的监控呢? 是类似监控应用层整体情况那样但改成单机器监控,还是做每台机器的系统层监控呢? 感觉系统层监控的话好像还是不太容易和应用层整体的报错对应起来。

    作者回复: 实际上分布式应用的整体监控数据的就是依赖单机上报的数据在数据收集端进行聚合的,比如qps是进行累加,耗时是采用平均值等。所以单机的监控只需要对这些单机上报的监控数据和汇总聚合的全局监控数据进行独立存储,单机数据可以根据ip维度进行存储,然后通过api层通过单机ip就能查询到了。

    2019-10-10
    3
  • 个人觉得不可用,调用环节已经断层

    作者回复: trace多个span的数据组织上本身是一个DAG,当某一个链路的被调用方没有接入trace时,只是从这个分支往下的链路中断了,一般不影响整体trace的呈现,当前相关的这个span也只是没有 ss和sr部分,整体上也是可看。

    2019-10-10
    3
  • 唯我天棋
    如果不是rpc模式的,长连接模式的,消息异步发送,怎么进行全链路监控呀?

    作者回复: 大部分rpc也是基于长连接实现的呀,自己实现的话需要针对socket的读写进行trace探针的插入。

    2019-11-04
    1
  • leslie
    自己其实在工作中越来越觉得监控的重要:知道问题才能解决问题;监控的方案其实同样是在完善中的个人觉得不同系统关注的监控应当不一样,需要对现有的监控系统做二次开发-制定出适合自己系统的监控系统才是合适的系统。这个就像MQ虽然有许多,可是不同场景适用的不同,如何写出合适自己系统的监控才是关键。
    2019-10-15
    4
  • mgxian
    trace会中断 无法查看整个链路的情况 主要是因为 traceid 和 parent span id 无法正常传递
    2019-10-09
    2
  • piboye
    traceid之前的系统实践过,现在没搞懂spanid的生成并保障在traceid下唯一,特别是对于并发请求多个服务的时候
    2020-05-10
  • Z邦
    老师能否开一篇详解应用层监控需要监控的指标、获取方法,异常幅度等细节?
    2019-10-12
收起评论
显示
设置
留言
8
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部