中的追蹤步進函數請求資料 AWS X-Ray - AWS Step Functions

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

中的追蹤步進函數請求資料 AWS X-Ray

您可以使用 AWS X-Ray視覺化狀態機器的元件、識別效能瓶頸,以及對導致錯誤的請求進行故障診斷。您的狀態機器會將追蹤資料傳送至 X-Ray,X-Ray 會處理資料以產生服務映射和可搜尋的追蹤摘要。

為您的狀態機器啟用 X-Ray 後,您可以在可使用 X-Ray 的所有 AWS 區域中,追蹤在 Step Functions 中執行的請求。這為您提供整個 Step Functions 請求的詳細概觀。Step Functions 會將追蹤傳送至 X-Ray 以進行狀態機器執行,即使上游服務未傳遞追蹤 ID。您可以使用 X-Ray 服務映射來檢視請求的延遲,包括與 X-Ray 整合的任何 AWS 服務。您也可以設定抽樣規則,以根據您指定的條件,告訴 X-Ray 要記錄哪些請求,以及以哪些抽樣率記錄。

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

您可以在支援兩者的區域 AWS X-Ray 搭配 Step Functions 使用 。如需 X-RayStep Functions 的區域支援資訊,請參閱 Step Functions 和 X-Ray 端點和配額頁面。

X-Ray 和 Step Functions 合併配額

您可以將資料新增至追蹤最長七天,並查詢追蹤資料,回溯到 X-Ray 存放追蹤資料的時間長度的三十天。您的追蹤將受到 X-Ray 配額的限制。除了其他配額之外,X-Ray 也為 Step Functions 狀態機器提供 100 KiB 的最低保證追蹤大小。如果向 X-Ray 提供超過 100 KiB 的追蹤資料,可能會導致凍結追蹤。如需 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 在 Step Functions AWS X-Ray 中使用 的政策

若要啟用 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 在 Step Functions AWS X-Ray 中使用 的政策

  4. (選用) 為您的狀態機器自動產生新角色,以包含 X-Ray 許可。

  5. 選擇 Save (儲存)。

設定步進函數的 X-Ray 追蹤

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

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

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

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

  1. 前往 X-Ray 主控台

  2. 選擇抽樣

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

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

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

無法變更現有抽樣規則的某些部分,例如名稱和優先順序。反之,請新增或複製現有的規則、進行您想要的變更,然後使用新的規則。

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

整合上游服務

若要整合 Step Functions 工作流程的執行,例如 Express、Synchronous 和 Standard 工作流程,以及設定 所需的上游服務traceHeader。如果您在 API Gateway HTTPAPI中使用 ,系統會自動為您完成此操作。不過,如果您使用的是 Lambda 函數和/或 SDK,則需要在 traceHeader 上設定 StartExecution或 自行StartSyncExecutionAPI呼叫 。

您必須將traceHeader格式指定為 \p{ASCII}∗。此外,若要讓 Step Functions 使用相同的追蹤 ID,您必須將格式指定為 Root={TRACE_ID};Sampled={1 or 0}。如果您使用 Lambda 函數,請將 TRACE_ID 取代為目前區段中的追蹤 ID,並將取樣欄位設定為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 將測量調用時間、狀態轉換時間、步進函數的整體執行時間,以及此執行時間的差異。此資訊可透過 X-Ray 主控台存取。

分析

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

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

Step Functions 服務整合和 X-Ray

與 Step Functions 整合的一些 AWS 服務 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 AI

  • 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 並執行執行後,您可以在 主控台中看到哪些資訊。顯示使用 Amazon SQS、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 服務、外部 HTTP API或 SQL 資料庫的其他詳細資訊。

分析

The AWS X-Ray Analytics 主控台是解譯追蹤資料的互動式工具。您可以使用此功能,更輕鬆地了解狀態機器的運作方式。您可以透過互動式回應時間和時間序列圖形來探索、分析和視覺化追蹤,以協助找出效能和延遲問題。

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

組態

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

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

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

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

    您可以使用預設設定,其中 X-Ray 會加密靜態追蹤和資料,或者視需要選擇KMS金鑰。標準AWS KMS費用適用於後者。

如果追蹤映射或服務映射中沒有資料,該怎麼辦?

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

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

  • 抽樣規則允許抽樣資料。

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

  • 如果您在 X-Ray 追蹤面板中看到找不到資料,請檢查您的IAM帳戶設定,並確保 AWS Security Token Service 已針對預期區域啟用 。如需詳細資訊,請參閱IAM《 使用者指南AWS STS 》中的啟用和停用 AWS 區域