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