关闭

使用zipkin做分布式链路监控

7112人阅读 评论(0) 收藏 举报
分类:

介绍

快速入门

  • 安装方式一:使用zipkin官方提供的jar启动服务
    zipkin官方提供了一个现成的使用springboot写的zipkin服务端,客户端的链路监控报告可以通过多种方式(下文会讲解具体的方式)向服务端发送报告。

    配置详解
    存储方式
    查看源码可知其有4种持久化方式,本文选择使用最熟悉的mysql持久化链路调用信息。

首先建立数据库:
默认情况下 zipkin 运行时数据保存在内存中,重启数据会丢失
数据库脚本下载 (https://github.com/openzipkin/zipkin/blob/master/zipkin-storage/mysql/src/main/resources/mysql.sql)

查看与mysql storage相关的配置

@ConfigurationProperties("zipkin.storage.mysql")
public class ZipkinMySQLStorageProperties implements Serializable { // for Spark jobs
  private static final long serialVersionUID = 0L;

  private String host = "localhost";
  private int port = 3306;
  private String username;
  private String password;
  private String db = "zipkin";
  private int maxActive = 10;
  private boolean useSsl;
    ...
}

所以,我们使用mysql作为持久化策略,启动服务端的脚本也就有了

java -server -jar zipkin-server-1.26.0-exec.jar --zipkin.storage.type=mysql --zipkin.storage.mysql.host=localhost --zipkin.storage.mysql.port=3306 --zipkin.storage.mysql.username=root --zipkin.storage.mysql.password=root --zipkin.storage.mysql.db=zipkin

项目中,我们使用第一种作为服务端的启动方式,使用mysql作为持久化方案

被监控项目配置

application.properties

spring:
  zipkin:
    #服务端地址
    base-url: http://10.19.52.11:9411
    #本项目服务名
    service:
      name: ${spring.application.name}
  sleuth:
    #监控开关
    enabled: true
    #采样率
    sampler:
      percentage: 1

springboot对zipkin的自动配置可以使得所有RequestMapping匹配到的endpoints得到监控,以及强化了restTemplate,对其加了一层拦截器,使得由他发起的http请求也同样被监控。

motan rpc调用监控

Motan通过filter的SPI扩展机制支持OpenTracing,可以支持任何实现了OpenTracing标准的trace实现。使用OpenTracing需要以下步骤。

1.引入filter-opentracing扩展

<dependency>
     <groupId>com.weibo</groupId>
     <artifactId>filter-opentracing</artifactId>
     <version>release</version>
</dependency>

2.如果第三方trace工具声明了io.opentracing.Tracer的SPI扩展,直接引入第三方trace的jar包即可。如果第三方没有声明,则转第三步。

3.自定义一个TracerFactory实现TracerFactory接口,通过getTracer()来获取不同tracer实现。设置OpenTracingContext的tracerFactory为自定义的TracerFactory即可。

项目中的具体配置:

MotanConfig.java

@Bean(name = "motanServerBasicConfig")
    public BasicServiceConfigBean baseServiceConfig(@Value("${spring.sleuth.enabled:false}") Boolean tracing
    ) {
        BasicServiceConfigBean config = new BasicServiceConfigBean();
        ...
        if(tracing){
            config.setFilter("sleuth-tracing");
        }
        ...
        return config;
    }


@Bean
SleuthTracingContext sleuthTracingContext(@Autowired(required = false)  org.springframework.cloud.sleuth.Tracer tracer){
        SleuthTracingContext context = new SleuthTracingContext();
        context.setTracerFactory(new SleuthTracerFactory() {
            @Override
            public org.springframework.cloud.sleuth.Tracer getTracer() {
                return tracer;
            }
        });

        return context;
    }

数据查询

具体的服务就不列出来了,为了演示依赖关系,service1使用restTemplate调用了service2,service2调用了service3,service4。
还有一些现成的motan调用

  • find a trace
    当应用正常启动后,可以通过 http://10.19.52.11:9411 查看管理端
    这里写图片描述
    项目已经成功被监控

  • Dependencies

motan依赖树:

这里写图片描述

http依赖树:

这里写图片描述

0
0
查看评论

zipkin

zipkinzipkin为分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪。architecture 如图,在复杂的调用链路中假设存在一条调用链路响应缓慢,如何定位其中延迟高的服务呢? 日志: 通过分析调用链路上的每个服务日志得到结果 zipkin:使用zipkin的web...
  • liaokailin
  • liaokailin
  • 2016-07-31 11:18
  • 28542

分布式系统监控系统zipkin入门

分布式系统监控系统zipkin入门
  • john1337
  • john1337
  • 2017-05-03 17:31
  • 5352

部署Zipkin分布式性能追踪日志系统的操作记录

Zipkin是Twitter的一个开源项目,是一个致力于收集Twitter所有服务的监控数据的分布式跟踪系统,它提供了收集数据,和查询数据两大接口服务。 部署Zipkin环境的操作记录: 部署Zipkin,比较麻烦的是前期环境的准备,只有先把前期环境安装好了,后面的部署就顺利多了。(部署机i...
  • konglongaa
  • konglongaa
  • 2017-02-27 11:01
  • 5634

分布式跟踪系统(一):Zipkin的背景和设计

       2010年谷歌发表了其内部使用的分布式跟踪系统Dapper的论文(http://static.googleusercontent.com/media/research.google.com/zh-CN//archive/papers/dapper...
  • manzhizhen
  • manzhizhen
  • 2016-10-13 23:58
  • 10127

Zipkin分布式任务追踪

Zipkin分布式任务追踪zipkin简介Zipkin 是一款开源的分布式实时数据追踪系统,由基于 Google Dapper 的论文设计而来,由 Twitter 公司提供开源实现,主要功能是聚集来自各个异构系统的实时监控数据,和微服务架构下的接口直接的调用链路和系统延时问题。Zipkin 提供了自...
  • weiker12
  • weiker12
  • 2016-11-13 23:11
  • 3937

使用 Zipkin 和 Brave 实现分布式系统追踪(基础篇

主题 分布式系统 MySQL 一、Zipkin 1.1、简介 Zipkin 是一款开源的分布式实时数据追踪系统(Distributed Tracking System),基于 Google Dapper ...
  • gaowenhui2008
  • gaowenhui2008
  • 2017-04-18 18:23
  • 1820

微服务之分布式跟踪系统(springboot+zipkin)

转载自:http://blog.csdn.net/qq_21387171/article/details/53787019           微服务之分布式跟踪系统(springboot+zipkin) 一、zip...
  • meiliangdeng1990
  • meiliangdeng1990
  • 2017-01-06 02:22
  • 1233

Dubbox 链路追踪(基于Brave+Zipkin的简单实现)上

很多时候,我们都能体会到分布式架构的话好处,其实一个系统不大,做分布式的成本是很高的,系统变得松耦合,这样做的好处不言而喻,说说坏处吧,A系统远程调用B系统,B系统又依赖C,D系统,当线上某个接口报错,或者超时的时候,亦或者是业务问题的时候,定位一个问题是麻烦的,因为日记不在一个系统里面,排查问题的...
  • linuu
  • linuu
  • 2017-01-12 17:15
  • 6466

分布式跟踪系统(二):Zipkin的Span模型

在《分布式跟踪系统(一):Zipkin的背景和设计》一文中,已经初步的介绍了Zipkin的设计和数据模型,本文将详细介绍Zipkin的Span模型,以及其他“另类”Span模型的设计。           这里...
  • manzhizhen
  • manzhizhen
  • 2016-12-25 00:40
  • 2315

zipkin 学习笔记

zipkin 2.2.1 学习笔记概述 参考 http://blog.csdn.net/liaokailin/article/details/52077620 https://github.com/liaokailin/zipkin http://manzhizhen.iteye.com/blog...
  • undergrowth
  • undergrowth
  • 2017-10-16 23:44
  • 332
    个人资料
    • 访问:122654次
    • 积分:1987
    • 等级:
    • 排名:千里之外
    • 原创:73篇
    • 转载:11篇
    • 译文:4篇
    • 评论:66条
    最新评论