天天看點

Envoy分布式鍊路追蹤

雖然Istio一直講服務治理和服務的可觀測性對業務代碼零侵入,但是要獲得一個品質良好的調用鍊,應用程式還是要配合做些事情,比如需要在類似HTTP頭的地方傳遞Span資訊,這樣這些Span才能被正确地連結成一個trace。是以要求應用程式必須收集和傳遞這些trace相關的頭并傳遞出去。下面以http為例來簡單介紹。

實作層面,Envoy分布式跟蹤特性的初始化工作由MainImpl::initializeTracers負責,這裡先判斷是否為HTTP協定,然後使用配置檔案中指定的跟蹤插件名,調用對應插件factory的HTTP Tracer建立函數,完成HTTP Tracer的初始化。

一、Metric支援

Metric用于對Envoy的核心名額資料進行聚合,具體由stats子系統實作,Envoy stats包括3類核心統計資料。

  • Counter(計數器)

計數器用于對單調遞增的統計項進行累加統計,比如請求總的QPS。

  • Gauge

Gauge也是一種很常見的計量,用于記錄樣本序列。和Counter相比,Gauge可以增加和減少,比如待處理隊列中的任務個數、連接配接池空閑連接配接個數等,Counter隻會增加不會減少,有一個單調變化的特征。

  • Histogram(直方圖)

Histogram用于對一定範圍内的樣本進行統計分析,最終産生各個分位對應的統計值。分位是Histogram中常見的一個概念,比如50分位耗時A和平均耗時B是兩個不同的概念。50分位耗時指50%的請求在A時間範圍内傳回;平均耗時指所有請求的平均處理時間,很多場景下分位統計比平均統計更能反映資料的分布特性。比如對于請求處理耗時,通過Histogram可以得出50分位的耗時統計、99分位的耗時統計等。

二、Log支援

繼續閱讀