View a markdown version of this page

Amazon Bedrock AgentCore リソースにオブザーバビリティを追加する - Amazon Bedrock AgentCore

Amazon Bedrock AgentCore リソースにオブザーバビリティを追加する

Amazon Bedrock AgentCore には、AgentCore ランタイム、メモリ、ゲートウェイ、組み込みツール、および ID リソースタイプのリソースのパフォーマンスをモニタリングするための組み込みメトリクスが多数用意されています。このデフォルトデータは Amazon CloudWatch で使用できます。CloudWatch コンソールでオブザーバビリティデータの全範囲を表示したり、エージェントのカスタムランタイムメトリクスを出力したりするには、 AWS Distro for Open Telemetry (ADOT) SDK を使用してコードを計測する必要があります。

CloudWatch でオブザーバビリティダッシュボードを表示するには、Amazon CloudWatch GenAi Observability ページを開きます。

CloudWatch コンソールの生成 AI オブザーバビリティページと CloudWatch Logs でオブザーバビリティメトリクスを表示するようにリソースを設定する方法の詳細については、以下のセクションを参照してください。

ヒント

ADOT SDK を使用したカスタムメトリクスの出力は、AgentCore ランタイム外で実行されているエージェントでもサポートされています。これらのエージェントのオブザーバビリティを有効にする方法については、AgentCore の外部でホストされているエージェントのオブザーバビリティを有効にする」を参照してください。

AgentCore オブザーバビリティの有効化

AgentCore サービスによって生成されたメトリクス、スパン、トレースを表示するには、まず 1 回限りのセットアップを完了して Amazon CloudWatch トランザクション検索を有効にする必要があります。メモリリソースのサービスが提供するスパンを表示するには、メモリの作成時にトレースを有効にする必要もあります。詳細については、AgentCore ランタイム、メモリ、ゲートウェイ、組み込みツール、および ID リソースのオブザーバビリティを有効にする」を参照してください。

以下のセクションでは、これらのセットアップアクションを実行し、エージェントコードでオブザーバビリティを有効にする方法について説明します。

CloudWatch トランザクション検索の有効化

CloudWatch トランザクション検索を有効にするには、CloudWatch コンソールを使用するか、コマンドラインインターフェイス (AWS CLI) またはいずれかの AWS SDKs AWS を介して API を使用します。

トランザクション検索を有効にするには、次のいずれかの手順を使用します。

CloudWatch console
  1. ======= CloudWatch コンソールで CloudWatch トランザクション検索を有効にするには

  2. CloudWatch コンソールを開きます。

  3. ナビゲーションペインで、Application Signals (APM) を展開し、トランザクション検索を選択します。

  4. [トランザクション検索の有効化] を選択します。

  5. チェックボックスをオンにして、構造化ログとしてスパンを取り込みます。

  6. [保存] を選択します。

API
  1. ====== API を使用して CloudWatch トランザクション検索を有効にするには

  2. AWS CLI または AWS SDK を使用してトランザクション検索を有効にする場合は、まず、PutResourcePolicy でリソースベースのポリシーを追加して、CloudWatch Logs にスパンを取り込むために必要なアクセス許可を設定します。

    次の CLI コマンドは、CloudWatch Logs AWS にトレースを送信するアクセス許可を AWS X-Ray に付与するリソースポリシーを追加します。

    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 ランタイムでホストされるエージェントのスパン送信先

ヒント

スパン、構造化ログ、標準出力など、エージェントのテレメトリをすべて、エージェントごとに 1 つのロググループに統合できるようになりました。

Amazon Bedrock AgentCore の一機能である AgentCore ランタイムを使用すると、エージェントのログと同じ Amazon CloudWatch ロググループにスパンを配信するようにエージェントを設定できます。この設定では、スパンは共有spansロググループではなく /aws/bedrock-agentcore/runtimes/<agent_id>-<endpoint_name>aws/spansログストリームに移動します。スパン、構造化ログ、標準出力をエージェントごとに 1 つのロググループにまとめ、アクセスコントロールと暗号化の範囲を個々のエージェントに設定し、テレメトリを 1 つの場所からエクスポートできます。

サポートされている AWS リージョンでは、新しく作成されたエージェントはエージェントのロググループをデフォルトのスパン送信先として使用します。リージョンが統合スパン送信先をサポートする前に作成されたエージェントは、共有aws/spansロググループをデフォルトとして保持します。

個々のエージェントのデフォルトを、エージェントのランタイムの UNIFIED_TRACES_DESTINATION_ENABLED環境変数で上書きできます。

  • 共有aws/spansロググループを使用する既存のエージェントをオプトインするには、 を設定しますUNIFIED_TRACES_DESTINATION_ENABLED=true。次に、AgentCore はエージェントのスパンを独自のロググループに配信します。

  • デフォルトでは、独自のロググループを使用するエージェントをオプトアウトするには、 を設定しますUNIFIED_TRACES_DESTINATION_ENABLED=false。次に、AgentCore はエージェントのスパンを共有aws/spansロググループに配信します。

AgentCore がエージェントのロググループにスパンを配信するには、次の条件が満たされている必要があります。

  • アカウントで 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 では、サービス生成メトリクスに加えて、エージェントコードから出力されるカスタムメトリクスだけでなく、スパンとトレースデータを収集することもできます。

サポートされているサードパーティーの計測ライブラリで StrandsLangChain 、または CrewAI などのエージェントフレームワークを使用する場合、フレームワーク自体には 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 フレームワークでは、トレーサーオブジェクトは、オープンテレメトリ (OTEL) ログを出力するように Strands に指示するように設定する必要があります。

  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 SDK を追加します。

AWS Lambda でエージェントをホストする場合は、 AWS Distro AWS for OpenTelemetry ウェブサイトの Lambda Layer for OpenTelemetry を使用します。関数に Layer を追加し、AWS_LAMBDA_EXEC_WRAPPER環境変数を に設定します/opt/otel-instrument。次に、レイヤーは関数を自動計測します。この方法では、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で を呼び出すことを許可する必要があります。でロググループの ARN を使用して、CloudWatch トランザクション検索の有効化」に示されているのと同じポリシーを使用しますResource。このポリシーがないと、X-Ray はロググループにスパンを配信できません。

注記

(オプション) Strands、LangChain、および CrewAI 以外のエージェントフレームワークの場合: 生成 AI セマンティック規則のテレメトリとスパンを送信するために、追加の SDK とコードを追加する必要がある場合があります。Amazon Bedrock AgentCore の一機能である AgentCore Observability は、エージェントフレームワークで次の計測ライブラリの使用をサポートしています: * 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 ランタイム、メモリ、ゲートウェイ、組み込みツール、および ID リソースのオブザーバビリティを有効にする

AgentCore ランタイムリソース (エージェント) を作成すると、デフォルトで、AgentCore ランタイムはサービスが提供するログの CloudWatch ロググループを作成します。ただし、メモリ、ゲートウェイ、組み込みツールリソースの場合、AgentCore はログ送信先を自動的に設定しません。

メモリおよびゲートウェイリソースの場合、コンソールまたは AWS SDK を使用してログの送信先を設定できます。コンソールを使用して CloudWatch Logs の送信先を設定する場合、メモリとゲートウェイリソースのデフォルトのロググループ名は /aws/vendedlogs/bedrock-agentcore/{resource-type}/APPLICATION_LOGS/{resource-id} の形式になります。ここで、 {resource-type}memoryまたは ですgateway

メモリログとゲートウェイログの場合、AgentCore コンソールを使用して Amazon S3 ログまたは Firehose ストリームログのログ送信先を設定することもできます。Amazon S3 または Firehose にログを保存する方法の詳細については、Amazon S3」および「Amazon Data Firehose 配信ストリームの作成」を参照してください。

AgentCore によるメモリおよびゲートウェイリソースのログデータ出力の詳細については、「提供ログデータ (メモリ)」または「提供ログデータ (ゲートウェイ)」を参照してください。

組み込みツールリソースの場合、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. [Add] (追加) を選択します。

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. [Add] (追加) を選択します。

Runtime
  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. ログ配信ステータスが配信アクティブに設定されていることを確認します。

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. ログ配信ステータスが Delivery active に設定されていることを確認します。

Identity
  1. WorkloadIdentity ログ配信の有効化は、エージェントランタイムやエージェントゲートウェイリソースなど、関連するリソースレベルで処理されます。

    関連付けられたリソースの WorkloadIdentity ログ配信を設定するには (コンソール)

  2. AgentCore コンソールで Gateway または Agent Runtime ページを開き、WorkloadIdentity ログ記録を有効にするエージェントまたはゲートウェイを選択します。

  3. ID タブで、ログ配信ペインまでスクロールダウンし、Add ドロップダウンから、Amazon CloudWatch Logs、Amazon Amazon S3、または Amazon Data Firehose のいずれかのログ記録先を選択します。

  4. 次のログ配信の詳細を設定し、追加 を選択します。

    • ログタイプ で、APPLICATION_LOGS を選択します。

    • Amazon CloudWatch Logs をログ記録先として使用する場合は、送信先ロググループを指定します。

    • Amazon S3 をログ記録先として使用する場合は、送信先の Amazon S3 バケットを指定します。

    • Amazon Data Firehose をログ記録先として使用する場合は、送信先配信ストリームを指定します。

  5. ログ配信ステータスが Delivery active に設定されていることを確認します。

コンソールを使用して 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. ランタイムエージェントペインで、ID タブを選択し、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. ====== ID リソースのトレースを設定するには (コンソール)

  2. AgentCore コンソールで ID ページを開きます。

  3. ID ペインで、トレースを有効にする 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 (以前のサービス)、トレースのサンプリング決定が含まれます。Sampling=1 は、100% サンプリングを意味します。親も X-Ray トレース形式です。OTEL は、指定しない場合、トレース IDs を自動生成します。

トレースペアレント

W3C 標準トレースヘッダー

00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

バージョン、トレース ID、親 ID、フラグを含む W3C 形式。最新のトレースシステムを使用する場合、サービス間のトレース相関に必要です。

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

AgentCore セッション識別子

a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa

AgentCore システム内のユーザーセッションを識別します。セッションベースの分析とトラブルシューティングに役立ちます。

mcp-session-id

MCP セッション識別子

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

Managed Cloud Platform でセッションを識別します。MCP エコシステム全体のオペレーションのトレースを有効にします。

tracestate

追加のトレース状態情報

congo=t61rcWkgMzE,rojo=00f067aa0ba902b7

ベンダー固有のトレース情報。トレース親に含まれるもの以外のトレースシステムの追加のコンテキストを提供します。

荷物

分散トレースのコンテキスト伝達

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 (以前のサービス)、トレースのサンプリング決定が含まれます。Sampling=1 は、100% サンプリングを意味します。親も X-Ray トレース形式です。OTEL は、指定しない場合、トレース IDs を自動生成します。

トレースペアレント

W3C 標準トレースヘッダー

00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01

バージョン、トレース ID、親 ID、フラグを含む W3C 形式。最新のトレースシステムを使用する場合、サービス間のトレース相関に必要です。

カスタムヘッダーによる AgentCore ID オブザーバビリティの強化

追加の HTTP ヘッダーを使用して ID リソースを呼び出し、オブザーバビリティオプションを強化できます。次の ID 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 (以前のサービス)、トレースのサンプリング決定が含まれます。Sampling=1 は、100% サンプリングを意味します。親も X-Ray トレース形式です。OTEL は、指定しない場合、トレース IDs を自動生成します。

オブザーバビリティのベストプラクティス

AgentCore でエージェントのオブザーバビリティを実装するときは、次のベストプラクティスを考慮してください。

  • 一貫したセッション IDs を使用する - 可能であれば、同じセッション ID を関連するリクエストに再利用して、インタラクション全体でコンテキストを維持します。

  • 分散トレースの実装 - 提供されたヘッダーを使用して、アプリケーションコンポーネント全体でend-to-endのトレースを有効にします。

  • カスタム属性の追加 - トラブルシューティングと分析のための追加のコンテキストを提供するカスタム属性を使用して、トレースとメトリクスを強化します。

  • リソース使用状況のモニタリング - メモリ使用状況メトリクスに注意して、エージェントのパフォーマンスを最適化します。

  • アラートの設定 - ユーザーに影響を与える前に潜在的な問題を通知するのに役立つように CloudWatch アラームを設定します。

他のオブザーバビリティプラットフォームの使用

AgentCore ランタイムでホストされているエージェントを他のオブザーバビリティプラットフォームと統合してテレメトリ出力をキャプチャして表示するには、次の環境変数を設定します。

DISABLE_ADOT_OBSERVABILITY=true

この変数を に設定すると、AgentCore ランタイムのデフォルトの ADOT 環境変数の設定trueが解除され、デフォルトの ADOT 設定が設定されなくなります。