搭配使用 AWS Lambda 與 AWS X-Ray - AWS Lambda

搭配使用 AWS Lambda 與 AWS X-Ray

您可以使用 AWS X-Ray 來視覺化應用程式的元件、識別效能瓶頸,以及疑難排解導致錯誤的請求。您的 Lambda 函數會將追蹤資料傳送至 X-Ray,而且 X-Ray 會處理資料,以產生服務映射和可搜尋的追蹤摘要。

如果您已在叫用函數的服務中啟用 X-Ray 追蹤,則 Lambda 會自動將追蹤傳送至 X-Ray。上游服務 (例如 Amazon API Gateway) 或在 Amazon EC2 上託管並利用 X-Ray 開發套件進行檢測的應用程式會取樣傳入要求,並新增追蹤標頭,告知 Lambda 是否傳送追蹤。

若要使用控制台在 Lambda 函數上切換主動追蹤,請按照下列步驟操作:

開啟主動追蹤

  1. 開啟 Lambda 主控台中的 Functions (函數) 頁面

  2. 選擇一個函數。

  3. 選擇 Configuration (組態),然後選擇 Monitoring and operations tools (監控和操作工具)。

  4. 選擇 Edit (編輯)。

  5. X-Ray 下,打開 Active tracing (主動追蹤)。

  6. 選擇 Save (儲存)。

定價

作為 AWS 免費方案的一部分,您可以每月免費使用 X-Ray 追蹤,但有一定限制。達到閾值後,X-Ray 會收取追蹤儲存及擷取的費用。如需詳細資訊,請參閱 AWS X-Ray 定價

您的函數需要將追蹤資料上傳至 X-Ray 的許可。當您在 Lambda 主控台中啟用追蹤時,Lambda 會將必要的許可新增至函數的執行角色。否則,請將 AWSXRayDaemonWriteAccess 政策新增至執行角色。

X-Ray 無法追蹤應用程式的所有請求。X-Ray 會套用取樣演算法以確保追蹤的效率,同時仍提供所有請求的代表範本。取樣率為每秒 1 次請求和 5% 的額外請求。

注意

您無法針對函數設定 X-Ray 取樣率。

在 X-Ray 中,追蹤會記錄一或多個服務所處理之要求的相關資訊。服務記錄包含子區段層的區段。Lambda 會記錄處理叫用要求的 Lambda 服務的區段,以及一個用於函數所完成的工作的區段。函數段帶有子區段為 InitializationInvocationOverhead。如需詳細資訊,請參閱 Lambda 執行環境生命週期

Initialization 子區段代表 Lambda 執行環境生命週期的初始化階段。在此階段過程中,Lambda 會使用您已設定的資源建立或解除凍結執行環境,下載函數程式碼和所有層,初始化擴充功能,初始化執行時間,以及執行函數的初始化程式碼。

Invocation 子區段表示叫用階段,其中 Lambda 叫用函數處理常式。這從執行時間和延伸註冊開始,並在執行時間準備傳送響應時結束。

Overhead 子區段表示當執行時間傳送響應和下一次叫用信號之間的時間發生的階段。在此期間,執行時間會完成與叫用相關的所有工作,並準備凍結沙盒。

注意

如果您的 Lambda 函數使用佈建並行,X-Ray 追蹤可能會顯示持續時間很長的函數初始化。

佈建並行事先初始化函數執行個體,以減少叫用時的延遲。隨著時間經過,佈建並行會透過建立新執行個體來取代舊執行個體,重新整理這些執行個體。對於具有穩定流量的工作負載,新執行個體會在第一次叫用之前,已經過很好的初始化。此時間間隔會在 X-Ray 追蹤中記錄為初始化持續時間。

重要

在 Lambda 中,您可以使用 X-Ray 開發套件來擴充 Invocation 子區段與下游呼叫、註釋和中繼資料的其他子區段。您無法直接存取函數區段,或在處理常式叫用範圍之外記錄完成的工作。

如需在 Lambda 追蹤的語言特定簡介,請參閱下列主題:

如需支援主動檢測之服務的完整清單,請參閱 AWS X-Ray 開發人員指南中的支援的 AWS 服務

執行角色許可

Lambda 需要下列許可才能傳送追蹤資料到 X-Ray。新增許可到您的函數的執行角色

這些許可包含在 AWSXRayDaemonWriteAccess 受管政策中。

AWS X-Ray 常駐程式。

X-Ray 開發套件不是直接將追蹤資料傳送至 X-Ray API,而是使用協助程序。AWS X-Ray 常駐程式是在 Lambda 環境中執行的應用程式,會偵聽包含區段和子區段的 UDP 流量。它會緩衝傳入的資料並分批寫入 X-Ray,減少追蹤叫用所需的處理和記憶體負荷。

Lambda 執行時間允許常駐程式最多達 3% 的函數設定記憶體或 16 MB (以較大者為準)。如果您的函數在叫用過程中耗盡內存,則執行時間會首先終止常駐程式以釋放內存。

常駐程式程序由 Lambda 完全管理,且無法由使用者設定。函數叫用所產生的所有區段都會記錄在與 Lambda 函數相同的帳戶中。無法將常駐程式設定為將它們重新導向至任何其他帳戶。

如需詳細資訊,請參閱《 X-Ray 開發人員指南》中的 X-Ray 常駐程式

透過 Lambda API 啟用主動追蹤

若要使用 AWS CLI 或 AWS 開發套件管理追蹤組態,請使用下列 API 操作:

下列範例 AWS CLI 命令啟用對名稱為 my-function 之函數的主動追蹤。

aws lambda update-function-configuration --function-name my-function \ --tracing-config Mode=Active

追蹤模式是您發布函數版本時版本特定組態的一部分。您無法變更已發佈版本上的追蹤模式。

搭配 AWS CloudFormation 啟用主動追蹤

若要在 AWS CloudFormation 範本中啟用對 AWS::Lambda::Function 資源的追蹤,請使用 TracingConfig 屬性。

範例 function-inline.yml - 追蹤組態

Resources: function: Type: AWS::Lambda::Function Properties: TracingConfig: Mode: Active ...

對於 AWS Serverless Application Model (AWS SAM) AWS::Serverless::Function 資源,請使用 Tracing 屬性。

範例 template.yml - 追蹤組態

Resources: function: Type: AWS::Serverless::Function Properties: Tracing: Active ...