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/

        
 

     

spring cloud链路追踪组件sleuth和zipkin的更多相关文章

  1. Spring Cloud 整合分布式链路追踪系统Sleuth和ZipKin实战,分析系统瓶颈

    导读 微服务架构中,是否遇到过这种情况,服务间调用链过长,导致性能迟迟上不去,不知道哪里出问题了,巴拉巴拉....,回归正题,今天我们使用SpringCloud组件,来分析一下微服务架构中系统调用的瓶 ...

  2. 分布式链路追踪系统Sleuth和ZipKin

    1.微服务下的链路追踪讲解和重要性 简介:讲解什么是分布式链路追踪系统,及使用好处 进行日志埋点,各微服务追踪. 2.SpringCloud的链路追踪组件Sleuth 1.官方文档 http://cl ...

  3. Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十二):链路追踪(Sleuth、Zipkin)

    在线演示 演示地址:http://139.196.87.48:9002/kitty 用户名:admin 密码:admin 技术背景 在微服务架构中,随着业务发展,系统拆分导致系统调用链路愈发复杂,一个 ...

  4. Spring Boot + Spring Cloud 构建微服务系统(八):分布式链路追踪(Sleuth、Zipkin)

    技术背景 在微服务架构中,随着业务发展,系统拆分导致系统调用链路愈发复杂,一个看似简单的前端请求可能最终需要调用很多次后端服务才能完成,那么当整个请求出现问题时,我们很难得知到底是哪个服务出了问题导致 ...

  5. SpringCloud(七)之SpringCloud的链路追踪组件Sleuth实战,以及 zipkin 的部署和使用

    一.前言 Spring Cloud Sleuth 主要功能就是在分布式系统中提供追踪解决方案 ,并且兼容了zipkin,提供了REST API接口来辅助我们查询跟踪数据以实现对分布式系统的监控程序 . ...

  6. 分布式链路追踪(Sleuth、Zipkin)

    技术背景 在微服务架构中,随着业务发展,系统拆分导致系统调用链路愈发复杂,一个看似简单的前端请求可能最终需要调用很多次后端服务才能完成,那么当整个请求出现问题时,我们很难得知到底是哪个服务出了问题导致 ...

  7. spring cloud 2.x版本 Sleuth+Zipkin分布式链路追踪

    前言 本文采用Spring cloud本文为2.1.8RELEASE,version=Greenwich.SR3 本文基于前两篇文章eureka-server.eureka-client.eureka ...

  8. springCloud的使用08-----服务链路追踪(sleuth+zipkin)

    sleuth主要功能是在分布式系统中提供追踪解决方案,并且兼容支持了zipkin(提供了链路追踪的可视化功能) zipkin原理:在服务调用的请求和响应中加入ID,表明上下游请求的关系. 利用这些信息 ...

  9. Spring cloud的各类组件

    Spring cloud 的各类组件 1.注册中心 eureka 2.ribbon 3.feign 4.hystirx 断路器 5.高速缓存器 redis 6.断路器Dashboard监控仪表盘

随机推荐

  1. Selenium结合BeautifulSoup4编写简单爬虫

    在学会了抓包,接口请求(如requests库)和Selenium的一些操作方法后,基本上就可以编写爬虫,爬取绝大多数网站的内容. 在爬虫领域,Selenium永远是最后一道防线.从本质上来说,访问网页 ...

  2. Spring框架AOP

    aop技术是面向切面编程思想,作为OOP的延续思想添加到企业开发中,用于弥补OOP开发过程中的缺陷而提出的编程思想.AOP底层也是面向对象:只不过面向的不是普通的Object对象,而是特殊的AOP对象 ...

  3. 能不能支持在线查看word,excel这样的文件?还有拖拽上传功能?

    https://forum.enhancer.io/topic/5adea0cdce69735af635fcd8 方法1. 用一个自定义窗口, 自定义窗口里放一个iframe 假设你的 word 的地 ...

  4. 网络文件共享服务—NFS服务

    NFS服务 NFS:Network File System 网络文件系统,基于内核的文件系统: Sun公司开发,通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件,基于RPC(Rem ...

  5. Javascript中数组查重的方法总结大全

    数组查重:简单点说,就是找出数组中重复的元素然后去除,最后得到一个没有重复元素的数组. // 方法一思路:     1.构建一个新的数组,用于存放结果.       2.for循环中每次从数组取出一个 ...

  6. 第11组 Beta冲刺(1/5)

    第11组 Beta冲刺(1/5)   队名 不知道叫什么团队 组长博客 https://www.cnblogs.com/xxylac/p/11913626.html 作业博客 https://www. ...

  7. Get Raster Properties获得栅格的信息

    Summary Returns the properties of a raster dataset. Usage The property returned will be displayed in ...

  8. ArcGIS超级工具SPTOOLS-按属性裁剪,矢量数据批量裁剪,矢量数据批量合库

    1.1  按属性裁剪 操作视频: https://weibo.com/tv/v/HwaZRoosq?fid=1034:4376687438183117 按属性裁剪:可以图形表,也可以是非图形表,字段值 ...

  9. Object.keys() 遍历对象

    Object.keys()方法的运用与数组遍历 Object.keys()用于获得由对象属性名组成的数组,可与数组遍历相结合使用,用起来效果杠杠滴.数组遍历可以用for()或forEach()来实现, ...

  10. Objective-C中的一些方法命名“潜规则”

    在基于Apple Xcode的Objective-C中,有一些方法命名潜规则,比如就property而言,假定你定义了如下property: @interface MyObject @property ...