全部產品
Search
文件中心

Application Real-Time Monitoring Service:調用鏈取樣模式選擇(3.2.8及以上探針版本)

更新時間:Nov 05, 2024

本文介紹ARMS支援的多種調用鏈取樣模式,協助您根據自身情境選擇合適的調用鏈取樣模式,從而以較低成本擷取想要的調用鏈資料。

名詞介紹

  • Span:一次請求的一個具體操作,比如遠程調用入口或者內部方法調用。

  • RootSpan:一條Trace鏈路中的第一個Span。

  • LocalRootSpan:一條Trace鏈路在單個應用內的Trace片段的第一個Span。

  • SpanContext:一次請求追蹤的上下文,用於關聯該次請求下的具體操作。

  • 頭採樣:僅會在RootSpan處執行的採樣策略,一般情況下鏈路是完整的。

  • 非頭採樣:在頭採樣策略未命中的情況下。鏈路任意一個LocalRootSpan處均可能觸發執行的採樣策略,一般情況下無法保證鏈路完整。

採樣策略和採樣標記介紹

ARMS為了命中更多有價值的Trace資料,提供了多種採樣策略,其中包含兩個頭採樣策略和三個非頭採樣策略。

採樣標記

用於在使用EagleEye協議進行跨進程Trace上下文傳遞時記錄是否採樣,對應Header的Key為EagleEye-Sampled,對應的Value取值如下:

  • s0:不採樣

  • s1:採樣

用於在執行採樣並命中採樣的LocalRootSpan處記錄採樣原因,會以Attribute的形式儲存在Span中,Key為sample.reason,Value取值如下:

  • s2:小流量採樣

  • s3:自訂採樣

  • s4:固定比例採樣

  • s5:預留

  • s6:自適應採樣

  • s7:預留

  • s8:基礎版採樣

  • s9:錯採樣

  • s10:慢採樣

  • s11:異常採樣

頭採樣策略

ARMS目前支援兩種頭採樣策略,分別是固定比例採樣和自適應採樣。固定比例採樣是Tracing領域最常見的頭採樣策略,自適應採樣是ARMS自研的一種計費友好的頭採樣策略。

固定比例採樣

現有的預設採樣會在請求入口處根據使用者配置的百分比採樣鏈路。執行採樣策略並命中固定比例採樣的Span會攜帶一個Key為sample.reason,Value為s4的Attribute。image

設定固定比例採樣的操作步驟如下:

  1. 登入ARMS控制台,在左側導覽列選擇應用監控 > 應用列表

  2. 應用列表頁面頂部選擇目標地區,然後單擊目標應用程式名稱。

    說明

    語言列的表徵圖含義如下:

    Java表徵圖:接入應用監控的Java應用。

    image:接入應用監控的Golang應用。

    image:接入應用監控的Python應用。

    -:接入Managed Service for OpenTelemetry的應用。

  3. 在上方導覽列選擇應用配置 > 自訂配置

  4. 採樣設定地區選取項目採樣策略固定採樣率,在採樣率百分比地區輸入採樣率百分比的數字部分,例如輸入10代表採樣10%。

    說明

    修改即時生效,無需重啟應用。預設為10,調大採樣率會消耗額外的系統資源,建議保持預設值。

  5. 單擊儲存

自適應採樣

由於實際情境下應用不同業務的流量可能差距很大,且讀介面流量往往遠大於寫介面流量。但是讀介面的Trace資料價值一般低於寫介面。為了避免固定比例採樣命中過多大流量低價值Trace資料,ARMS提供了自適應採樣策略。該策略會按照LFU的原則選取當前調用量Top 1000的介面,每個介面的採樣彼此隔離,每秒採樣10條,對於Top 1000以外的介面被統一看作一個Other介面,共用一秒10條Trace的Quota。執行採樣策略並命中採樣的Span會攜帶一個Key為sample.reason,Value為s6的Attribute。image

設定自適應採樣的操作步驟如下:

  1. 登入ARMS控制台,在左側導覽列選擇應用監控 > 應用列表

  2. 應用列表頁面頂部選擇目標地區,然後單擊目標應用程式名稱。

    說明

    語言列的表徵圖含義如下:

    Java表徵圖:接入應用監控的Java應用。

    image:接入應用監控的Golang應用。

    image:接入應用監控的Python應用。

    -:接入Managed Service for OpenTelemetry的應用。

  3. 在上方導覽列選擇應用配置 > 自訂配置

  4. 採樣設定地區選取項目採樣策略自適應採樣

    說明

    修改即時生效,無需重啟應用。

  5. 單擊儲存

非頭採樣策略

依靠頭採樣策略難以保證一些符合指定特徵的Span資料的採樣,而這種資料往往是使用者關心的。例如有錯慢異常的Span,某些調用量極低的Span。使用者自訂的Span等。但是這些策略命中的採樣因為可能發生在鏈路任何位置,無法保證鏈路完整。

小流量採樣

無需使用者配置,自動保證每一個介面每一分鐘至少有一條Trace被採樣。執行採樣策略並命中採樣的Span會攜帶一個Key為sample.reason,Value為s2的Attribute。

image

錯慢異常採樣

重要

使用錯慢異常採樣需確認自訂配置頁面的調用鏈壓縮功能已開啟,該功能預設開啟。

當一次介面的調用滿足下述條件時,該次調用對應的Trace會被採樣。

  • 介面報錯:HTTP類介面響應碼非200,其他介面被埋點的方法拋出異常。

  • 介面內部執行拋出異常:介面內部執行過程中出現異常,但是該異常未拋出到架構的入口埋點。

  • 介面耗時超過該介面耗時的P99:該條件需要在自訂配置頁面開啟分位元統計功能。

    說明

    如果沒有開啟分位元統計,則大於應用設定的請求閾值的Trace會被採樣。

執行採樣策略並命中採樣的Span會攜帶一個Key為sample.reason,Value為s9s11s10的Attribute。具體取值分別對應上面的三個條件。

image.png

自訂採樣

當上述採樣策略均無法保證使用者需要的Trace被採樣時,使用者可自訂需要被100%採樣的介面名、介面首碼、介面尾碼等。執行採樣策略並命中採樣的Span會攜帶一個Key為sample.reason,Value為s3的Attribute。

image.png

設定自訂採樣的操作步驟如下:

  1. 登入ARMS控制台,在左側導覽列選擇應用監控 > 應用列表

  2. 應用列表頁面頂部選擇目標地區,然後單擊目標應用程式名稱。

    說明

    語言列的表徵圖含義如下:

    Java表徵圖:接入應用監控的Java應用。

    image:接入應用監控的Golang應用。

    image:接入應用監控的Python應用。

    -:接入Managed Service for OpenTelemetry的應用。

  3. 在上方導覽列選擇應用配置 > 自訂配置

  4. 採樣設定地區自訂需要全採樣的介面、介面首碼、介面尾碼。

    說明

    修改即時生效,無需重啟應用。

  5. 單擊儲存。

採樣策略工作原理

以A>B>C鏈路為例,一次實際的業務調用產生的Span最後是否上報是由上述的採樣策略共同決定的,具體的決策流程如下圖所示,該決策流程會在請求到達A、B、C處均執行一次,但是根據當前是LocalRootSpan還是RootSpan,某些節點會跳過執行。

流程圖中不同顏色的含義如下:

  • 紫色:標準的頭採樣,只會在鏈路的rootSpan處觸發。該策略只會在A處觸發。

  • 藍色:只要頭採樣未命中,可以在鏈路的任何節點觸發。例如A通過採樣策略決定不採樣,請求到B之後,B會根據自己的自訂採樣和小流量採樣策略重新計算一次是否採樣,如果採樣,會將採樣標傳遞給C。該策略會在A、B、C處觸發。

  • 綠色:只要當前的採樣結果不採樣,可以在鏈路的任何節點觸發,但是不影響之後鏈路,例如A通過採樣策略決定不採樣,請求到B之後,B會根據錯慢採樣策略決定是否採樣,如果採樣,不會把採樣標傳遞給C。該策略會在A、B、C處觸發。

相關文檔

調用鏈採集完成後,您可以基於已儲存的全量鏈路詳細資料,自由組合篩選條件與彙總維度進行即時分析。更多資訊,請參見調用鏈分析