使用取樣規則搭配 X-Ray API - AWS X-Ray

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用取樣規則搭配 X-Ray API

所以此AWS X-Ray開發套件會使用 X-Ray API 取得抽樣規則、報告抽樣結果及取得配額。您可以使用這些 API 來更進一步了解抽樣規則的運作方式,或是使用 X-Ray 開發套件不支援的語言實作抽樣。

從使用 GetSamplingRules 取得所有抽樣規則開始。

$ aws xray get-sampling-rules { "SamplingRuleRecords": [ { "SamplingRule": { "RuleName": "Default", "RuleARN": "arn:aws:xray:us-east-1::sampling-rule/Default", "ResourceARN": "*", "Priority": 10000, "FixedRate": 0.01, "ReservoirSize": 0, "ServiceName": "*", "ServiceType": "*", "Host": "*", "HTTPMethod": "*", "URLPath": "*", "Version": 1, "Attributes": {} }, "CreatedAt": 0.0, "ModifiedAt": 1530558121.0 }, { "SamplingRule": { "RuleName": "base-scorekeep", "RuleARN": "arn:aws:xray:us-east-1::sampling-rule/base-scorekeep", "ResourceARN": "*", "Priority": 9000, "FixedRate": 0.1, "ReservoirSize": 2, "ServiceName": "Scorekeep", "ServiceType": "*", "Host": "*", "HTTPMethod": "*", "URLPath": "*", "Version": 1, "Attributes": {} }, "CreatedAt": 1530573954.0, "ModifiedAt": 1530920505.0 }, { "SamplingRule": { "RuleName": "polling-scorekeep", "RuleARN": "arn:aws:xray:us-east-1::sampling-rule/polling-scorekeep", "ResourceARN": "*", "Priority": 5000, "FixedRate": 0.003, "ReservoirSize": 0, "ServiceName": "Scorekeep", "ServiceType": "*", "Host": "*", "HTTPMethod": "GET", "URLPath": "/api/state/*", "Version": 1, "Attributes": {} }, "CreatedAt": 1530918163.0, "ModifiedAt": 1530918163.0 } ] }

輸出會包含預設規則和自訂規則。若您尚未建立抽樣規則,請參閱抽樣規則

依照遞增優先順序排序,針對傳入請求評估規則。當規則相符時,使用固定速率和儲槽大小來進行抽樣決策。記錄抽樣請求並忽略 (針對追蹤用途) 未抽樣請求。在完成抽樣決策後停止評估規則。

規則儲槽大小是在套用固定速率前,每秒要記錄的追蹤目標數。儲槽會累積套用到所有服務,因此您無法直接使用它。但是,若該值並非零,您便可以從儲槽每秒借用一個追蹤,直到 X-Ray 指派配額為止。在接收配額前,記錄每秒的第一個請求,然後將固定速率套用到其他請求。固定速率是介於 0 和 1.00 (100%) 間的十進位數。

以下範例會顯示對 GetSamplingTargets 發出的呼叫,其中包含在過去 10 秒間進行的抽樣決策詳細資訊。

$ aws xray get-sampling-targets --sampling-statistics-documents '[ { "RuleName": "base-scorekeep", "ClientID": "ABCDEF1234567890ABCDEF10", "Timestamp": "2018-07-07T00:20:06", "RequestCount": 110, "SampledCount": 20, "BorrowCount": 10 }, { "RuleName": "polling-scorekeep", "ClientID": "ABCDEF1234567890ABCDEF10", "Timestamp": "2018-07-07T00:20:06", "RequestCount": 10500, "SampledCount": 31, "BorrowCount": 0 } ]' { "SamplingTargetDocuments": [ { "RuleName": "base-scorekeep", "FixedRate": 0.1, "ReservoirQuota": 2, "ReservoirQuotaTTL": 1530923107.0, "Interval": 10 }, { "RuleName": "polling-scorekeep", "FixedRate": 0.003, "ReservoirQuota": 0, "ReservoirQuotaTTL": 1530923107.0, "Interval": 10 } ], "LastRuleModification": 1530920505.0, "UnprocessedStatistics": [] }

X-Ray 的回應包含要使用的配額,而非從儲槽借用。在此範例中,服務在 10 秒間從儲槽借用 10 個追蹤,並將 10% 的固定速率套用到其他 100 個請求,其結果合計為 20 個抽樣請求。配額會五分鐘內有效 (以存續期間表示),或是直到指派新的配額。X-Ray 也可以指派比預設值更長的報告間隔 (雖然在此處並未執行此作業)。

注意

您第一次進行呼叫時,來自 X-Ray 的回應可能不會包含配額。繼續從儲存借用,直到您獲得指派配額。

回應中的其他兩個欄位可能會指出輸入的問題。針對您最後一次呼叫 GetSamplingRules 檢查 LastRuleModification。若其較新,請取得規則的新複本。UnprocessedStatistics 可包含錯誤,指出規則已遭到刪除、輸入中的統計文件過舊,或是許可錯誤。