跟踪 Step Functions 數請求數據 AWS X-Ray - AWS Step Functions

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

跟踪 Step Functions 數請求數據 AWS X-Ray

您可以使用 AWS X-Ray以視覺化方式呈現狀態機器的元件、識別效能瓶頸,以及疑難排解導致錯誤的要求。您的狀態機會將追蹤資料傳送至 X-Ray,X-Ray 會處理資料以產生服務對應和可搜尋的追蹤摘要。

在為狀態機啟用 X-Ray 後,您可以在 Step Functions 中執行時跟踪請求 AWS 可使用 X-Ray 的區域。這為您提供了整個 Step Functions 請求的詳細概述。即使追蹤 ID 未由上游服務傳遞,Step Functions 也會將追蹤傳送至 X-Ray 以執行狀態機器。您可以使用 X-Ray 服務對應來檢視要求的延遲時間,包括任何 AWS 與 X-Ray 集成的服務。您也可以設定取樣規則,根據您指定的準則告知 X-Ray 要記錄哪些請求,以及採樣率。

當您的狀態機器未啟用 X-Ray,且上游服務未傳遞追蹤 ID 時,Step Functions 不會將追蹤傳送至 X-Ray 以執行狀態機器。但是,如果追蹤 ID 是由上游服務傳遞的,Step Functions 就會將追蹤傳送至 X-Ray 以執行狀態機器。

您可以使用... AWS X-Ray 在支援兩者的區域中使用 Step Functions。請參閱步驟函數X-Ray 端點和配額頁面,以取得有關 X-Ray 和 Step Functions 區域支援的資訊。

X-Ray 和 Step Functions 合併配額

您可以將資料新增至追蹤最多七天,並查詢追蹤資料可追溯至三十天,也就是 X-Ray 儲存追蹤資料的時間長度。您的痕跡將受到 X-Ray 配額的限制。除了其他配額外,X-Ray 還為 Step Functions 狀態機提供 100KB 的最小保證跟踪大小。如果將超過 100 KB 的追蹤資料提供給 X-Ray,這可能會導致軌跡凍結。如需其他 X-Ray 配額的詳細資訊,請參閱 X-Ray 端點和配額頁面的服務配額一節。

重要

Step Functions 不支援由「分散式地圖」狀態開始的子工作流程執行的 X-Ray 追蹤,因為很容易超過此類執行的「追蹤」文件大小限制

設置和配置

建立狀態機時啟用 X-Ray 追蹤

您可以在建立新狀態機時啟用 X-Ray 追蹤,方法是選取 [指定詳細資訊] 頁面上的啟用 X-Ray 追蹤

  1. 開啟 Step Functions 主控台,然後選擇建立狀態機器

  2. [選擇編寫方法] 頁面上,選擇適當的選項來建立您的狀態機器。如果選擇「執行範例專案」,則無法在建立狀態機期間啟用 X-Ray 追蹤,並且在建立狀態機之後,您將需要啟用 X-Ray 追蹤。若要取得有關在現有狀態機中啟用 X-Ray 的更多資訊,請參閱在現有狀態機中啟用 X-Ray

    選擇 Next (下一步)

  3. 在 [指定詳細資料] 頁面上,設定您的狀態機器。

  4. 選擇「啟動 X-Ray 追蹤」。

    您的 Step Functions 狀態機現在將向 X-Ray 發送跟踪以執行狀態機。

    注意

    如果您選擇使用現有IAM角色,則應確保允許 X-Ray 寫入。如需有關所需權限的詳細資訊,請參閱下列主題。

IAM策略使用 AWS X-Ray 在 Step Functions

若要啟用 X-Ray 追蹤,您需要具有適當權限的IAM原則來允許追蹤。如果您的狀態機使用其他整合式服務,您可能需要其他IAM原則。請參閱IAM特定服務整合的政策。

如果您為現有狀態機器啟用 X-Ray 追蹤,您必須確保新增具有足夠權限的原則才能啟用 X-Ray 追蹤。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "xray:PutTraceSegments", "xray:PutTelemetryRecords", "xray:GetSamplingRules", "xray:GetSamplingTargets" ], "Resource": [ "*" ] } ] }

在現有狀態機中啟用 X-Ray

若要在現有狀態機中啟用 X-Ray:

  1. Step Functions 主控台中,選取要啟用追蹤的狀態機器。

  2. 選擇編輯

  3. 選擇「啟動 X-Ray 追蹤」。

    您將看到一條通知,告訴您可能需要進行其他更改。

    注意

    當您為現有狀態機啟用 X-Ray 時,必須確保您擁有的IAM政策授與足夠權限,讓 X-Ray 執行追蹤。您可以手動新增一個,也可以產生一個。如需詳細資訊,請參閱的〈IAM原則〉一節IAM策略使用 AWS X-Ray 在 Step Functions

  4. (選擇性) 為狀態機自動產生新角色,以包含 X-Ray 權限。

  5. 選擇 Save (儲存)。

設定 Step Functions 的 X-Ray 追蹤

當您第一次在啟用 X-Ray 追蹤的情況下執行狀態機時,它將使用 X-Ray 追蹤的預設組態值。 AWS X-Ray 不會針對傳送至應用程式的每個要求收集資料。相反,它會針對統計上顯著數量的請求收集資料。預設值是每秒記錄第一個要求,以及任何其他要求的百分之五。每秒一個請求是儲槽。這可確保只要服務持續提供請求,每秒都會記錄至少一個追蹤。5% 是超過儲槽大小的額外請求抽樣「速率」

為了避免開始使用時產生的服務費用,預設的抽樣費率都很保守。您可以設定 X-Ray 來修改預設取樣規則,並設定根據服務或要求內容套用取樣的其他規則。

例如,您可能想要停用取樣,並追蹤修改狀態或處理碼之呼叫的所有要求 AWS 帳戶 或交易。對於大容量的唯讀呼叫 (例如背景輪詢、健康狀態檢查或連線維護),您可以以低速率取樣,仍然可以取得足夠的資料來觀察發生的問題。

若要設定狀態機的取樣規則:

  1. 轉到 X-Ray 控制台

  2. 選擇抽樣

  3. 若要建立規則,請選擇 Create sampling rule (建立抽樣規則)

    若要編輯規則,請選擇規則的名稱。

    若要刪除規則,請選擇規則並使用 Actions (動作) 功能表來刪除它。

現有抽樣規則的某些部分,例如名稱和優先順序,無法變更。請改為新增或複製現有規則,進行所需的變更,然後使用新規則。

如需 X-Ray 取樣規則以及如何設定各種參數的詳細資訊,請參閱在 X-Ray 主控台中設定取樣規則

整合上游服務

若要整合 Step Functions 工作流程的執行 (例如快速、同步和標準工作流程) 與上游服務,您需要設定traceHeader. 如果您使用的是HTTPAPI在API閘道中,系統會自動為您完成此操作。但是,如果您使用的是 Lambda 函數和/或SDK,則需要設置StartExecutionStartSyncExecutionAPI調用自己。traceHeader

您必須將traceHeader格式指定為\p{ASCII}∗。此外,若要讓 Step Functions 式使用相同的追蹤識別碼,您必須將格式指定為Root={TRACE_ID};Sampled={1 or 0}。如果您使用的是 Lambda 函數,請將TRACE_ID其取代為目前區段中的追蹤 ID,並將「取樣」欄位設定為「取樣」(Sampled) 欄位,1就好像您的取樣模式為 true,且0取樣模式為 false。提供此格式的追蹤 ID 可確保您取得完整的追蹤。

以下是用 Python 編寫的示例,以展示如何指定traceHeader.

state_machine = config.get_string_paramter("STATE_MACHINE_ARN") if (xray_recorder.current_subsegment() is not None and xray_recorder.current_subsegment().sampled) : trace_id = "Root={};Sampled=1".format( xray_recorder.current_subsegment().trace_id ) else: trace_id = "Root=not enabled;Sampled=0" LOGGER.info("trace %s", trace_id) # execute it response = states.start_sync_execution( stateMachineArn=state_machine, input=event['body'], name=context.aws_request_id, traceHeader=trace_id ) LOGGER.info(response)

概念

X-Ray 控制台

在 AWS X-Ray 主控台中,您可以檢視服務對應和追蹤,以瞭解當狀態機器啟用 X-Ray 時,應用程式所提供的要求。

如需有檢視 X-Ray 主控台關如何存取狀態機執行的 X-Ray 主控台的資訊,請參閱。

如需 X-Ray 主控台的詳細資訊,請參閱 X-Ray 主控台文件

區段、子區段和軌跡

區段會記錄您狀態機器的請求相關資訊。它包含諸如狀態機執行的工作之類的信息,並且還可能包含有關下游呼叫的信息的子段

追蹤會收集單一要求所產生的所有區段。

抽樣

為了確保有效追蹤,並提供應用程式所提供之請求的代表性樣本,X-Ray 會套用取樣演算法來判斷要追蹤哪些要求。這可以透過編輯取樣規則來變更。

指標

對於您的狀態機,X-Ray 將計量調用時間,狀態轉換時間,Step Functions 的總執行時間以及此執行時間內的變化。此資訊可透過 X-Ray 主控台存取。

分析

所以此 AWS X-Ray 分析主控台是一種用於解譯追蹤資料的互動式工具。您可以按一下與目前追蹤集相關聯之指標和欄位的圖表和面板,使用愈益精細的篩選條件來精簡作用中的資料集。您可以分析狀態機的執行情況,以找出並識別效能問題。

如需 X-Ray 分析的詳細資訊,請參閱與 AWS X-Ray 分析主控台

Step Functions 服務集成和 X-Ray

一些 AWS 與 Step Functions 整合的服務提供整合 AWS X-Ray 將追蹤標頭新增至要求、執行 X-Ray 精靈,或做出取樣決策,並將追蹤資料上傳至 X-Ray。其他人必須使用 AWS X-Ray SDK。一些尚未支持 X-Ray 集成。使用與 Step Functions 數的服務整合時,X-Ray 整合是必要的,以提供完整的追蹤資料

原生 X-Ray 支援

與原生 X-Ray 支援的服務整合包括:

所需儀器

需要 X-Ray 儀器的服務集成:

  • Amazon Elastic Container Service

  • AWS Batch

  • AWS Fargate

僅用戶端追蹤

其他服務整合不支援 X-Ray 追蹤。但是,仍然可以收集客戶端跟踪:

  • Amazon DynamoDB

  • Amazon EMR

  • Amazon SageMaker

  • AWS CodeBuild

  • AWS Glue

檢視 X-Ray 主控台

X-Ray 接收來自服務的資料作為區段。X-Ray 會將具有共同要求的區段群組為追蹤。X-Ray 會處理追蹤,以產生提供應用程式視覺化呈現的服務圖表。

開始執行狀態機之後,您可以在「執行詳細資料」區段中選擇 X-Ray 追蹤對應連結來檢視其 X-Ray 軌跡。

為狀態機啟用 X-Ray 之後,您可以在 X-Ray 主控台中檢視其執行的追蹤資訊。

檢視 Step Functions 的 X-Ray 追蹤資訊

下列步驟說明啟用 X-Ray 並執行執行後,您可以在主控台中看到的資訊類型。會展示使用 AmazonSQS,Amazon SNS 和 Lambda 創建回調模式示例樣本專案的 X-Ray 軌跡。

追蹤

執行完成後,您可以瀏覽至 X-Ray 主控台,您將在其中看到「X-Ray 追蹤」頁面。這會顯示服務對應的概觀,以及狀態機器的追蹤和區段資訊。

狀態機的 X-Ray 痕跡的說明性屏幕截圖。

服務地圖

X-Ray 主控台中的服務對應可協助您識別發生錯誤的服務、有高延遲連線的服務,或查看未成功要求的追蹤。

說明性屏幕截圖集中在 X-Ray 痕跡中的服務地圖上。

在追蹤對映上,您可以選擇服務節點來檢視該節點的要求,或選擇兩個節點之間的邊緣來檢視傳遞該連線的要求。您可以在此選擇WaitForCallBack節點,并查看有關其執行狀態和響應狀態的其他信息。

X-Ray 追蹤節點的範例詳細資訊。

您可以看到 X-Ray 服務地圖與狀態機的關聯性。如果 Step Functions 支援 X-Ray,則每個服務整合都有一個服務對應節點。

正在追蹤的狀態機的範例圖形表示。

區段和子區段

追蹤是單一要求所產生的區段集合。每個區段都會提供資源的名稱、有關請求的詳細資訊,以及已完成工作的詳細資訊。在「追蹤」頁面上,您可以看到區段,如果展開,則會看到其對應的子區段。您可以選擇段或子段來檢視有關該段或子段的詳細資訊。

服務對應上的每個節點都會有不同的區段。

狀態機器的區段和子區段的螢幕擷取畫面範例。

選擇區段可提供資源的名稱、有關請求的詳細資訊,以及已完成工作的詳細資訊。

區段可以將完成工作的資料細分為子區段。選擇子區段會顯示精細的計時資訊和詳細資訊。子區段可包含有關呼叫的其他詳細資料 AWS 服務HTTPAPI、外部或資SQL料庫。

分析

所以此 AWS X-Ray 分析主控台是一種用於解譯追蹤資料的互動式工具。您可以使用它來更輕鬆地了解狀態機的執行情況。您可以透過互動式回應時間和時間序列圖表來探索、分析和視覺化追蹤,以協助找出效能和延遲問題。

您可以按一下與目前追蹤集相關聯之指標和欄位的圖表和面板,使用愈益精細的篩選條件來精簡作用中的資料集。

組態

您可以從 X-Ray 主控台設定取樣和加密選項。

  • 選擇取樣以檢視有關取樣率和組態的詳細資訊。

    您可以變更取樣規則以控制記錄的資料量,並修改取樣行為以符合您的特定需求。

  • 選擇加密以修改加密設定。

    您可以使用預設設定,X-Ray 會加密靜態追蹤和資料,或者在需要時選擇KMS金鑰。標準AWS KMS收費適用於後一種情況。

如果跟踪圖或服務地圖中沒有數據怎麼辦?

如果您已啟用 X-Ray,但在 X-Ray 主控台中看不到任何資料,請檢查:

  • 您的IAM角色設置正確,以允許寫入 X-Ray。

  • 採樣規則允許數據的採樣。

  • 由於在套用新建立或修改的IAM角色之前可能會有短暫的延遲,因此請在幾分鐘後再次檢查追蹤或服務對應。

  • 如果您在「X-Ray 繪圖」面板中看到「找不到資料」,請檢查您的IAM帳戶設定並確定 AWS Security Token Service 已針對預定區域啟用。如需詳細資訊,請參閱啟用和停用 AWS STS 在一個 AWS 區域 (在 IAM 使用者指南中)