spring cloud鏈路追蹤組件sleuth和zipkin


spring cloud鏈路追蹤組件sleuth

   

主要作用就是日志埋點

操作方法

1、增加依賴

            <dependency>

     <groupId>org.springframework.cloud</groupId>

     <artifactId>spring-cloud-starter-sleuth</artifactId>

         </dependency>

              

2、訪問http://192.168.136.128:8651/api/v1/orderfeignhystrix/save?userId=2&productId=2 可以看到日志

   

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)、第三個值,852ef4cfcdecabf3、spanid 基本的工作單元,獲取元數據,如發送一個http

            4)、第四個值:false,是否要將該信息輸出到zipkin服務中來收集和展示。

3、增加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都會不一樣。

   

4、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界面

          

5、知識拓展 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

6、sleuth收集跟蹤信息通過http請求發送給zipkin server,zipkinserver進行跟蹤信息的存儲以及提供Rest API即可,Zipkin UI調用其API接口進行數據展示

        默認存儲是內存,可也用mysql、或者elasticsearch等存儲

7、加入依賴(product 和order中)

        <dependency>

         <groupId>org.springframework.cloud</groupId>

         <artifactId>spring-cloud-starter-zipkin</artifactId>

        </dependency>

   

        里面包含 spring-cloud-starter-sleuth、spring-cloud-sleuth-zipkin

8、配置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

10、重啟多次后正常 ,直至sleuth輸出日志中第四個字段為true,即可展示

        http://192.168.136.129:9411/zipkin/

          

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM