spring cloud鏈路追蹤組件sleuth mysql
主要做用就是日誌埋點 web
操做方法 spring
一、增長依賴 sql
<dependency> docker
<groupId>org.springframework.cloud</groupId> api
<artifactId>spring-cloud-starter-sleuth</artifactId> 服務器
</dependency> app
二、訪問http://192.168.136.128:8651/api/v1/orderfeignhystrix/save?userId=2&productId=2 能夠看到日誌 elasticsearch
2019-03-19 20:48:09.496 INFO [orderfeignhystrix-service,e1a008f418104d9f,38cbc892167e3427,false] 4084 --- [ODUCT-SERVICE-1] c.n.u.concurrent.ShutdownEnabledTimer : Shutdown hook installed for: NFLoadBalancer-PingTimer-PRODUCT-SERVICE 分佈式
[orderfeignhystrix-service,e1a008f418104d9f,38cbc892167e3427,false]
日誌內容爲
1)、第一個值,spring.application.name的值
2)、第二個值,96f95a0dd81fe3ab ,sleuth生成的一個ID,叫Trace ID,用來標識一條請求鏈路,一條請求鏈路中包含一個Trace ID,多個Span ID
3)、第三個值,852ef4cfcdecabf三、spanid 基本的工做單元,獲取元數據,如發送一個http
4)、第四個值:false,是否要將該信息輸出到zipkin服務中來收集和展現。
三、增長logger打點
在商品和訂單實現中均增長
ProductServiceImpl和ProductOrderFeignHystrixServiceImpl實現類
logger定義,引入org.slf4j.Logger;
定義
private final Logger logger = LoggerFactory.getLogger(getClass());
並分別在訂單和商品中增長埋點:
logger.info("save");
logger.info("findById");
OpenTracing 已進入 CNCF,正在爲全球的分佈式追蹤,提供統一的概念和數據標準。
經過提供平臺無關、廠商無關的 API,使得開發人員可以方便的添加(或更換)追蹤系統的實現。
商品埋點日誌
2019-03-19 21:08:26.581 INFO [product-service,23fccb4a5f0b31ff,b829bfe52814d0b3,false] 4880 --- [nio-8765-exec-6] l.x.p.service.impl.ProductServiceImpl : findById
訂單埋點日誌:
2019-03-19 21:08:26.587 INFO [orderfeignhystrix-service,23fccb4a5f0b31ff,e4d3e5c6103cc13e,false] 2472 --- [rixController-2] .s.i.ProductOrderFeignHystrixServiceImpl : save
同一個調用(trace_id)23fccb4a5f0b31ff使用了兩個不一樣的服務b829bfe52814d0b3(商品服務)和e4d3e5c6103cc13e(訂單服務)
每次從新調用的trace id和span Id都會不同。
四、Zipkin可視化鏈路追蹤系統部署
1)、zipkin.io爲官網,由collector 日誌蒐集器/Storage 存儲/Restful API API接口/Web UI web頁面
2)、介紹:大規模分佈式系統的APM工具(Application Performance Management),基於Google Dapper的基礎實現,和sleuth結合能夠提供可視化web界面分析調用鏈路耗時狀況
3)、啓動zipkin
a、docker啓動:docker run -d -p 9411:9411 openzipkin/zipkin
b、訪問zipkin :http://192.168.136.129:9411/ 能夠打開一個zipkin界面
五、知識拓展 openTracing
OpenTracing 已進入 CNCF,正在爲全球的分佈式追蹤,提供統一的概念和數據標準。
經過提供平臺無關、廠商無關的 API,使得開發人員可以方便的添加(或更換)追蹤系統的實現。
推薦閱讀:
http://blog.daocloud.io/cncf-3/
https://www.zhihu.com/question/27994350
https://yq.aliyun.com/articles/514488?utm_content=m_43347
六、sleuth收集跟蹤信息經過http請求發送給zipkin server,zipkinserver進行跟蹤信息的存儲以及提供Rest API便可,Zipkin UI調用其API接口進行數據展現
默認存儲是內存,可也用mysql、或者elasticsearch等存儲
七、加入依賴(product 和order中)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
裏面包含 spring-cloud-starter-sleuth、spring-cloud-sleuth-zipkin
八、配置yml中增長zipkin服務器配置(每一個服務中增長的配置,包括zuul服務)
zipkin:
base-url: http://192.168.136.129:9411
配置sleuth採樣百分比
sleuth:
sampler:
probability: 1
9.重啓docker
docker ps
docker stop 70b31fb1e3f2
docker start 70b31fb1e3f2
十、重啓屢次後正常 ,直至sleuth輸出日誌中第四個字段爲true,便可展現
http://192.168.136.129:9411/zipkin/