Dengbinhero's home

苦才是人生,做才是得到

嗨,我是邓斌 (@dengbinhero),一名 iOS / Python 开发者。现居北京,就职于 Weibo。世界很大、很美,很高兴与你相遇。


全链路日志监控系统

全链路日志监控系统

无所不在的部署 && 持续的监控

一:技术背景

1:我们遇到了什么trouble?
在一个微服务的架构系统中,客户端每一个请求,都会形成一个复杂的、很长的调用链路,每一次请求涉及到查询各种API和多种服务请求。例如:客户端app发起一次搜索请求,大概流程如下:
1):客户端通过调用mapi发起请求
2):mapi收到请求后向平台发起多个请求,查询私信聊天记录、查询联系人、查询群聊天记录,而每个环节都可能出问题,但是对客户端来说,都是mapi请求错误,并不知道具体是哪个环节出问题。

二:目标要求

1:记录整个链路所有环节耗时
2:记录整个链路的所有错误
3:可视化
4:数据分析
5:错误快速定位
6:合理的采样率

三:实现方案

1:调用示意图
2:调用过程追踪-怎么串联整个链路
3:采样率

1:调用示意图

1):当用户发起一个请求时,首先到达前端A服务,然后分别对B服务和C服务进行RPC调用;
2):B服务处理完给A做出响应,但是C服务还需要和后端的D服务和E服务交互之后再返还给A服务,最后由A服务来响应用户的请求;

2:调用过程追踪-怎么串联整个链路

1):traceId:本次请求的唯一ID,贯穿整个请求链路,使用uuid做为唯一标志符。
2):spanId:链路中每个请求单元的id,例如一次语音的分片上传,一条语因分为1、2、3三片,三次上传请求,每一次分片上传都有自己对应的spanId,而每个分片都是同一个traceId 3):parentId:上一个请求的spanId,例如分片2的parentId则是分片1的spanId,这样整个链路的层级顺序都串起来了。

3:采样率
主要采取三个采样策略:
1):错误日志全部上采样上传
2):vip用户全采样上传
3):普通用户采用1/1000的采样率上传

文章引用:
Google Dapper系统
全链路监控-简书

最近的文章

阅读《如何阅读一本书》

阅读《如何阅读一本书》封面 作者:[美] 莫提默·J. 艾德勒 / 查尔斯·范多伦一:关于       书名即作者想给读者的东西,教会你如何阅读一本书,你真的懂得如何高效的阅读一本书吗?按照作者的统计,就算受过良好教育的大学毕业生,也有绝大部分人不懂得如何高效的高质量的阅读一本书。从小到大并没有开设专门的课程教我们如何做到高效阅读,作者系统的教我们如何阅读。二:阅读的四个阶段四个阶段是循序渐进的,阅读一本书先完成第一个阶段,再第二个阶段,依次往下走。       1:基础阅读       ...…

Reading,Book,Efficiency继续阅读
更早的文章

阅读《吃掉那只青蛙》

阅读《吃掉那只青蛙》封面 作者:brian Tracy一:关于       《吃掉那只青蛙》在时间管理类书籍里面也是大热门,零零散散花了三天时间看完。该书的叙述方式和《番茄工作法》相比有很大的区别,《番茄工作法》更多的像是一个严谨的理工生用很平淡的语气在给你讲道理和教你怎么实践。而《吃掉那只青蛙》的叙述方式和市面上的“成功学”、“鸡汤”、“励志”类书籍很像,通过讲一些道理配合一些蹩脚的例子叙述给你听。但是热门有他热门的道理。里面有很多方法可以借鉴。二:核心关键要素1:明确目标       ...…

Reading,Book,Efficiency继续阅读