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”指南中找到。
查看英文原文: Google Release Zipkin Integration with Stackdriver Trace for Tracing Distributed