Google 发布 Zipkin 与 Stackdriver Trace 的集成功能,实现分布式应用的跟踪

  • Daniel Bryant
  • 张卫滨

2017 年 1 月 18 日

话题:Google云计算DevOps语言 & 开发

Google 云平台(Google Cloud Platform)发布了一个开源的Zipkin 服务器,允许兼容 Zipkin的客户端发送跟踪信息到 Google 自己的Stackdriver Trace分布式跟踪服务中,从而实现分析的功能。Zipkin/Stackdriver Trace 集成的目标用户是某些开发人员,他们的应用和服务是使用 Stackdriver Trace 官方所不支持的语言或框架编写的,或者是某些应用的持有者,这些应用已经通过 Zipkin 实现了 instrument 功能,他们还希望访问 Stackdriver Trace 的高级分析工具。

Google 的Stackdriver能够对云平台上的应用提供监控、日志以及诊断服务。尽管任何云平台捕获到的数据都可以发送到 Stackdriver API 上,但是 Stackdriver 的功能是与Google 云平台(Google Cloud Platform,GCP)(GCP 的客户可以免费使用它)中的很多服务高度集成的。Google Stackdriver 中包含了多个工具,其中就包括Stackdriver Trace,这是一个分布式的跟踪服务,它是由最初的Google Dapper分布式跟踪系统演化而来。

将分布式(微服务)系统进行 instrument 操作之后,Stackdriver Trace 就允许开发人员跟踪系统的请求流,分析应用的延迟并隔离性能瓶颈。Stackdriver Trace 最初关注的是Google App Engine项目,但是现在支持运行在虚拟机或容器上的应用,这是通过为Node.jsJavaGo(很快就会支持 Ruby 和.Net)提供 instrumentation 库实现的,它还可以通过API来实现该功能。

另外一个流行的分布式跟踪系统是Zipkin,它最初是由 Twitter 创建的,灵感起源于 Dapper 的论文。这项成果在 2012 年开源,随后发展成为社区驱动的Open Zipkin项目。它反过来又推动了Open Tracing API的形成,这是一个由 CNCF 支持的项目。Zipkin 提供了一系列的 instrumentation 库,这些库能够捕获应用的 trace,另外还有一个后端系统用来存储 trace 并支持通过 Web 界面展现 trace 信息。目前,已经有针对 Java、.Net、Node.js、Python、Ruby 和 Go 的Zipkin 客户端,还有与各种流行 Web 框架的内置集成。根据 GCP 博客的说法,Zipkin 得到了广泛的应用,Twitter、Yelp 和 Salesforce 是该项目的主要贡献者。

Google 云平台的博客文章指出,这个新的 Stackdriver Trace Zipkin 连接器是已有Zipkin 后端的替代方案,它会继续使用相同的兼容 Zipkin 的跟踪器,这样的话,就没有必要再去配置、管理或维护 Zipkin 后端了。另外,新的收集器能够与使用 Zipkin 跟踪器实现 instrument 功能的服务协同运行。

目前的 Stackdriver-Zipkin v0.2.0 发布版本有几个已知的限制:

  1. Zipkin 跟踪器必须要支持正确的 Zipkin 时间和持续时长语义
  2. Zipkin 跟踪器和 Stackdriver Trace instrumentation 库不能向同一条 trace 记录上附加 span,因为它们会对服务间传播的跟踪上下文采用不同的格式。这意味着某个库捕获的 trace 中不能包含其他类型的库 instrument 服务后所形成的 span,也就是说,如何服务代码混合使用了 Stackdriver Trace 和 Zipkin 的 instrument 功能,那么跨越这些服务所形成的跟踪信息必须要在标准的 Stackdriver 报告系统之外进行集成;
  3. 最初的释放版本只支持对 Zipkin 服务器进行写操作,Google 云平台的博客上指出,如果缺乏读取功能成为了一种阻碍的话,那么开发人员可以在 GitHub 上提交 issue 或 pullrequest。

Google Stackdriver Trace Zipkin 收集器的代码可以通过 GoogleCloudPlatform GitHub 仓库进行下载。配置以及从分布式跟踪器收集 trace 数据的指令可以在“组合使用 Stackdriver Trace 与 Zipkin”指南中找到。

查看英文原文Google Release Zipkin Integration with Stackdriver Trace for Tracing Distributed Applications

Google云计算DevOps语言 & 开发