您的位置:首页 > 其它

K8S集群部署链路追踪——Zipkin

2018-12-10 21:13 771 查看

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的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服务端与客户端的配置。

看下效果
这里就采集到了部分微服务的调用情况。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: