即时消息技术剖析与实战
袁武林
微博研发中心技术专家
立即订阅
6503 人已学习
课程目录
已完结 24 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 搞懂“实时交互”的IM技术,将会有什么新机遇?
免费
基础篇 (8讲)
01 | 架构与特性:一个完整的IM系统是怎样的?
02 | 消息收发架构:为你的App,加上实时通信功能
03 | 轮询与长连接:如何解决消息的实时到达问题?
04 | ACK机制:如何保证消息的可靠投递?
05 | 消息序号生成器:如何保证你的消息不会乱序?
06 | HttpDNS和TLS:你的消息聊天真的安全吗?
07 | 分布式锁和原子性:你看到的未读消息提醒是真的吗?
08 | 智能心跳机制:解决网络的不确定性
场景篇 (4讲)
09 | 分布式一致性:让你的消息支持多终端漫游
10 | 自动智能扩缩容:直播互动场景中峰值流量的应对
11 | 期中实战:动手写一个简易版的IM系统
12 | 服务高可用:保证核心链路稳定性的流控和熔断机制
进阶篇 (10讲)
13 | HTTP Tunnel:复杂网络下消息通道高可用设计的思考
14 | 分片上传:如何让你的图片、音视频消息发送得更快?
15 | CDN加速:如何让你的图片、视频、语音消息浏览播放不卡?
16 | APNs:聊一聊第三方系统级消息通道的事
17 | Cache:多级缓存架构在消息系统中的应用
18 | Docker容器化:说一说IM系统中模块水平扩展的实现
19 | 端到端Trace:消息收发链路的监控体系搭建
20 | 存储和并发:万人群聊系统设计中的几个难点
21 | 期末实战:为你的简约版IM系统,加上功能
22 | 答疑解惑:不同即时消息场景下架构实现上的异同
结束语 (1讲)
结束语 | 真正的高贵,不是优于别人,而是优于过去的自己
即时消息技术剖析与实战
登录|注册

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

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

基于数据收集的被动监控

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

系统层监控

系统层监控是整个监控体系中最基础的监控方式,一般来说,它主要监控的是操作系统维度的一些核心性能指标。
举个例子:我们要对上线的业务进行监控,可以通过 Nagios、Zabbix 等类似的系统监控工具,来实时收集机器相关的性能数据,如 CPU、内存、IO、负载、带宽、PPS、Swap 等数据信息。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《即时消息技术剖析与实战》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(7)

  • leslie
    自己其实在工作中越来越觉得监控的重要:知道问题才能解决问题;监控的方案其实同样是在完善中的个人觉得不同系统关注的监控应当不一样,需要对现有的监控系统做二次开发-制定出适合自己系统的监控系统才是合适的系统。这个就像MQ虽然有许多,可是不同场景适用的不同,如何写出合适自己系统的监控才是关键。
    2019-10-15
    2
  • clip
    思考题:
    感觉整体可以正常运转,但是会丢失一些细节。
    如果被调用服务只是 server 侧没接 trace 那会丢失 server 侧及这个服务内部的其他调用的 trace。
    如果被调用服务的 client 也没接 trace 那这次调用会被当做调用它的服务的内部的一个逻辑,但不影响整个链路里其他部分的监控。

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

    2019-10-10
    2
  • _CountingStars
    trace会中断 无法查看整个链路的情况 主要是因为 traceid 和 parent span id 无法正常传递
    2019-10-09
    2
  • clip
    “对单机的应用状态分别进行监控”是指怎样的监控呢?
    是类似监控应用层整体情况那样但改成单机器监控,还是做每台机器的系统层监控呢?
    感觉系统层监控的话好像还是不太容易和应用层整体的报错对应起来。

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

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

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

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

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

    2019-11-04
  • Z邦
    老师能否开一篇详解应用层监控需要监控的指标、获取方法,异常幅度等细节?
    2019-10-12
收起评论
7
返回
顶部