zipkin简介

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

Zipkin 提供了自己的UI,应用将自己的监控数据报告给zipkin,由Zipkin 汇集并提供关联图展示,Zipkin可以追踪请求调用链路。Zipkin 以 Trace 的结构表示一次请求的追踪,又把每个Trace拆分为若干个有依赖关系的 Span,在微服务架构中,一次用户的请求可能会被后台的若干个服务处理,这完整的一次用户请求可以一条调用链路Trace,每个调用处理请求的服务可以理解为一个Span(如API服务),这个服务也可能继续调用其他的服务,因此形成一个Span的树形结构,以体现服务间的调用关系。

Zipkin 的用户界面除了可以查看 Span 的依赖关系之外,还以瀑布图的形式显示了每个 Span 的耗时情况,可以一目了然的看到各个服务的性能状况。打开每个 Span,还有更详细的数据以键值对的形式呈现,而且这些数据可以在装备应用的时候自行添加。

Spring Cloud Sleuth是对Zipkin的一个封装,对于Span、Trace等信息的生成、接入HTTP Request,以及向Zipkin Server发送采集信息等全部自动完成。

下图是zipkin的架构图
在这里插入图片描述

如何在k8s集群中部署 Zipkin服务端

创建服务,zipkin-server.yaml文件如下

---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: zipkin-server
  namespace: test
spec:
  replicas: 1
  template:
   metadata:
    labels:
     app: zipkin-server
   spec:
    containers:
     - name: zipkin-server
       image: openzipkin/zipkin
       imagePullPolicy: IfNotPresent

---
apiVersion: v1
kind: Service
metadata:
  name: zipkin-server
  namespace: test
spec:
  type: NodePort
  ports:
   - port: 80
     targetPort: 9411
     nodePort: 30095
  selector:
    app: zipkin-server

部署服务kubectl apply -f zipkin-server.yaml

镜像为官方提供的openzipkin/zipkin,镜像内部封装的端口号为9411,我们这里用NodePort方式将其暴露出来,端口号为30095方便查看UI

部署完成后,访问NodeIp:30095
zipkin-server ui

如何采集微服务调用链

需要在微服务里引入zipkin的jar包

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
            <version>2.0.0.RELEASE</version>
</dependency>

微服务的配置

spring:
  zipkin:
    # zipkin服务端地址
    base-url: http://zipkin-server
  sleuth:
    sampler:
      # 采集频率 1.0表示100%采集
      percentage: 1.0

生产环境采集频率建议设置为0.1,不然数据会很庞大。

以上就完成了zipkin服务端与客户端的配置。

看下效果
在这里插入图片描述这里就采集到了部分微服务的调用情况。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐