本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
中的追蹤步進函數請求資料 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-Ray 和 Step 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 端點和配額頁面的服務配額一節。
設定和組態
建立狀態機器時啟用 X-Ray 追蹤
您可以在建立新狀態機器時啟用 X-Ray 追蹤,方法是在指定詳細資訊頁面上選取啟用 X-Ray 追蹤。
-
開啟 Step Functions 主控台
,然後選擇建立狀態機器。 -
在選擇撰寫方法頁面上,選擇適當的選項來建立您的狀態機器。如果您選擇執行範例專案,則無法在狀態機器建立期間啟用 X-Ray 追蹤,而且您需要在狀態機器建立之後啟用 X-Ray 追蹤。如需在現有狀態機器中啟用 X-Ray 的詳細資訊,請參閱在現有狀態機器中啟用 X-Ray。
選擇 Next (下一步)。
-
在指定詳細資訊頁面上,設定您的狀態機器。
-
選擇啟用 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:
-
在 Step Functions 主控台
中,選取您要啟用追蹤的狀態機器。 -
選擇編輯。
-
選擇啟用 X-Ray 追蹤。
您將看到通知,告知您可能需要進行其他變更。
注意
當您為現有狀態機器啟用 X-Ray 時,您必須確保擁有政策IAM,授予 X-Ray 足夠的執行追蹤許可。您可以手動新增或產生。如需詳細資訊,請參閱 IAM的政策區段IAM 在 Step Functions AWS X-Ray 中使用 的政策。
-
(選用) 為您的狀態機器自動產生新角色,以包含 X-Ray 許可。
-
選擇 Save (儲存)。
設定步進函數的 X-Ray 追蹤
當您第一次在啟用 X-Ray 追蹤的情況下執行狀態機器時,它會使用 X-Ray 追蹤的預設組態值。 AWS X-Ray 不會針對傳送至應用程式的每個請求收集資料。反之,它會收集統計上顯著數量的請求資料。預設為每秒記錄第一個請求,以及任何額外請求的 5%。每秒一個請求是儲槽。這可確保只要服務持續提供請求,每秒都會記錄至少一個追蹤。5% 是超過儲槽大小的額外請求抽樣「速率」。
為了避免開始使用時產生的服務費用,預設的抽樣費率都很保守。您可以設定 X-Ray 來修改預設抽樣規則,並設定其他規則,以根據服務或請求的屬性套用抽樣。
例如,您可能想要停用取樣,並追蹤所有修改狀態或處理 AWS 帳戶 或交易的呼叫請求。對於大量唯讀呼叫,例如背景輪詢、運作狀態檢查或連線維護,您可以低速率抽樣,但仍取得足夠的資料來觀察發生的問題。
若要設定狀態機器的取樣規則:
-
前往 X-Ray 主控台
。 -
選擇抽樣。
-
若要建立規則,請選擇 Create sampling rule (建立抽樣規則)。
若要編輯規則,請選擇規則的名稱。
若要刪除規則,請選擇規則並使用 Actions (動作) 功能表來刪除它。
無法變更現有抽樣規則的某些部分,例如名稱和優先順序。反之,請新增或複製現有的規則、進行您想要的變更,然後使用新的規則。
如需 X-Ray 取樣規則以及如何設定各種參數的詳細資訊,請參閱 X-Ray 主控台中的設定取樣規則。
整合上游服務
若要整合 Step Functions 工作流程的執行,例如 Express、Synchronous 和 Standard 工作流程,以及設定 所需的上游服務traceHeader
。如果您在 API Gateway HTTPAPI中使用 ,系統會自動為您完成此操作。不過,如果您使用的是 Lambda 函數和/或 SDK,則需要在 traceHeader
上設定 StartExecution
或 自行StartSyncExecution
API呼叫 。
您必須將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 支援的服務整合包括:
-
AWS Step Functions
需要檢測
需要 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 主控台中的服務映射可協助您識別發生錯誤、連線具有高延遲的服務,或查看未成功請求的追蹤。
在追蹤映射上,您可以選擇服務節點來檢視該節點的請求,或選擇兩個節點之間的邊緣來檢視已傳送該連線的請求。在這裡,已選取WaitForCallBack
節點,您可以檢視其執行和回應狀態的其他資訊。
您可以查看 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 區域。