View a markdown version of this page

將可觀測性新增至 Amazon Bedrock AgentCore 資源 - Amazon Bedrock AgentCore

將可觀測性新增至 Amazon Bedrock AgentCore 資源

Amazon Bedrock AgentCore 提供許多內建指標,以監控 AgentCore 執行期、記憶體、閘道、內建工具和身分資源類型的資源效能。此預設資料可在 Amazon CloudWatch 中使用。若要在 CloudWatch 主控台中檢視完整範圍的可觀測性資料,或輸出客服人員的自訂執行期指標,您需要使用 AWS Distro for Open Telemetry (ADOT) SDK 來檢測程式碼。

若要在 CloudWatch 中檢視可觀測性儀表板,請開啟 Amazon CloudWatch GenAi 可觀測性頁面。

請參閱下列各節,進一步了解如何在 CloudWatch 主控台生成式 AI 可觀測性頁面和 CloudWatch Logs 中設定資源以檢視可觀測性指標。

提示

在 AgentCore 執行時間之外執行的代理程式也支援使用 ADOT SDK 輸出自訂指標。若要了解如何啟用這些代理程式的可觀測性,請參閱啟用 AgentCore 外部託管的代理程式的可觀測性

啟用 AgentCore 可觀測性

若要檢視 AgentCore 服務產生的指標、範圍和追蹤,您必須先完成一次性設定,才能開啟 Amazon CloudWatch 交易搜尋。若要檢視記憶體資源的服務提供範圍,您也需要在建立記憶體時啟用追蹤。請參閱啟用 AgentCore 執行期、記憶體、閘道、內建工具和身分資源的可觀測性,以進一步了解。

下列各節說明如何執行這些設定動作,並在您的代理程式程式碼中啟用可觀測性。

啟用 CloudWatch 交易搜尋

您可以使用 CloudWatch 主控台,或透過 AWS 命令列界面 (AWS CLI) 或其中一個 AWS SDKs 使用 API 來啟用 CloudWatch 交易搜尋。

使用下列其中一個程序來啟用交易搜尋。

範例
CloudWatch console
  1. ====== 在 CloudWatch 主控台中啟用 CloudWatch 交易搜尋

  2. 開啟 CloudWatch 主控台

  3. 在導覽窗格中,展開 Application Signals (APM),然後選擇交易搜尋

  4. 選擇啟用 Transaction Search

  5. 選取要擷取為結構化日誌的核取方塊。

  6. 選擇儲存

API
  1. ====== 使用 API 啟用 CloudWatch 交易搜尋

  2. 使用 AWS CLI 或 AWS SDK 啟用交易搜尋時,請先使用 PutResourcePolicy 新增資源型政策,以設定必要的許可來擷取 CloudWatch Logs 中的跨度。

    下列 AWS CLI 命令新增資源政策,提供 AWS X-Ray 將追蹤傳送至 CloudWatch Logs 的許可。

    aws logs put-resource-policy --policy-name MyResourcePolicy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "TransactionSearchXRayAccess", "Effect": "Allow", "Principal": { "Service": "xray.amazonaws.com" }, "Action": "logs:PutLogEvents", "Resource": [ "arn:partition:logs:region:account-id:log-group:aws/spans:*", "arn:partition:logs:region:account-id:log-group:/aws/application-signals/data:*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:partition:logs:region:account-id:*" }, "StringEquals": { "aws:SourceAccount": "account-id" } } } ]}'

    為了清楚起見,此命令中的內嵌 JSON 政策會在下列範例中展開:

    { "Version":"2012-10-17", "Statement": [ { "Sid": "TransactionSearchXRayAccess", "Effect": "Allow", "Principal": { "Service": "xray.amazonaws.com" }, "Action": "logs:PutLogEvents", "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:aws/spans:*", "arn:aws:logs:us-east-1:123456789012:log-group:/aws/application-signals/data:*" ], "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:xray:us-east-1:123456789012:*" }, "StringEquals": { "aws:SourceAccount": "123456789012" } } } ] }
  3. 使用 UpdateTraceSegmentDestination 設定追蹤區段的目的地。

    若要使用 AWS CLI,請執行下列命令。

    aws xray update-trace-segment-destination --destination CloudWatchLogs
  4. (選用) 使用 UpdateIndexingRule 設定所需的取樣百分比。

    若要使用 AWS CLI,請執行下列命令。

    aws xray update-indexing-rule --name "Default" --rule '{"Probabilistic": {"DesiredSamplingPercentage": number}}'

Amazon Bedrock AgentCore 執行時間中託管之代理程式的範圍目的地

提示

您現在可以將客服人員的所有遙測 - 跨度、結構化日誌和標準輸出 - 合併到每個客服人員的單一日誌群組中。

透過 AgentCore 執行期,Amazon Bedrock AgentCore 的功能,您可以設定代理程式將其範圍交付到與代理程式日誌相同的 Amazon CloudWatch 日誌群組。使用此組態,跨度會移至 中的spans日誌串流/aws/bedrock-agentcore/runtimes/<agent_id>-<endpoint_name>,而不是共用aws/spans日誌群組。您可以將跨、結構化日誌和標準輸出保留在一個每個代理程式日誌群組中,範圍存取控制和加密到個別代理程式,並從單一位置匯出遙測。

在支援的 AWS 區域中,新建立的客服人員會使用客服人員的日誌群組做為預設範圍目的地。在區域支援統一範圍目的地之前建立的代理程式會將共用aws/spans日誌群組保留為預設值。

您可以使用代理執行時間上的UNIFIED_TRACES_DESTINATION_ENABLED環境變數來覆寫個別代理程式的預設值:

  • 若要選擇加入使用共用aws/spans日誌群組的現有代理程式,請設定 UNIFIED_TRACES_DESTINATION_ENABLED=true。AgentCore 接著會將代理程式的範圍傳遞給自己的日誌群組。

  • 若要退出預設使用自己日誌群組的代理程式,請設定 UNIFIED_TRACES_DESTINATION_ENABLED=false。AgentCore 接著會將代理程式的範圍傳遞至共用aws/spans日誌群組。

若要讓 AgentCore 將範圍傳遞到代理程式的日誌群組,下列項目必須是 true:

  • 在帳戶中啟用 CloudWatch 交易搜尋,並將追蹤區段傳送至 Amazon CloudWatch Logs。如果沒有交易搜尋,AgentCore 無法將範圍交付到代理程式的日誌群組。如需詳細資訊,請參閱啟用 CloudWatch 交易搜尋

  • 將代理程式日誌群組上的 logs:PutResourcePolicy動作授予代理程式的執行角色。AgentCore 使用此許可來允許 AWS X-Ray 將跨度交付至日誌群組。如需詳細資訊,請參閱在 AgentCore 執行時間中執行代理程式的執行角色

  • 代理程式使用 ADOT 0.18.0 版或更新版本 (aws-opentelemetry-distro>=0.18.0)。舊版會忽略範圍目的地組態,並將範圍傳遞給共用aws/spans日誌群組。

變更跨度目的地不會移動現有的跨度資料。AgentCore 已交付的跨度會保留在其原始日誌群組中。

在 AgentCore 託管代理程式的代理程式程式碼中啟用可觀測性

除了服務產生的指標之外,您還可以使用 AgentCore 收集範圍和追蹤資料,以及從代理程式程式碼發出的自訂指標。

當您搭配支援的第三方檢測程式庫使用 StrandsLangChainCrewAI 等代理程式架構時,該架構本身隨附 OTEL 和 GenAI 語意慣例的內建支援,也可以使用 等自動檢測套件進行檢測opentelemetry-instrument-langchain。您也可以透過定義自訂追蹤器來傳送生成式 AI 語意慣例遙測跨度。AgentCore 支援在您的代理程式架構中使用下列檢測程式庫:

若要在 CloudWatch 主控台生成式 AI 可觀測性頁面和 Amazon CloudWatch 中檢視此資料,您需要將 AWS Distro for Open Telemetry (ADOT) SDK 新增至代理程式程式碼。

注意

使用 AgentCore,您也可以檢視未在 AgentCore 執行時間中執行之代理程式的指標。為非 AgentCore 代理程式設定遙測輸出需要額外的設定步驟。請參閱啟用 AgentCore 外部託管代理程式的可觀測性中的指示,以進一步了解。

若要新增 ADOT 支援並啟用 AgentCore 可觀測性,請依照下列程序中的步驟進行。

將可觀測性新增至 AgentCore 代理程式

  1. 確認您的架構已設定為發出追蹤。例如,在 Strands 架構中,追蹤器物件必須設定為指示 Strands 發出 Open Telemetry (OTEL) 日誌。

  2. 將 ADOT SDK 和 boto3 新增至代理程式的相依性。對於 Python,請將下列項目新增至您的requirements.txt檔案:

    aws-opentelemetry-distro>=0.10.0 boto3

    或者,您可以直接安裝相依性:

    pip install aws-opentelemetry-distro>=0.10.0 boto3
  3. 使用 OpenTelemetry 自動檢測命令執行您的代理程式程式碼:

    opentelemetry-instrument python my_agent.py

    這種自動檢測方法會自動將 SDK 新增至 Python 路徑。您可能已在標準 OpenTelemetry 實作中使用此方法。

    針對容器化環境 (例如 docker),新增下列命令:

    CMD ["opentelemetry-instrument", "python", "main.py"]

    使用 ADOT 時,若要正確傳播工作階段 ID,請在請求標頭X-Amzn-Bedrock-AgentCore-Runtime-Session-Id中定義 。ADOT 接著會在下游標頭中正確設定 session_id。

    若要傳播追蹤 ID,請使用 參數traceId=<traceId>集叫用 AgentCore 執行期。

    您也可以使用其他標頭叫用代理程式,以取得其他可觀測性選項。如需進一步了解,請參閱使用自訂標頭的增強型 AgentCore 執行期可觀測性

為託管在 AgentCore 外部的代理程式啟用可觀測性

若要為在 AgentCore 執行時間外託管的代理程式啟用可觀測性,請先依照先前章節中的步驟啟用 CloudWatch 交易搜尋,並將 ADOT 開發套件新增至您的程式碼。

如果您在 AWS Lambda 上託管代理程式,請使用 AWS Distro AWS for OpenTelemetry 網站上的 Lambda Layer for OpenTelemetry。將 layer 新增至函數,然後將AWS_LAMBDA_EXEC_WRAPPER環境變數設定為 /opt/otel-instrument。然後, layer 會自動檢測您的函數。使用此方法,您不需要新增aws-opentelemetry-distro套件或執行先前所述的opentelemetry-instrument命令。

代理程式可觀測性不支援 ADOT Collector

ADOT Collector 不支援代理程式可觀測性。若要從託管於 AgentCore 執行期之外的代理程式傳送遙測,您必須使用 ADOT SDK 或 AWS Lambda Layer for OpenTelemetry。

對於在 AgentCore 執行時間之外執行的代理程式,您也需要建立包含在環境變數中的代理程式日誌群組。

設定您的 AWS 環境變數,然後設定 Open Telemetry 環境變數,如下所示。

AWS 環境變數

AWS_ACCOUNT_ID=<account id> AWS_DEFAULT_REGION=<default region> AWS_REGION=<region> AWS_ACCESS_KEY_ID=<access key id> AWS_SECRET_ACCESS_KEY=<secret key>

OTEL 環境變數

AGENT_OBSERVABILITY_ENABLED=true OTEL_PYTHON_DISTRO=aws_distro OTEL_PYTHON_CONFIGURATOR=aws_configurator # required for ADOT Python only OTEL_RESOURCE_ATTRIBUTES=service.name=<agent-name>,aws.log.group.names=/aws/bedrock-agentcore/runtimes/<agent-id>,cloud.resource_id=<AgentEndpointArn:AgentEndpointName> # endpoint is optional OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=/aws/bedrock-agentcore/runtimes/<agent-id>,x-aws-log-stream=runtime-logs,x-aws-metric-namespace=bedrock-agentcore OTEL_EXPORTER_OTLP_TRACES_HEADERS=x-aws-log-group=/aws/bedrock-agentcore/runtimes/<agent-id>,x-aws-log-stream=spans # (Optional) Directs spans to your log group instead of the aws/spans log group. Requires ADOT version 0.18.0 or later. OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf OTEL_TRACES_EXPORTER=otlp OTEL_AWS_APPLICATION_SIGNALS_ENABLED=false # AWS Lambda Layer for OpenTelemetry only: disables Application Signals OTEL_LOGS_EXPORTER=otlp # AWS Lambda Layer for OpenTelemetry only: exports logs over OTLP OTEL_METRICS_EXPORTER=awsemf # AWS Lambda Layer for OpenTelemetry only: exports metrics as CloudWatch EMF

<agent-name> 將 取代為代理程式的名稱,並將 <agent-id>取代為代理程式的唯一識別符。

注意

如果您OTEL_EXPORTER_OTLP_TRACES_HEADERS將 設定為將範圍交付至您自己的日誌群組,您還必須新增 Amazon CloudWatch Logs 資源政策。此政策必須允許 X-Ray (xray.amazonaws.com) 在該日誌群組logs:PutLogEvents上呼叫 。使用啟用 CloudWatch 交易搜尋中顯示的相同政策,搭配 中日誌群組的 ARNResource。如果沒有此政策,X-Ray 就無法將範圍交付到您的日誌群組。

注意

(選用) 對於 Strands、LangChain 和CrewAI SDK 和程式碼,以傳送生成式 AI 語意慣例遙測和跨度以外的代理程式架構。AgentCore Observability 是 Amazon Bedrock AgentCore 的一項功能,支援在您的代理架構中使用下列檢測程式庫:* OpenInference * Openllmetry * OpenLit * Traceloop

工作階段 ID 支援

若要傳播工作階段 ID,您需要使用 OTEL 封包中的工作階段識別符叫用 :

from opentelemetry import baggage ctx = baggage.set_baggage("session.id", session_id) # Set the session.id in baggage attach(ctx) # Attach the context to make it active token

啟用 AgentCore 執行期、記憶體、閘道、內建工具和身分資源的可觀測性

當您建立 AgentCore 執行期資源 (代理程式) 時,AgentCore 執行期預設會為服務提供的日誌建立 CloudWatch 日誌群組。不過,對於記憶體、閘道和內建工具資源,AgentCore 不會自動為您設定日誌目的地。

對於記憶體和閘道資源,您可以在 主控台或使用 AWS SDK 來設定日誌目的地。如果您使用主控台設定 CloudWatch Logs 目的地,記憶體和閘道資源的預設日誌群組名稱格式為 /aws/vendedlogs/bedrock-agentcore/{resource-type}/APPLICATION_LOGS/{resource-id} ,其中 {resource-type}memorygateway

對於記憶體和閘道日誌,您也可以使用 AgentCore 主控台在 Amazon S3 日誌或 Firehose 串流日誌中設定日誌目的地。若要進一步了解如何在 Amazon S3 或 Firehose 中存放日誌,請參閱上傳、下載和使用 Amazon S3 中的物件,以及建立 Amazon Data Firehose 交付串流

若要進一步了解 AgentCore for memory and Gateway 資源的日誌資料輸出,請參閱提供日誌資料 (記憶體)提供日誌資料 (閘道)

對於內建工具資源,AgentCore 服務預設不提供日誌,但您可以從程式碼輸出自己的日誌。如果您提供自己的日誌輸出,則需要手動設定日誌目的地來存放此資料。

若要查看 AgentCore 預設為每個資源類型提供的可觀測性資料,請參閱 Amazon Bedrock AgentCore 產生的可觀測性資料

使用主控台設定日誌目的地

若要在 AgentCore 主控台中設定記憶體或閘道日誌的日誌目的地,請使用下列程序。

範例
Memory
  1. ====== 設定記憶體資源的日誌交付 (主控台)

  2. 在 AgentCore 主控台中開啟記憶體頁面。

  3. 記憶體窗格中,選取要設定日誌目的地的記憶體。

  4. 向下捲動至日誌交付窗格,然後選擇新增

  5. 從下拉式清單中選取您要新增的日誌目的地類型 (CloudWatch Logs 群組、Amazon S3 儲存貯體或 Amazon Data Firehose)。

  6. 針對日誌類型 ,選取 APPLICATION_LOGS

  7. 對於 Amazon S3 和 Firehose 目的地,輸入交付目的地 ARN。對於 CloudWatch Logs,目的地日誌群組已填入預設值。

  8. (選用) 對於 CloudWatch Logs 目的地,若要變更預設日誌群組,請輸入新的日誌群組名稱,或在目的地日誌群組下選取現有的日誌群組

  9. (選用) 若要變更每個日誌記錄或日誌輸出格式中擷取的欄位,請展開其他設定 - 選用 ,並將欄位選擇輸出格式欄位分隔符號修改為所需的組態。

  10. 選擇新增

Gateway
  1. ====== 設定閘道資源的日誌交付 (主控台)

  2. 在 AgentCore 主控台中開啟閘道頁面。

  3. 閘道窗格中,選取您要設定日誌目的地的閘道。

  4. 向下捲動至日誌交付窗格,然後選擇新增

  5. 從下拉式清單中選取您要新增的日誌目的地類型 (CloudWatch Logs 群組、Amazon S3 儲存貯體或 Amazon Data Firehose)。

  6. 對於 Amazon S3 和 Firehose 目的地,輸入交付目的地 ARN。對於 CloudWatch Logs,目的地日誌群組已填入預設值。

  7. (選用) 對於 CloudWatch Logs 目的地,若要變更預設日誌群組,請輸入新的日誌群組名稱,或在目的地日誌群組下選取現有的日誌群組

  8. (選用) 若要變更每個日誌記錄或日誌輸出格式中擷取的欄位,請展開其他設定 - 選用 ,並將欄位選擇輸出格式欄位分隔符號修改為所需的組態。

  9. 選擇新增

Runtime
  1. ======= 設定代理程式執行時間資源的日誌交付 (主控台)

  2. AgentCore 主控台中開啟 Agent Runtime 頁面。 AgentCore

  3. 執行期代理程式窗格中,選取您要設定日誌目的地的執行期代理程式。

  4. 向下捲動至日誌交付窗格,然後從新增下拉式清單中選擇記錄目的地 - Amazon CloudWatch Logs、Amazon S3 或 Amazon Data Firehose。

  5. 設定下列日誌交付詳細資訊,然後選擇新增

    • 針對日誌類型 ,選擇 APPLICATION_LOGS

    • 如果使用 Amazon CloudWatch Logs 做為記錄目的地,請指定目的地日誌群組。

    • 如果使用 Amazon S3 做為記錄目的地,請指定目的地 Amazon S3 儲存貯體。

    • 如果使用 Amazon Data Firehose 做為記錄目的地,請指定目的地交付串流。

  6. 確認日誌交付狀態設定為交付作用中

Built-in tools
  1. ====== 設定內建工具資源的日誌交付 (主控台)

  2. 在 AgentCore 主控台中開啟內建工具頁面。

  3. 內建工具窗格中,在程式碼解譯器工具瀏覽器工具索引標籤中,選取您要設定日誌目的地的程式碼解譯器工具或瀏覽器工具。

  4. 向下捲動至日誌交付窗格,然後從新增下拉式清單中選擇記錄目的地 - Amazon CloudWatch Logs、Amazon S3 或 Amazon Data Firehose。

  5. 設定下列日誌交付詳細資訊,然後選擇新增

    • 針對日誌類型 ,選擇 APPLICATION_LOGS

    • 如果使用 Amazon CloudWatch Logs 做為記錄目的地,請指定目的地日誌群組。

    • 如果使用 Amazon S3 做為記錄目的地,請指定目的地 Amazon S3 儲存貯體。

    • 如果使用 Amazon Data Firehose 做為記錄目的地,請指定目的地交付串流。

  6. 確認日誌交付狀態設定為交付作用中

Identity
  1. WorkloadIdentity 日誌交付啟用會在相關聯的資源層級處理,包括客服人員執行期或客服人員閘道資源。

    設定相關聯資源的 WorkloadIdentity 日誌交付 (主控台)

  2. 在 AgentCore 主控台中開啟閘道代理程式執行期頁面,然後選取您要為其啟用 WorkloadIdentity 記錄的代理程式或閘道。

  3. 身分索引標籤中,向下捲動至日誌交付窗格,然後從新增下拉式清單中選擇記錄目的地 - Amazon CloudWatch Logs、Amazon S3 或 Amazon Data Firehose。

  4. 設定下列日誌交付詳細資訊,然後選擇新增

    • 針對日誌類型 ,選擇 APPLICATION_LOGS

    • 如果使用 Amazon CloudWatch Logs 做為記錄目的地,請指定目的地日誌群組。

    • 如果使用 Amazon S3 做為記錄目的地,請指定目的地 Amazon S3 儲存貯體。

    • 如果使用 Amazon Data Firehose 做為記錄目的地,請指定目的地交付串流。

  5. 確認日誌交付狀態設定為交付作用中

使用主控台設定追蹤交付至 CloudWatch

本節說明如何啟用追蹤交付至 CloudWatch,以追蹤透過應用程式的互動流程,讓您視覺化請求、識別效能瓶頸、疑難排解錯誤,以及最佳化效能。

範例
Memory
  1. ====== 設定記憶體資源的追蹤 (主控台)

  2. 在 AgentCore 主控台中開啟記憶體頁面。

  3. 記憶體窗格中,選取您要為其啟用追蹤的記憶體資源。

  4. 追蹤窗格中,選擇編輯 ,將小工具切換為啟用 ,然後選擇儲存

Runtime
  1. ====== 設定執行時間資源的追蹤 (主控台)

  2. AgentCore 主控台中開啟 Agents 執行時間頁面。 AgentCore

  3. 執行期代理程式窗格中,選取要啟用追蹤的代理程式。

  4. 追蹤窗格中,選擇編輯 ,將小工具切換為啟用 ,然後選擇儲存

    AgentCore 啟用所選代理程式的追蹤。對於使用共用跨度目的地的客服人員,跨度會出現在客服人員的日誌群組 (/aws/bedrock-agentcore/runtimes/<agent_id>-<endpoint_name>) 或aws/spans日誌群組中。如需詳細資訊,請參閱 Amazon Bedrock AgentCore 執行時間中託管之代理程式的範圍目的地

    設定執行時間資源的 WorkloadIdentity 追蹤 (主控台)

  5. AgentCore 主控台中開啟 Agents 執行時間頁面。 AgentCore

  6. 執行期代理程式窗格中,選擇身分索引標籤,然後選擇您要為其啟用 WorkloadIdentity 追蹤的代理程式。

  7. 追蹤窗格中,選擇編輯 ,將小工具切換為啟用 ,然後選擇儲存

    將為選取的代理程式啟用 WorkloadIdentity 追蹤,並在aws/spans日誌群組中提供跨度。

Built-in tools
  1. ====== 設定內建工具的追蹤 (主控台)

  2. 在 AgentCore 主控台中開啟內建工具頁面。

  3. 內建工具窗格中,在程式碼解譯器工具瀏覽器工具索引標籤中,選取您要啟用追蹤的程式碼解譯器工具或瀏覽器工具。

  4. 追蹤窗格中,選擇編輯 ,將小工具切換為啟用 ,然後選擇儲存

    將為選取的程式碼解譯器或瀏覽器工具啟用追蹤,日誌aws/spans群組中將提供跨度。

Gateway
  1. ====== 設定閘道資源的追蹤 (主控台)

  2. 在 AgentCore 主控台中開啟閘道頁面。

  3. 閘道窗格中,選取您要為其啟用追蹤的閘道。

  4. 追蹤窗格中,選擇編輯 ,將小工具切換為啟用 ,然後選擇儲存

    將為選取的閘道啟用追蹤,日誌aws/spans群組中將提供跨度。

    設定閘道資源的 WorkloadIdentity 追蹤 (主控台)

  5. 在 AgentCore 主控台中開啟閘道頁面。

  6. 閘道窗格中,選擇身分索引標籤,然後選取您要為其啟用 WorkloadIdentity 追蹤的閘道。

  7. 追蹤窗格中,選擇編輯 ,將小工具切換為啟用 ,然後選擇儲存

    將為選取的閘道啟用 WorkloadIdentity 追蹤,並且aws/spans日誌群組中將提供跨度。

    注意

    您必須先啟用 CloudWatch 交易搜尋,才能啟用追蹤。

Identity
  1. ====== 設定身分資源的追蹤 (主控台)

  2. 在 AgentCore 主控台中開啟身分頁面。

  3. 身分窗格中,選取您要啟用追蹤的 OAuth 用戶端或 API 金鑰。

  4. 追蹤窗格中,選擇編輯 ,將小工具切換為啟用 ,然後選擇儲存

使用 AWS SDK 設定 CloudWatch 資源

設定日誌和追蹤的交付來源 (SDK)

  • 執行下列 Python 程式碼,為您的記憶體、閘道和內建工具資源設定 CloudWatch。請注意,用於追蹤的交付來源和目的地僅適用於記憶體和閘道資源。

import boto3 def enable_observability_for_resource(resource_arn, resource_id, account_id, region='us-east-1'): """ Enable observability for a Bedrock AgentCore resource (e.g., Memory Store) """ logs_client = boto3.client('logs', region_name=region) # Step 0: Create new log group for vended log delivery log_group_name = f'/aws/vendedlogs/bedrock-agentcore/{resource_id}' logs_client.create_log_group(logGroupName=log_group_name) log_group_arn = f'arn:aws:logs:{region}:{account_id}:log-group:{log_group_name}' # Step 1: Create delivery source for logs logs_source_response = logs_client.put_delivery_source( name=f"{resource_id}-logs-source", logType="APPLICATION_LOGS", resourceArn=resource_arn ) # Step 2: Create delivery source for traces traces_source_response = logs_client.put_delivery_source( name=f"{resource_id}-traces-source", logType="TRACES", resourceArn=resource_arn ) # Step 3: Create delivery destinations logs_destination_response = logs_client.put_delivery_destination( name=f"{resource_id}-logs-destination", deliveryDestinationType='CWL', deliveryDestinationConfiguration={ 'destinationResourceArn': log_group_arn, } ) # Traces required traces_destination_response = logs_client.put_delivery_destination( name=f"{resource_id}-traces-destination", deliveryDestinationType='XRAY' ) # Step 4: Create deliveries (connect sources to destinations) logs_delivery = logs_client.create_delivery( deliverySourceName=logs_source_response['deliverySource']['name'], deliveryDestinationArn=logs_destination_response['deliveryDestination']['arn'] ) # Traces required traces_delivery = logs_client.create_delivery( deliverySourceName=traces_source_response['deliverySource']['name'], deliveryDestinationArn=traces_destination_response['deliveryDestination']['arn'] ) print(f"Observability enabled for {resource_id}") return { 'logs_delivery_id': logs_delivery['id'], 'traces_delivery_id': traces_delivery['id'] } # Usage example resource_arn = "arn:aws:bedrock-agentcore:us-east-1:123456789012:memory/my-memory-id" resource_id = "my-memory-id" account_id = "123456789012" delivery_ids = enable_observability_for_resource(resource_arn, resource_id, account_id)

使用自訂標頭增強 AgentCore 執行時間可觀測性

您可以使用其他 HTTP 標頭叫用代理程式,以提供增強的可觀測性選項。下列範例顯示調用,包括在 AgentCore 執行時間中託管之代理程式的選用額外標頭請求。

Boto3 調用範例

def invoke_agent(agent_id, payload, session_id=None): client = boto3.client("bedrock-agentcore", region="us-west-2") response = client.invoke_agent_runtime( agentRuntimeArn="arn:aws:bedrock-agentcore:us-west-2:111122223333:runtime/test_agent_boto2-nIg2xk3VSR", runtimeSessionId="12345678-1234-5678-9abc-123456789012", payload='{"query": "Plan a weekend in Seattle"}', )

您可以在叫用代理程式時包含下列選用標頭,以增強可觀測性和追蹤功能:

標頭 說明 範本值 技術說明

X-Amzn-Trace-Id

用於請求追蹤的追蹤 ID (X-Ray 格式)

Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1

用於跨 AWS 服務進行分散式追蹤。包含根 ID (請求原始伺服器)、父系 ID (先前的服務) 和追蹤的抽樣決策。取樣 = 1 表示 100% 取樣。父系也是 X-Ray 追蹤格式。如果未提供追蹤 ID,OTEL 將自動產生追蹤 IDs。

traceparent

W3C 標準追蹤標頭

00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

W3C 格式,包括版本、追蹤 ID、父系 ID 和旗標。使用現代追蹤系統時,需要跨服務追蹤相互關聯。

X-Amzn-Bedrock-AgentCore-Runtime-Session-Id

AgentCore 工作階段識別符

a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa

識別 AgentCore 系統中的使用者工作階段。協助進行工作階段型分析和故障診斷。

mcp-session-id

MCP 工作階段識別符

mcp-a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa

識別受管雲端平台中的工作階段。啟用跨 MCP 生態系統追蹤操作。

tracestate

其他追蹤狀態資訊

congo=t61rcWkgMzE,rojo=00f067aaa0ba902b7

廠商特定的追蹤資訊。傳遞追蹤系統超出追蹤父系範圍的其他內容。

包包

分散式追蹤的內容傳播

userId=alice,serverRegion=us-east-1

金鑰值對,可將使用者定義的屬性傳播到服務邊界,以進行內容記錄和分析。

使用自訂標頭增強 AgentCore 內建工具的可觀測性

您可以使用其他 HTTP 標頭叫用您的內建工具,以提供增強的可觀測性選項。您可以在整合下列內建工具 APIs 時包含下列選用標頭,以增強可觀測性和追蹤功能:

下列 APIs支援自訂標頭:

  • StartCodeInterpreterSession

  • InvokeCodeInterpreter

  • StopCodeInterpreterSession

  • StartBrowserSession

  • StopBrowserSession

標頭 說明 範本值 技術說明

X-Amzn-Trace-Id

用於請求追蹤的追蹤 ID (X-Ray 格式)

Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1

用於跨 AWS 服務進行分散式追蹤。包含根 ID (請求原始伺服器)、父系 ID (先前的服務) 和追蹤的抽樣決策。取樣 = 1 表示 100% 取樣。父系也是 X-Ray 追蹤格式。如果未提供追蹤 ID,OTEL 將自動產生追蹤 IDs。

traceparent

W3C 標準追蹤標頭

00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

W3C 格式,包括版本、追蹤 ID、父系 ID 和旗標。使用現代追蹤系統時,需要跨服務追蹤相互關聯。

使用自訂標頭增強 AgentCore 身分可觀測性

您可以使用其他 HTTP 標頭叫用身分資源,以提供增強的可觀測性選項。您可以在整合下列身分 APIs 時包含下列選用標頭,以增強可觀測性和追蹤功能:

下列 APIs支援自訂標頭:

  • GetWorkloadAccessToken

  • GetWorkloadAccessTokenForJWT

  • GetWorkloadAccessTokenForUserId

  • GetResourceOauth2Token

  • GetResourceAPIKey

標頭 說明 範本值 技術說明

X-Amzn-Trace-Id

用於請求追蹤的追蹤 ID (X-Ray 格式)

Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1

用於跨 AWS 服務進行分散式追蹤。包含根 ID (請求原始伺服器)、父系 ID (先前的服務) 和追蹤的抽樣決策。取樣 = 1 表示 100% 取樣。父系也是 X-Ray 追蹤格式。如果未提供追蹤 ID,OTEL 將自動產生追蹤 IDs。

可觀測性最佳實務

在 AgentCore 中實作代理程式的可觀測性時,請考慮下列最佳實務:

  • 使用一致的工作階段 IDs - 如果可能,請針對相關請求重複使用相同的工作階段 ID,以維護互動之間的內容。

  • 實作分散式追蹤 - 使用提供的標頭來啟用應用程式元件的end-to-end追蹤。

  • 新增自訂屬性 - 使用自訂屬性增強您的追蹤和指標,以提供額外的內容進行故障診斷和分析。

  • 監控資源用量 - 請注意記憶體用量指標,以最佳化客服人員的效能。

  • 設定警示 - 設定 CloudWatch 警示,以協助在潛在問題影響您的使用者之前通知您。

使用其他可觀測性平台

若要將 AgentCore 執行期中託管的代理程式與其他可觀測性平台整合,以擷取和檢視遙測輸出,請設定下列環境變數:

DISABLE_ADOT_OBSERVABILITY=true

將此變數設定為 會true取消設定 AgentCore 執行期的預設 ADOT 環境變數,確保未設定任何預設 ADOT 組態。