使用跟蹤應用程序AWS X-Ray - AWS 規範指引

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

使用跟蹤應用程序AWS X-Ray

通過應用程序發出的請求可能包括對本地服務器、Amazon EC2、容器或 Lambda 中運行的數據庫、應用程序和 Web 服務的調用。通過實施應用程序跟蹤,您可以快速識別使用分佈式組件和服務的應用程序中出現問題的根本原因。您可以使用AWS X-Ray以跨多個組件跟蹤應用程序請求。X-Ray 樣本和可視化請求服務圖表當它們通過應用程序組件並且每個組件都表示為一個段時。X-Ray 會生成跟蹤標識符,以便您可以在請求流經多個組件時關聯該請求,從而幫助您從端到端查看請求。您可以通過包含註釋和元數據來幫助唯一搜索和識別請求的特徵,從而進一步增強這一點。

我們建議您使用 X-Ray 配置和測量應用程序中的每個服務器或端點。X-Ray 是通過調用 X-Ray 服務在您的應用程序代碼中實現的。X-Ray 還提供AWS適用於多種語言的 SDK,包括自動將數據發送到 X-Ray 的分析客户端。X-Ray 軟件開發工具包為用於調用其他服務(例如 HTTP、MySQL、PostgreSQL 或 MongoDB)的常見庫提供修補程序。

X-Ray 提供了一個 X-Ray 守護程序,您可以在 Amazon EC2 和亞馬遜雲服務器上安裝和運行,以便將數據中繼到 X-Ray。X-Ray 為您的應用程序創建跟蹤,從運行服務請求的 X-Ray 守護程序的服務器和容器中捕獲性能數據。X-Ray 自動對您的呼叫進行調用AWS服務(例如 Amazon DynamoDB),通過修補AWS開發套件。X-Ray 還可以自動與 Lambda 功能集成。

如果您的應用程序組件調用無法配置和安裝 X-Ray 守護程序或儀器代碼的外部服務,則可以創建子段來包裝對外部服務的調用。X-Ray 相關 CloudWatch 日誌和指標與應用程序跟蹤(如果您使用適用於 JAVA 的 AWS X-Ray SDK,這意味着您可以快速分析請求的相關指標和日誌。

部署 X-Ray 常駐程式,追蹤 Amazon EC2 上的應用程式和服務

您需要在您的應用程式組件或微服務上運行 X-Ray 常駐程式。您可以使用使用者資料指令碼在預配 EC2 實例時部署 X-Ray 守護程序,或者如果您創建自己的 AMI,則可以將其包含在 AMI 構建過程中。當 EC2 實例是短暫的時候,這可能特別有用。

您應該使用狀態管理器來確保 X-Ray 守護程序一致地安裝在 EC2 實例上。適用於 Amazon EC2視窗實例,您可以使用 Systems ManagerAWS-正在執行功能外殼指令碼執行視窗腳本,下載並安裝 X-Ray 代理。對於 Linux 上的 EC2 實例,您可以使用AWS-運行外殼腳本文檔來運行下載並將代理作為服務

您可以使用 Systems ManagerAWS-執行遠程腳本以在多帳户環境中運行腳本。您必須創建可從您的所有賬户訪問的 S3 存儲桶,我們建議使用基於組織的存儲桶策略創建 S3 存儲桶如果您使用AWS Organizations。然後,您將腳本上傳到 S3 存儲桶,但確保 EC2 實例的 IAM 角色具有訪問存儲桶和腳本的權限。

您還可以將狀態管理器配置為將腳本與安裝了 X-Ray 代理的 EC2 實例相關聯。由於您的所有 EC2 實例可能不需要或使用 X-Ray,因此您可以定位與實例標籤的關聯。例如,您可以根據InstallAWSXRayDaemonWindows或者InstallAWSXRayDaemonLinux標籤。

部署 X-Ray 常駐程式,追蹤 Amazon ECS 或 Amazon EKS 上的應用程式和服務

您可以部署X-Ray 常駐程式作為基於容器的工作負載(如亞馬遜雲服務器或 Amazon EKS)的旁邊容器。然後,如果您使用亞馬遜彈性雲服務器,則應用程序容器可以通過容器鏈接連接到您的側車容器,或者如果您使用AWSvpc 網路模式

對於 Amazon EKS,您可以在應用程序的容器定義中定義 X-Ray 守護程序,然後您的應用程序可以通過您指定的容器端口上的 localhost 連接到守護進程。

將 Lambda 配置為將請求跟蹤到 X-Ray

您的應用程序可能包括對 Lambda 函數的調用。您無需安裝 Lambda X-Ray 常駐程式,因為常駐程式程式由 Lambda 完全管理,且無法由使用者設定。您可以通過使用AWS Management Console並檢查主動追蹤選項。

如需進一步檢測,您可以將 Lambda 函數與 X-Ray 開發套件組合,以記錄傳出呼叫並添加註釋或元數據。

設定適用於 X-Ray 的應用

您應該評估與應用程序編程語言一致的 X-Ray SDK,並對應用程序對其他系統發出的所有調用進行分類。查看您選擇的庫提供的客户端,並查看 SDK 是否可以自動測試應用程序請求或響應的跟蹤。確定 SDK 提供的客户端是否可用於其他下遊系統。對於應用程序調用且無法使用 X-Ray 進行測試的外部系統,應創建一個自定義子段,以在跟蹤信息中捕獲和標識它們。

在測試應用程序時,請確保創建註釋以幫助您識別和搜索請求。例如,您的應用程序可能會為客户使用標識符,例如customer id,或根據不同用户在應用程序中的角色對不同用户進行細分。

您最多可以為每條跟蹤創建 50 個註釋,但只要段文檔不超過 64 千字節,就可以創建包含一個或多個字段的元數據對象。您應有選擇地使用註釋來查找信息,並使用元數據對象提供更多上下文,以幫助在找到請求後對其進行故障排除。

設定 X-Ray 取樣規則

By自訂抽樣規則,您可以控制記錄的數據量並修改取樣行為,而無需修改或重新部署代碼。抽樣規則會告知 X-Ray 開發套件針對一組條件要記錄多少請求。默認情況下,X-Ray 開發套件會記錄第一個請求每秒和 5% 的任何額外請求。每秒一個請求是儲槽。這可確保只要服務持續提供請求,每秒都會記錄至少一個追蹤。5% 是超過儲層大小的額外請求抽樣速率。

您應查看並更新默認配置,以確定適合您的帳户的值。在開發、測試、性能測試和生產環境中,您的要求可能會有所不同。您的應用程序可能需要根據其接收的流量或其嚴重程度級別自己的採樣規則。您應該從基準開始,並定期重新評估基準是否符合您的要求。