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.js、Java和Go(很快就会支持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发布版本有几个已知的限制:
Zipkin跟踪器必须要支持正确的Zipkin时间和持续时长语义; Zipkin跟踪器和Stackdriver Trace instrumentation库不能向同一条trace记录上附加span,因为它们会对服务间传播的跟踪上下文采用不同的格式。这意味着某个库捕获的trace中不能包含其他类型的库instrument服务后所形成的span,也就是说,如何服务代码混合使用了Stackdriver Trace和Zipkin的instrument功能,那么跨越这些服务所形成的跟踪信息必须要在标准的Stackdriver报告系统之外进行集成; 最初的释放版本只支持对Zipkin服务器进行写操作,Google云平台的博客上指出,如果缺乏读取功能成为了一种阻碍的话,那么开发人员可以在GitHub上提交issue或pullrequest。
Google Stackdriver Trace Zipkin收集器的代码可以通过GoogleCloudPlatform GitHub仓库进行下载。配置以及从分布式跟踪器收集trace数据的指令可以在“组合使用Stackdriver Trace与Zipkin”指南中找到。
本文转自d1net(转载)