View a markdown version of this page

为您的亚马逊 Bedro AgentCore ck 资源添加可观察性 - 亚马逊基岩 AgentCore

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为您的亚马逊 Bedro AgentCore ck 资源添加可观察性

Amazon Bedrock AgentCore 提供了许多内置指标,用于监控 AgentCore 运行时、内存、网关、内置工具和身份资源类型的资源性能。此默认数据可在亚马逊上找到 CloudWatch。要在 CloudWatch 控制台中查看全部可观测性数据,或输出代理的自定义运行时指标,您需要使用开放遥测 AWS 发行版 (ADOT) SDK 对代码进行检测。

要在中查看可观测性控制面板 CloudWatch,请打开亚马逊 CloudWatch GenAi 可观测性页面。

请参阅以下部分,详细了解如何配置资源以在 CloudWatch 控制台生成式 AI 可观测性页面和日志中查看可观测性指标。 CloudWatch

提示

在运行 AgentCore 时之外运行的代理也支持使用 ADOT SDK 输出自定义指标。要了解如何为这些代理启用可观察性,请参阅为外部托管的代理启用可观察性。 AgentCore

启用可 AgentCore 观察性

要查看该 AgentCore 服务生成的指标、跨度和跟踪,您首先需要完成一次性设置才能开启亚马逊 CloudWatch 交易搜索。要查看服务提供的内存资源跨度,还需要在创建内存时启用跟踪。要了解更多信息,请参阅为 AgentCore 运行时、内存、网关、内置工具和身份资源启用可观察性。

以下各节介绍如何执行这些设置操作以及如何在代理代码中启用可观察性。

启用 CloudWatch 交易搜索

您可以使用 CloudWatch 控制台启用 CloudWatch 交易搜索,也可以通过 AWS 命令行接口 (AWS CLI) 或其中一个 AWS 软件开发工具包使用 API 来启用事务搜索。

使用以下过程之一启用事务搜索。

例
CloudWatch console
  1. ===== 在控制台中 CloudWatch 启用 CloudWatch 交易搜索

  2. 打开 CloudWatch 控制台。

  3. 在导航窗格中,展开应用程序信号 (APM),然后选择交易搜索。

  4. 选择启用 Transaction Search。

  5. 选中该复选框以结构化日志形式收录跨度。

  6. 选择保存。

API
  1. ===== 使用 API 启用 CloudWatch 交易搜索

  2. 使用 AWS CLI 或 AWS SDK 启用事务搜索时,首先通过添加基于资源的策略来配置必要的权限以在 CloudWatch 日志中提取跨度。 PutResourcePolicy

    以下 AWS CLI 命令添加了资源策略,该策略 AWS X-Ray 授予向 CloudWatch 日志发送跟踪的权限。

    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}}'

亚马逊 Bedrock AgentCore 运行时中托管的代理的跨度目的地

提示

现在,您可以将代理的所有遥测数据(跨度、结构化日志和标准输出)整合到每个代理的单个日志组中。

借 AgentCore 助 Amazon Bedrock 的运行时功能 AgentCore,您可以配置代理将其跨度传送到与代理 CloudWatch 日志相同的亚马逊日志组。使用此配置,跨度将转到spans日志流中/aws/bedrock-agentcore/runtimes/<agent_id>-<endpoint_name>,而不是共享aws/spans日志组。您可以将跨度、结构化日志和标准输出一起保存在一个每个代理的日志组中,将访问控制和加密范围限制为单个代理,并从单个位置导出遥测数据。

在支持的 AWS 区域中,新创建的代理使用代理的日志组作为默认跨度目标。在区域支持统一 span 目标之前创建的代理会将共享aws/spans日志组保留为其默认值。

您可以在代理运行时使用UNIFIED_TRACES_DESTINATION_ENABLED环境变量覆盖单个代理的默认值:

  • 要选择加入使用共享aws/spans日志组的现有代理,请设置UNIFIED_TRACES_DESTINATION_ENABLED=true。 AgentCore 然后将代理的跨度传送到其自己的日志组。

  • 要选择退出默认使用自己的日志组的代理,请设置UNIFIED_TRACES_DESTINATION_ENABLED=false。 AgentCore 然后将代理的跨度传送到共享aws/spans日志组。

AgentCore 要将跨度传送到代理的日志组,必须满足以下条件:

  • 在您的账户中启用 CloudWatch 交易搜索并将追踪区段发送到亚马逊 CloudWatch 日志。如果没有事务搜索,就 AgentCore 无法将跨度传送到代理的日志组。有关更多信息,请参阅启用 CloudWatch 事务搜索。

  • 将对代理日志组的logs:PutResourcePolicy操作授予代理的执行角色。 AgentCore 使用此权限允许 AWS X-Ray 向日志组传送跨度。有关更多信息,请参阅在运行 AgentCore 时运行代理的执行角色。

  • 该代理使用 ADOT 版本 0.18.0 或更高版本 ()。aws-opentelemetry-distro>=0.18.0早期版本会忽略跨度目标配置,并将跨度传送到共享aws/spans日志组。

更改跨度目标不会移动现有的跨度数据。 AgentCore 已经交付的 Span 仍保留在其原始日志组中。

在代理代码中为 AgentCore-hosted 代理启用可观察性

除了服务生成的指标外, AgentCore 您还可以收集跨度和跟踪数据以及代理代码发出的自定义指标。

当您将 Strand s或 CreWAI等代理框架与支持的第三方工具库一起使用时,该框架本身内置了对OTEL和GenAI语义约定的支持,也可以使用诸如以下的自动仪器包进行检测。 LangChain opentelemetry-instrument-langchain还可以通过定义自定义跟踪器来发送生成式 AI 语义约定遥测和跨度。 AgentCore 支持在代理框架中使用以下仪器库:

要在 CloudWatch 控制台生成式 AI 可观测性页面和亚马逊中查看这些数据 CloudWatch,您需要将开放遥测 AWS 发行版 (ADOT) SDK 添加到代理代码中。

注意

使用 AgentCore,您还可以查看未在运行 AgentCore 时运行的代理的指标。需要额外的设置步骤来配置非AgentCore 代理的遥测输出。要了解更多信息,请参阅为外部托管的代理启用可观察性中的说明。 AgentCore

要添加 ADOT 支持并启用 AgentCore 可观察性,请按照以下过程中的步骤操作。

为您的 AgentCore 代理添加可观察性

  1. 确保将您的框架配置为发出跟踪。例如,在 Strands 框架中,必须将跟踪器对象配置为指示 Strands 发出开放遥测 (OTEL) 日志。

  2. 将 ADOT SDK 和 boto3 添加到代理的依赖项中。对于 Python,将以下内容添加到您的requirements.txt文件中:

    aws-opentelemetry-distro>=0.18.0 boto3

    或者,你可以直接安装依赖项:

    pip install aws-opentelemetry-distro>=0.18.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 在下游标头中正确设置会话_id。

    要传播跟踪 ID,请使用traceId=<traceId>设置的参数调用 AgentCore 运行时。

    你还可以使用额外的标头来调用代理,以获得额外的可观察性选项。要了解更多信息,请参阅使用自定义标头使用自定义 AgentCore 标头增强运行时可观察性增强 AgentCore 运行时可观察性。

为托管在外部的代理启用可观察性 AgentCore

要为 AgentCore 运行时之外托管的代理启用可观察性,请首先按照前几节中的步骤启用 CloudWatch 交易搜索并将 ADOT SDK 添加到您的代码中。

如果您在 AWS Lambda 上托管代理,请在 AWS 发行版 OpenTelemetry网站上使用 AWS Lambda 层。 OpenTelemetry 将该层添加到您的函数,然后将AWS_LAMBDA_EXEC_WRAPPER环境变量设置为/opt/otel-instrument。然后,该层会自动整理您的函数。使用这种方法,您无需添加aws-opentelemetry-distro软件包或运行前面描述的opentelemetry-instrument命令。

不支持 ADOT Collector 以实现代理可观察性

代理可观察性不支持 ADOT 收集器。要从 AgentCore 运行时之外托管的代理发送遥测数据,必须使用 ADOT SDK 或 AWS Lambda 层。 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 AWS_GENAI_CONTENT_EXTRACTION_OPT_OUT=true # Keeps model payloads and tool request/response data on spans. Requires ADOT >=0.18.0. 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 L CloudWatch ogs 资源策略。该策略必须允许 X-Ray (xray.amazonaws.com) 调用logs:PutLogEvents该日志组。使用启用 CloudWatch 事务搜索中所示的相同策略,并输入日志组的 ARN。Resource没有此策略,就 X-Ray 无法将跨度传送到您的日志组。

注意

(可选)对于 Strands 和 CrewAI 以外的代理框架:您可能需要添加额外的 SDK 和代码来发送生成式 AI 语义约定遥测和跨度。 LangChain AgentCore 可观察性是 Amazon Bedrock 的一项功能 AgentCore,支持在代理框架中使用以下仪器库:* * Openll metry * OpenInference * Traceloop OpenLit https://www.traceloop.com/docs/introduction

会话 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 日志目标,则内存和网关资源的默认日志组名称的格式/aws/vendedlogs/bedrock-agentcore/{resource-type}/APPLICATION_LOGS/{resource-id}{resource-type}为memory或gateway。

对于内存和网关日志,您还可以使用 AgentCore 控制台在 Amazon S3 日志或 Firehose 流日志中配置日志目的地。要了解有关在 Amazon S3 或 Firehose 中存储日志的更多信息,请参阅在 Amazon S3 中上传、下载和处理对象和创建亚马逊数据 Firehose 传输流。

要详细了解内存和网关资源输出的 AgentCore 日志数据,请参阅提供的日志数据(内存)或提供的日志数据(网关)。

对于内置工具资源,该 AgentCore 服务默认不提供日志,但您可以从代码中输出自己的日志。如果您提供自己的日志输出,则需要手动配置日志目标以存储这些数据。

要查看每种资源类型默认 AgentCore 提供的可观测性数据,请参阅 Amazon Bedrock AgentCore 生成的可观测性数据。

使用控制台配置日志目的地

要在 AgentCore 控制台中配置内存或网关日志的日志目的地,请使用以下步骤。

例
Memory
  1. ===== 为内存资源配置日志传输(控制台)

  2. 在 AgentCore 控制台中打开 “内存” 页面。

  3. 在 “内存” 窗格中,选择要为其配置日志目标的内存。

  4. 向下滚动到日志传送窗格并选择添加。

  5. 从下拉列表中,选择要添加的日志目标的类型(CloudWatch 日志组、Amazon S3 存储桶或 Amazon Data Firehose)。

  6. 对于日志类型,选择 APPLICATION_ LOGS。

  7. 对于 Amazon S3 和 Firehose 目的地,输入配送目的地 AR N。对于 CloudWatch 日志,目标日志组已使用默认值填充。

  8. (可选)对于 CloudWatch 日志目的地,要更改默认日志组,请在目标日志组下输入新的日志组名称或选择现有日志组。

  9. (可选)要更改在每条日志记录中捕获的字段或日志的输出格式,请展开其他设置-可选,并将字段选择、输出格式和字段分隔符修改为所需的配置。

  10. 选择添加。

Gateway
  1. ===== 为网关资源配置日志传输(控制台)

  2. 在 AgentCore 控制台中打开网关页面。

  3. 在网关窗格中,选择要为其配置日志目标的网关。

  4. 向下滚动到日志传送窗格并选择添加。

  5. 从下拉列表中,选择要添加的日志目标的类型(CloudWatch 日志组、Amazon S3 存储桶或 Amazon Data Firehose)。

  6. 对于 Amazon S3 和 Firehose 目的地,输入配送目的地 AR N。对于 CloudWatch 日志,目标日志组已使用默认值填充。

  7. (可选)对于 CloudWatch 日志目的地,要更改默认日志组,请在目标日志组下输入新的日志组名称或选择现有日志组。

  8. (可选)要更改在每条日志记录中捕获的字段或日志的输出格式,请展开其他设置-可选,并将字段选择、输出格式和字段分隔符修改为所需的配置。

  9. 选择添加。

Runtime
  1. ===== 为代理运行时资源配置日志传输(控制台)

  2. 在 AgentCore 控制台中打开 “代理运行时” 页面。

  3. 在运行时代理窗格中,选择要为其配置日志目标的运行时代理。

  4. 向下滚动到日志传输窗格,然后从添加下拉列表中选择日志目标 ——亚马逊 CloudWatch 日志、亚马逊 S3 或 Amazon Data Firehose。

  5. 配置以下日志传输详细信息,然后选择 “添加”:

    • 对于日志类型,选择 APPLICATION_ LOGS。

    • 如果使用 Amazon Log CloudWatch s 作为日志目标,请指定目标日志组。

    • 如果使用 Amazon S3 作为日志记录目标,请指定目标 Amazon S3 存储桶。

    • 如果使用 Amazon Data Firehose 作为记录目的地,请指定目标传输流。

  6. 验证日志传送状态是否设置为交付处于活动状态。

Built-in tools
  1. ===== 为内置工具资源配置日志传输(控制台)

  2. 在 AgentCore 控制台中打开Built-in 工具页面。

  3. 在Built-in 工具窗格中,在代码解释器工具或浏览器工具选项卡中,选择要为其配置日志目标的代码解释器工具或浏览器工具。

  4. 向下滚动到日志传输窗格,然后从添加下拉列表中选择日志目标 ——亚马逊 CloudWatch 日志、亚马逊 S3 或 Amazon Data Firehose。

  5. 配置以下日志传输详细信息,然后选择 “添加”:

    • 对于日志类型,选择 APPLICATION_ LOGS。

    • 如果使用 Amazon Log CloudWatch s 作为日志目标,请指定目标日志组。

    • 如果使用 Amazon S3 作为日志记录目标,请指定目标 Amazon S3 存储桶。

    • 如果使用 Amazon Data Firehose 作为记录目的地,请指定目标传输流。

  6. 验证日志传送状态是否设置为交付处于活动状态。

Identity
  1. WorkloadIdentity 日志传送启用在相关的资源级别上处理,包括代理运行时或代理网关资源。

    为关联资源配置 WorkloadIdentity 日志传输(控制台)

  2. 在 AgentCore 控制台中打开 “网关” 或 “代理运行时” 页面,然后选择要启用 WorkloadIdentity 日志记录的代理或网关。

  3. 在身份选项卡中,向下滚动到日志传输窗格,然后从添加下拉列表中选择日志记录目标 ——亚马逊 CloudWatch 日志、亚马逊 S3 或 Amazon Data Firehose。

  4. 配置以下日志传输详细信息,然后选择 “添加”:

    • 对于日志类型,选择 APPLICATION_ LOGS。

    • 如果使用 Amazon Log CloudWatch s 作为日志目标,请指定目标日志组。

    • 如果使用 Amazon S3 作为日志记录目标,请指定目标 Amazon S3 存储桶。

    • 如果使用 Amazon Data Firehose 作为记录目的地,请指定目标传输流。

  5. 验证日志传送状态是否设置为交付处于活动状态。

CloudWatch 使用控制台将跟踪交付配置为

本节介绍如何启用跟踪交付 CloudWatch 以跟踪应用程序中的交互流程,从而使您能够可视化请求、识别性能瓶颈、排除错误和优化性能。

例
Memory
  1. ===== 配置内存资源跟踪(控制台)

  2. 在 AgentCore 控制台中打开 “内存” 页面。

  3. 在 “内存” 窗格中,选择要启用跟踪的内存资源。

  4. 在 “跟踪” 窗格中,选择 “编辑”,将控件切换为 “启用”,然后选择 “保存” 。

Runtime
  1. ===== 为运行时资源配置跟踪(控制台)

  2. 在 AgentCore 控制台中打开代理运行时页面。

  3. 在运行时代理窗格中,选择要为其启用跟踪的代理。

  4. 在 “跟踪” 窗格中,选择 “编辑”,将控件切换为 “启用”,然后选择 “保存” 。

    AgentCore 启用对选定代理的跟踪。跨度出现在代理的日志组 (/aws/bedrock-agentcore/runtimes/<agent_id>-<endpoint_name>) 中,或者出现在使用共享跨度目标的代理的aws/spans日志组中。有关更多信息,请参阅 Amazon Bedrock AgentCore 运行时中托管的代理的跨度目标。

    为运行时资源配置 WorkloadIdentity 跟踪(控制台)

  5. 在 AgentCore 控制台中打开代理运行时页面。

  6. 在 “运行时代理” 窗格中,选择 “身份” 选项卡,然后选择要启用 WorkloadIdentity 跟踪的代理。

  7. 在 “跟踪” 窗格中,选择 “编辑”,将控件切换为 “启用”,然后选择 “保存” 。

    WorkloadIdentity 将为所选代理启用跟踪,aws/spans日志组中将提供跨度。

Built-in tools
  1. ===== 为内置工具(控制台)配置跟踪

  2. 在 AgentCore 控制台中打开Built-in 工具页面。

  3. 在Built-in 工具窗格中,在代码解释器工具或浏览器工具选项卡中,选择要启用跟踪的代码解释器工具或浏览器工具。

  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. 在 “跟踪” 窗格中,选择 “编辑”,将控件切换为 “启用”,然后选择 “保存” 。

使用配置 CloudWatch 资源 AWS SDK

为日志和跟踪配置传送源 (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(以前的服务)和用于跟踪的抽样决策。Sampling=1 表示 100% 采样。父级也是 X-Ray Trace 格式。如果未提供,OTEL 将自动生成跟踪 ID。

traceparent

W3C 标准跟踪标头

00-4bf92f3577b34da6a3ce929d0e0e0e0e0e4736-00f067a0ba902ba902b7-01

W3C 格式,包括版本、跟踪 ID、父 ID 和标志。使用现代跟踪系统时,需要进行跨服务跟踪关联。

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

AgentCore 会话标识符

a1b2c3d4-5678-90ab-cdef-exampleAAAAA

标识 AgentCore 系统中的用户会话。帮助进行基于会话的分析和故障排除。

mcp 会话 ID

MCP 会话标识符

mcp-a1b2c3d4-5678-90ab-cdef-exampleAAAAA

识别托管云平台中的会话。支持对整个 MCP 生态系统的操作进行跟踪。

追踪状态

其他跟踪状态信息

congo=t61rc E,rojo=00f067aa0ba902b7 WkgMz

Vendor-specific 追踪信息。除了 traceparent 中的内容外,还为追踪系统提供了其他背景信息。

行李

分布式跟踪的上下文传播

userid=Alice,服务器区域=US-East-1

Key-value 配对,跨服务边界传播用户定义的属性,以进行上下文记录和分析。

使用自定义标头增强 AgentCore 内置工具的可观察性

您可以使用其他 HTTP 标头来调用您的 Built-in 工具,以提供增强的可观察性选项。在集成以下 T Build-in ools API 时,您可以添加以下可选标头以增强可观察性和跟踪能力:

以下 API 支持自定义标头:

  • StartCodeInterpreterSession

  • InvokeCodeInterpreter

  • StopCodeInterpreterSession

  • StartBrowserSession

  • StopBrowserSession

标题 说明 示例值 技术解释

X-Amzn-Trace-Id

用于跟踪请求的跟踪 ID(X-Ray 格式)

root=1-5759e988-bd862e3fe1be46a994272793;parent=53995c3f42cd8ad8;sampled=1

用于跨 AWS 服务的分布式跟踪。包含根 ID(请求来源)、父 ID(以前的服务)和用于跟踪的抽样决策。Sampling=1 表示 100% 采样。父级也是 X-Ray Trace 格式。如果未提供,OTEL 将自动生成跟踪 ID。

traceparent

W3C 标准跟踪标头

00-4bf92f3577b34da6a3ce929d0e0e0e0e0e4736-00f067a0ba902ba902b7-01

W3C 格式,包括版本、跟踪 ID、父 ID 和标志。使用现代跟踪系统时,需要进行跨服务跟踪关联。

使用自定义标头增强 AgentCore 身份可观察性

您可以使用其他 HTTP 标头来调用您的身份资源,以提供增强的可观察性选项。在集成以下身份 API 时,您可以添加以下可选标头以增强可观察性和跟踪能力:

以下 API 支持自定义标头:

  • GetWorkloadAccessToken

  • GetWorkloadAccessTokenForJWT

  • GetWorkloadAccessTokenForUserId

  • GetResourceOauth2Token

  • GetResourceAPIKey

标题 说明 示例值 技术解释

X-Amzn-Trace-Id

用于跟踪请求的跟踪 ID(X-Ray 格式)

root=1-5759e988-bd862e3fe1be46a994272793;parent=53995c3f42cd8ad8;sampled=1

用于跨 AWS 服务的分布式跟踪。包含根 ID(请求来源)、父 ID(以前的服务)和用于跟踪的抽样决策。Sampling=1 表示 100% 采样。父级也是 X-Ray Trace 格式。如果未提供,OTEL 将自动生成跟踪 ID。

可观测性最佳实践

在中实现代理的可观察性时,请考虑以下最佳实践: AgentCore

  • 使用一致的会话 ID-尽可能为相关请求重复使用相同的会话 ID,以保持交互之间的上下文。

  • 实现分布式跟踪-使用提供的标头在应用程序组件之间启用端到端跟踪。

  • 添加自定义属性-使用自定义属性增强您的跟踪和指标,为故障排除和分析提供更多背景信息。

  • 监控资源使用情况-注意内存使用量指标以优化代理的性能。

  • 设置警报-配置 CloudWatch 警报以帮助在潜在问题影响用户之前通知您。

使用其他可观测性平台

要将 AgentCore 运行时中托管的代理与其他可观测性平台集成以捕获和查看遥测输出,请设置以下环境变量:

DISABLE_ADOT_OBSERVABILITY=true

将此变量设置为true取消设置 AgentCore 运行时的默认 ADOT 环境变量,从而确保未设置任何默认 ADOT 配置。