spring cloud sleuth 和 zipkin 链路跟踪

一、spring cloud sleuth

提供链路追踪。通过sleuth可以很清楚的看出一个请求都经过了哪些服务;可以很方便的理清服务间的调用关系。

可视化错误。对于程序未捕捉的异常,可以结合zipkin分析。

分析耗时。通过sleuth可以很方便的看出每个采样请求的耗时,分析出哪些服务调用比较耗时。当服务调用的耗时随着请求量的增大而增大时,也可以对服务的扩容提供一定的提醒作用。

从官网得知 从2.1.0版开始,Spring Cloud Sleuth支持将跟踪发送到多个跟踪系统,且去掉了 spring cloud streaming,那如果只引入sleuth包,不同机器服务之间相互调用是否还能实现链路追踪?经过测试答案是可以的,源码这里我没研究,但是从技术角度要自己实现,其实只要在 header 里添加一个值(唯一),在上下游服务之间传递,便可行。

所以结论是如果只是单纯为了使用链路追踪在控制台看,只引入 sleuth 是已经足够的。

二、spring cloud zipkin

Zipkin是Twitter的一个开源项目,我们可以使用它来收集各个服务器上请求链路的跟踪数据,并通过它提供的API接口来辅助查询跟踪数据以分布式系统的监控程序,通过UI组件帮助我们及时发现系统中出现的延迟升高问题以及系统性能瓶颈根源。

Zipkin的基础架构

Collector(收集器组件)-> 主要负责收集外部系统跟踪信息,转化为Zipkin内部的Span格式。

Storage(存储组件)-> 主要负责收到的跟踪信息的存储,默认为存储在内存中,同时支持存储到Mysql、Cassandra以及ElasticSearch。

API(Query)-> 负责查询Storage中存储的数据,提供简单的JSON API获取数据,主要提供给web UI使用。

Web UI(展示组件)-> 提供简单的web界面,方便进行跟踪信息的查看以及查询,同时进行相关的分析。

Instrumented Client 和Instrumented Server,是指分布式架构中使用了Trace工具的两个应用,Client会调用Server提供的服务,两者都会向Zipkin上报Trace相关信息。在Client 和 Server通过Transport上报Trace信息后,由Zipkin的Collector模块接收,并由Storage模块将数据存储在对应的存储介质中,然后Zipkin提供API供UI界面查询Trace跟踪信息。Non-Instrumented Server,指的是未使用Trace工具的Server,显然它不会上报Trace信息。

三、日志解析

2020-06-19 11:10:44.967 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] Content-Length: 1921
2020-06-19 11:10:44.967 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] Content-Type: application/json
2020-06-19 11:10:44.968 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] 
2020-06-19 11:10:44.968 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] {"data":{"createTime":null,"updateTime":null,"deleteFlag":null,"id":null,"menuId":null,"name":null,"buildingDegree":null,"cityName":null,"cityId":null,"lng":null,"lat":null,"remarks":null},"token":"5a717dca1142d685c8aa54b45d0388c8","user":{"id":1,"account":"15771720565","name":"冯**","phone":"15771720565","onlineState":null,"remarks":"fdsafdsa","rolesId":1,"avatar":null,"token":"5a717dca1142d685c8aa54b45d0388c8","roles":{"id":1,"roleName":"超级管理员","remarks":"2222","menus":null},"menus":[{"id":1,"parentId":0,"menuName":"大屏展示","menuPath":"/dashboard","menuOrder":1000,"icon":"el-icon-monitor","remarks":null,"menuData":false,"menuButton":false,"child":[]},{"id":2,"parentId":0,"menuName":"数据分析","menuPath":"/dataAnalysis","menuOrder":2000,"icon":"el-icon-data-line","remarks":null,"menuData":false,"menuButton":false,"child":[]},{"id":3,"parentId":0,"menuName":"系统管理","menuPath":"/setting","menuOrder":3000,"icon":"el-icon-setting","remarks":null,"menuData":false,"menuButton":false,"child":[{"id":26,"parentId":3,"menuName":"用户管理","menuPath":"/setting/user","menuOrder":3100,"icon":null,"remarks":null,"menuData":false,"menuButton":false,"child":[]},{"id":5,"parentId":3,"menuName":"角色管理","menuPath":"/setting/roles","menuOrder":3200,"icon":null,"remarks":null,"menuData":false,"menuButton":false,"child":[]},{"id":6,"parentId":3,"menuName":"菜单管理","menuPath":"/setting/menus","menuOrder":3300,"icon":null,"remarks":null,"menuData":false,"menuButton":false,"child":[]}]},{"id":16,"parentId":0,"menuName":"电站管理","menuPath":"/electricityStation","menuOrder":4000,"icon":"el-icon-lightning","remarks":null,"menuData":false,"menuButton":false,"child":[{"id":17,"parentId":16,"menuName":"电站信息","menuPath":"/electricityStation/list","menuOrder":4100,"icon":null,"remarks":"列出所有电站","menuData":false,"menuButton":false,"child":[]}]}]}}
2020-06-19 11:10:44.968 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] ---> END HTTP (1921-byte body)
2020-06-19 11:10:44.998 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] <--- HTTP/1.1 200  (30ms)
2020-06-19 11:10:44.999 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] connection: keep-alive
2020-06-19 11:10:44.999 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] content-type: application/json
2020-06-19 11:10:44.999 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] date: Fri, 19 Jun 2020 03:10:44 GMT
2020-06-19 11:10:44.999 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] keep-alive: timeout=60
2020-06-19 11:10:44.999 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] transfer-encoding: chunked
2020-06-19 11:10:44.999 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] 
2020-06-19 11:10:44.999 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] {"code":200,"msg":null,"data":[{"name":"平顶山","value":30},{"name":"西安","value":50},{"name":"北京","value":43}]}
2020-06-19 11:10:45.000 DEBUG [bff-web-data-platform,368e435f7de29eff,368e435f7de29eff,false] 2516 --- [nio-8888-exec-5] c.giant.cloud.api.ElectricityStationApi  : [ElectricityStationApi#getDashboardElectricityStationData] <--- END HTTP (122-byte body)
[bff-web-data-platform, 368e435f7de29eff, 368e435f7de29eff, false] 解析:

bff-web-data-platform 称为 appname -> 应用名称

368e435f7de29eff 称为 traceId -> 为了追踪一个请求完整的流转过程,可以给每次请求分配一个唯一的 traceId,当请求调用其他服务时,通过传递这个 traceId。

368e435f7de29eff 称为 spanId -> 发生的特定操作的ID

false 称为 exportable -> 是否应将日志导出到Zipkin。

无论是使用 sleuth 或是使用 zipkin 都会在控制台上输出这样的日志信息。

借鉴博客
2.1以下版本中文文档,可以借鉴

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354