Zipkin是一个开源分布式的追踪系统 http://zipkin.io/,在微服务架构下,能够清晰的找出系统问题所在。它同时管理数据收集和数据查询。Zipkin的设计基于Google Dagger论文

架构

查看您的平台是否已经在instrumentation, 查看列表existing instrumentations

示例流程

以下是User Code调用资源/foo的示例http跟踪序列,讲一个span在User Code收到http响应之后异步发送给zipkin

Transport

instrumentation(装配库)发送的Span必须由装配的服务传输到Collector。有三种主要的传输类型:HTTP、Scribe和Kafka. 更多信息查看Span Receivers 。

共有四个组件构成了Zipkin:

  • collector

  • storage

  • search

  • web UI

Zipkin collector

一旦追踪数据抵达Zipkin Collector守护进程,Zipkin Collector为了查询,会对其进行校验、存储和索引。

Storage

Zipkin最初是将数据存储在Cassandra中,因为Cassandra易跨站,支持灵活的schema,并且在Twitter内部大规模使用。然而,我们将这个组件做成了可选的。在Cassandra之外,我们原生支持ElasticSearch和Mysql。

Zipkin 查询服务

一旦数据被存储索引,我们就需要一种方式提取它。查询守护进程提供了一个简单的JSON API查询和获取追踪数据。API的主要消费者就是Web UI。

Web UI

用于展示数据。Web UI提供了基于服务、时间和标记查看追踪数据的方法。注意:UI没有内置的身份认证功能

快速启动

使用docker启动zipkin


docker run -d -p 9411:9411 openzipkin/zipkin

打开浏览器访问localhost:9411

Kafka 0.10 Collector Install

kafka 0.10版本以上的方法参照一下安装方式,其他安装方式请查看[官方文档](

https://github.com/openzipkin/zipkin/tree/master/zipkin-server)

下载zipkin和kafka-collector的jar包

快速启动


$ wget -O zipkin-server-exec.jar 'https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-server&v=LATEST&c=exec'

$ wget -O zipkin-autoconfigure-collector-kafka10-module.jar 'https://search.maven.org/remote_content?g=io.zipkin.java&a=zipkin-autoconfigure-collector-kafka10&v=LATEST&c=module'

$ KAFKA_BOOTSTRAP_SERVERS=127.0.0.1:9092 java -Xms10g -Xmx10g \

-Dloader.path='zipkin-autoconfigure-collector-kafka10-module.jar,zipkin-autoconfigure-collector-kafka10-module.jar!/lib' \

-Dspring.profiles.active=kafka \

-cp zipkin-server-exec.jar \

org.springframework.boot.loader.PropertiesLauncher

当然,你可能还需要配置zipkin storage、kafka的topic及服务ip,为了节省时间,可以参照我下面的脚本


#!/bin/bash

export STORAGE_TYPE=elasticsearch

export ES_HOSTS=http://127.0.0.1:9200

export ES_MAX_REQUESTS=100

export ES_INDEX=zipkin

export ES_DATE_SEPARATOR=-

export ES_INDEX_REPLICAS=3

export ES_INDEX_SHARDS=5

export KAFKA_TOPIC=zipkin

export KAFKA_STREAMS=100

export KAFKA_MAX_MESSAGE_SIZE=10485760

export KAFKA_BOOTSTRAP_SERVERS=127.0.0.1:9092

java -Xms20g -Xmx20g \    # 注意根据你的配置修改内存大小

-Dloader.path='zipkin-autoconfigure-collector-kafka10-module.jar,zipkin-autoconfigure-collector-kafka10-module.jar!/lib' \

-Dspring.profiles.active=kafka \

-cp zipkin-server-exec.jar \

org.springframework.boot.loader.PropertiesLauncher

以上的所有配置说明,请参照参数说明

功能展示