本文介紹ARMS支持的多種調用鏈采樣模式,幫助您根據自身場景選擇合適的調用鏈采樣模式,從而以較低成本獲取想要的調用鏈數據。
對于絕大多數的分布式系統,不是每一條調用鏈都值得被可觀測平臺記錄,因為其中包含大量重復的,低關注度的信息。因此需要引入采樣技術降低整體可觀測成本,并過濾對用戶沒有幫助的噪音。
調用鏈采樣的基本原則是優先記錄您最關心、最有可能訪問的調用鏈。ARMS提供以下幾種采樣模式:
固定采樣率
固定比例采樣就是根據TraceId順序號記錄一定比例的調用鏈數據。例如,固定比例為10%,則每10條調用鏈數據記錄1條。固定比例采樣不會導致調用鏈數據本身不完整,要么保留整條鏈路數據,要么丟棄整條鏈路數據。
設置固定比例采樣的操作步驟如下:
登錄ARMS控制臺,在左側導航欄選擇 。
在應用列表頁面頂部選擇目標地域,然后單擊目標應用名稱。
說明語言列顯示圖標的應用為接入應用監控的應用,顯示-圖標的應用為接入可觀測鏈路 OpenTelemetry 版的應用。
- 在左側導航欄中單擊應用設置,并在右側頁面單擊自定義配置頁簽。
在采樣率設置區域設置采樣率。選擇采樣率模式為固定采樣率,在采樣率設置字段輸入百分比的數字部分,例如輸入10代表采樣10%。
說明修改即時生效,無需重啟應用。默認為10,調大采樣率會消耗額外的系統資源,建議保持默認值。
自適應采樣
為了更進一步的降低使用成本,提高鏈路查詢體驗,阿里云可觀測團隊推出了自適應采樣模式。與固定采樣率不同,自適應采樣通過引入多項采樣命中策略,動態決定是否對一條鏈路進行采樣,從而解決固定采樣率在小采樣率下的覆蓋度問題以及大采樣率下的成本問題。在大流量場景,以及業務流量變化比較大的場景,推薦您選擇自適應采樣模式。
自適應采樣涉及的主要命中策略包括特定接口全采樣、接口Top N采樣、小流量兜底采樣三種。
特定接口全采樣指您可以通過自定義接口名、接口前后綴,來標記需要100%采樣的接口。對于這些接口收到的請求,會觸發整條鏈路的100%采樣。由于特定接口全采樣會造成采集數據量的大幅增加,請確保只對最重要的接口開啟,或在必要的時候臨時開啟。
接口Top N采樣使用變種LFU算法實現,在單位時間內只對每個接口的有限條目請求進行采樣,其目的是為了保證數據采集規模不隨接口的實際流量而線性增長。
小流量兜底采樣是指在單位時間內,每個接口都至少保證有1次采樣。這樣可以在流量比較低的時候,對每個業務接口都確保記錄最有價值的特征信息。
目前ARMS僅支持對全采樣接口的自定義,暫時不支持對接口Top N采樣和小流量兜底采樣的細粒度調整。
設置自適應采樣的操作步驟如下:
登錄ARMS控制臺,在左側導航欄選擇 。
在應用列表頁面頂部選擇目標地域,然后單擊目標應用名稱。
說明語言列顯示圖標的應用為接入應用監控的應用,顯示-圖標的應用為接入可觀測鏈路 OpenTelemetry 版的應用。
- 在左側導航欄中單擊應用設置,并在右側頁面單擊自定義配置頁簽。
在采樣率設置區域設置采樣率。選擇采樣率模式為自適應采樣,您可以自定義需要全采樣的接口、接口前綴、接口后綴。
說明修改即時生效,無需重啟應用。自適應采樣功能僅支持2.8.3及以上版本探針。
基礎版采樣
基礎版采樣只針對開通基礎版計費的用戶可見,包含一條免費采樣策略和多條可自定義的采樣策略。
默認采樣(免費):ARMS默認免費為您賬號下所有接口的每個探針每分鐘采集一條調用鏈。
自定義采樣策略:您可以按照自身需求,配置自定義的采樣策略。每條自定義采樣策略可以按照固定比例或者固定流量采樣,并支持選擇適用于全部接口或者指定接口。
設置自定義采樣的操作步驟如下:
登錄ARMS控制臺,在左側導航欄選擇 。
在應用列表頁面頂部選擇目標地域,然后單擊目標應用名稱。
說明語言列顯示圖標的應用為接入應用監控的應用,顯示-圖標的應用為接入可觀測鏈路 OpenTelemetry 版的應用。
- 在左側導航欄中單擊應用設置,并在右側頁面單擊自定義配置頁簽。
在采樣率設置區域單擊添加客戶端采樣策略,設置以下參數后單擊保存。
設置項
說明
策略名稱
自定義采樣策略名稱。
采樣類型和采樣值
固定比例采樣:按照設置的固定比例進行調用鏈采樣。若選擇此選項,則采樣值設置為固定比例,如10%。
流量限額:若選擇此選項,采樣值需設置每個探針在設定時間范圍內采集的調用鏈條數,如5條Trace/每個探針每1秒,表示每個探針每1秒鐘采集5條調用鏈。
適用接口
設置采樣策略生效的接口范圍,可選擇每個接口或指定接口并輸入指定的接口名稱。
說明目前每個采樣策略在選擇指定接口時,僅支持輸入一個接口名。若需對多個接口進行調用鏈采樣,則需設置多個采樣策略。
自定義采樣策略示例:
針對/elastic/update接口,每分鐘采樣20個Trace。
針對所有接口,按照流量的20%采樣Trace。
錯慢采樣
錯慢采樣會在某次請求滿足以下特征時,針對該次請求相關的Span進行采樣。
本次調用報錯。調用報錯的判定條件又分兩種:
一種是針對HTTP接口,狀態碼非2xx或者3xx。
另一種是通過LocalRootSpan的埋點方法捕獲到的異常,一般是業務異常拋到了框架中的場景。
本次調用耗時超過之前相同接口調用耗時P99,需要注意,此處P99使用了分桶計算技術,可能存在一定偏差。
本次調用的內部某個方法拋出異常(4.1.x版本支持)。
需要注意,該采樣策略無法保證全鏈路的完整,命中時,僅會保存一次調用在某個應用內的若干個Span。
補充說明
為了避免大流量場景下因為鏈路采集影響業務正常運行,ARMS對探針每秒最大鏈路采集量進行了限制,默認為100。這個保護性措施對固定采樣率和自適應采樣都是生效的,您可以通過自定義配置的限流閾值修改探針每秒最大鏈路采集量。
高于默認值會消耗額外的系統資源,建議保持默認值。
相關文檔
調用鏈采集完成后,您可以基于已存儲的全量鏈路明細數據,自由組合篩選條件與聚合維度進行實時分析。更多信息,請參見調用鏈分析。