K8S集群部署链路追踪——Zipkin
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服务端与客户端的配置。
看下效果
这里就采集到了部分微服务的调用情况。
- Spring Boot + Spring Cloud 构建微服务系统(八):分布式链路追踪(Sleuth、Zipkin)
- 使用kubeadm部署k8s集群04-配置kubelet访问kube-apiserver
- 使用Helm 在容器服务k8s集群一键部署wordpress
- Ubuntu 14.04主机上部署k8s集群
- K8S集群管理docker部署
- 使用kubeadm部署k8s集群06-扩容kube-controller-manager到3节点
- 使用kubeadm部署k8s集群00-缓存gcr.io镜像
- k8s 集群部署springcloud 多应用
- 微服务架构的链路追踪和故障快速排查zipkin(微服务治理)
- 【实践记录】体验Rancher2.0部署K8s集群
- Spring Boot + Spring Cloud 实现权限管理系统 后端篇(二十二):链路追踪(Sleuth、Zipkin)
- 使用kubeadm部署k8s集群07-扩容kube-scheduler到3节点
- 使用Helm 在容器服务k8s集群一键部署wordpress
- 使用kubeadm部署k8s集群00-缓存rpm包
- Net和Java基于zipkin的全链路追踪
- dubbo分布式系统链路追踪_zipkin
- k8s集群部署springcloud 单应用
- Kubernetes1.91(K8s)安装部署过程(三)--创建高可用etcd集群
- 基于zipkin和brave完成对dubbo的链路追踪
- Centos7 部署k8s集群