View a markdown version of this page

Commencez avec AgentCore Observability - Base rocheuse de l'Amazonie AgentCore

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Commencez avec AgentCore Observability

Amazon Bedrock AgentCore Observability vous permet de suivre, de déboguer et de surveiller les performances des agents dans les environnements de production. Ce guide vous aide à implémenter des fonctionnalités d'observabilité dans vos applications d'agent.

Conditions préalables

Avant de commencer, assurez-vous d'avoir :

  • AWS Compte avec informations d'identification configurées (aws configure) avec accès au modèle Foundation que vous souhaitez utiliser activé.

  • Python 3.10+ installé

  • Activez la recherche de transactions sur Amazon CloudWatch. Les nouveaux utilisateurs ne doivent activer la recherche de CloudWatch transactions qu'une seule fois pour voir les spans et les traces de Bedrock Amazon Bedrock AgentCore

  • (Non-runtime agents uniquement) Ajoutez la OpenTelemetry bibliothèque — Include aws-opentelemetry-distro (ADOT) dans votre fichier requirements.txt. Si vous hébergez votre agent sur AWS Lambda, utilisez plutôt la couche AWS Lambda pour OpenTelemetry sur le site AWS Distro for OpenTelemetry .

  • (Non-runtime agents uniquement) Assurez-vous que votre framework est configuré pour émettre des traces (par exemple, strands-agents[otel] package). Il se peut que vous deviez parfois inclure l'auto-instrumenteur de votre framework d'agents (par exemple,opentelemetry-instrumentation-langchain).

Amazon Bedrock AgentCore Observability propose deux méthodes pour configurer la surveillance afin de répondre aux différents besoins d'infrastructure :

  1. Agents Amazon Bedrock AgentCore Runtime-hosted

  2. Non-runtime agents hébergés

Dans le cadre d'une configuration unique par AWS compte, les nouveaux utilisateurs doivent activer la recherche de transactions sur Amazon CloudWatch. Vous pouvez le faire de deux manières, via l'API et via la CloudWatch console.

Une fois la recherche de transactions activée, il faut compter dix minutes pour que les portées soient disponibles pour la recherche et l’analyse. Choisissez l'une des options ci-dessous :

Option 1 : activer la recherche de transactions à l'aide d'une API

Pour activer la recherche de transactions à l'aide de l'API

  1. Créez une politique qui autorise l'accès aux périodes d'ingestion dans les CloudWatch journaux à l'aide AWS de l'interface de ligne de commande.

    Un exemple est illustré ci-dessous sur la façon de formater votre commande AWS CLI avecPutResourcePolicy.

    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:xray:region:account-id:*" }, "StringEquals": { "aws:SourceAccount": "account-id" } } } ]}'
  2. Configurez la destination des segments de trace.

    Un exemple est illustré ci-dessous sur la façon de formater votre commande AWS CLI avecUpdateTraceSegmentDestination.

    aws xray update-trace-segment-destination --destination CloudWatchLogs
  3. Facultatif Configurez le nombre de spans à indexer.

    Configurez le pourcentage d'échantillonnage souhaité avecUpdateIndexingRule.

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

Option 2 : activer la recherche de transactions dans la CloudWatch console

Pour activer la recherche de transactions dans la CloudWatch console

  1. Ouvrez la CloudWatch console à l'adresse https://console.aws.amazon.com/cloudwatch/.

  2. Dans le volet de navigation, sous Configuration, choisissez Paramètres.

  3. Sélectionnez Compte et choisissez l'onglet X-Ray Traces.

  4. Dans la section Recherche de transactions, choisissez Afficher les paramètres.

  5. Sur la page qui s'ouvre, choisissez Modifier.

  6. Sélectionnez Activer la recherche de transactions.

  7. Sélectionnez Pour X-Ray les utilisateurs et entrez le pourcentage de traces à indexer. Vous pouvez indexer gratuitement 1 % des traces et ajuster ce pourcentage ultérieurement en fonction de vos besoins.

  8. Choisissez Enregistrer. Attendez que la durée d'ingestion OpenTelemetry soit activée avant d'envoyer des traces.

Passons maintenant à l'exploration des deux manières de configurer l'observabilité.

Étape 2 : activer l'observabilité pour les agents hébergés sur Amazon Bedrock AgentCore Runtime

Les AgentCore Runtime-hosted agents Amazon Bedrock sont déployés et exécutés directement dans l' AgentCore environnement Amazon Bedrock, fournissant une instrumentation automatique avec une configuration minimale. Lorsque vous déployez un agent à l'aide de l' AgentCore interface de ligne de commande, le moteur d'exécution instrumente automatiquement votre agent. Aucune bibliothèque ou configuration OTEL supplémentaire n'est nécessaire. OpenTelemetry

Pour un exemple complet, reportez-vous aux exemples d'AgentCore observabilité sur GitHub

Créez votre projet d'agent

Créez un nouveau projet à l'aide de la AgentCore CLI. Cela configure le dossier de votre projet, votre environnement virtuel et vos dépendances :

npm install -g @aws/agentcore agentcore create \ --project-name StrandsObservability \ --name StrandsClaudeGettingStarted \ --language Python \ --framework Strands \ --model-provider Bedrock \ --memory none cd StrandsObservability/app/StrandsClaudeGettingStarted uv add strands-agents-tools cd ../..

Dans le répertoire des agents du projet, remplacez le code d'agent par défaut par votre propre logique d'agent. Voici un exemple utilisant le SDK Strands Agents :

## app/StrandsClaudeGettingStarted/main.py from strands import Agent, tool from strands_tools import calculator from bedrock_agentcore.runtime import BedrockAgentCoreApp from strands.models import BedrockModel app = BedrockAgentCoreApp() @tool def weather(): """Get weather""" return "sunny" model = BedrockModel( model_id="us.anthropic.claude-3-7-sonnet-20250219-v1:0", ) agent = Agent( model=model, tools=[calculator, weather], system_prompt="You're a helpful assistant. You can do simple math calculation, and tell the weather." ) @app.entrypoint def strands_agent_bedrock(payload): """Invoke the agent with a payload""" user_input = payload.get("prompt") if not isinstance(user_input, str) or not user_input: return "Error: 'prompt' must be a non-empty string" response = agent(user_input) return response.message['content'][0]['text'] if __name__ == "__main__": app.run()

Déployez et invoquez votre agent

Déployez l'agent sur AgentCore Runtime. La AgentCore CLI gère le packaging, le déploiement et l'instrumentation OTEL automatique :

agentcore deploy

Après le déploiement, votre agent s'exécute sur AgentCore Runtime et est automatiquement instrumenté à l'aide OpenTelemetry de. Appelez votre agent et consultez les traces, les sessions et les mesures sur le tableau de bord GenAI Observability d'Amazon : CloudWatch

agentcore invoke

Vous pouvez également appeler votre agent par programmation à l'aide du SDK : AWS

import boto3, json client = boto3.client('bedrock-agentcore') response = client.invoke_agent_runtime( agentRuntimeArn="YOUR_AGENT_RUNTIME_ARN", runtimeSessionId="my-observability-session-001", payload=json.dumps({"prompt": "What is 2 + 2?"}), qualifier="DEFAULT" ) print(json.loads(response['response'].read()))

Étape 3 : activer l'observabilité pour les agents n'appartenant pas à Amazon Bedrock AgentCore-hosted

Pour les agents qui s'exécutent en dehors de l' AgentCore environnement d'exécution Amazon Bedrock, vous pouvez fournir les mêmes fonctionnalités de surveillance aux agents déployés sur votre propre infrastructure. Cela permet une observabilité constante quel que soit l'endroit où vos agents travaillent. Suivez les étapes ci-dessous pour configurer les variables d'environnement nécessaires à l'observation de vos agents.

Pour un exemple complet, consultez l'exemple Agents on Amazon EKS sur le GitHub site Web.

Configurer AWS variables d’environnement

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

Configurer la CloudWatch journalisation

Créez un groupe de journaux et un flux de journaux pour votre agent dans Amazon CloudWatch , que vous pourrez utiliser pour configurer les variables d'environnement ci-dessous.

Configuration des variables d' OpenTelemetry environnement

export AGENT_OBSERVABILITY_ENABLED=true # Activates the ADOT pipeline export OTEL_PYTHON_DISTRO=aws_distro # Uses AWS Distro for OpenTelemetry export OTEL_PYTHON_CONFIGURATOR=aws_configurator # Sets AWS configurator for ADOT SDK export OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf # Configures export protocol export OTEL_EXPORTER_OTLP_LOGS_HEADERS=x-aws-log-group=<YOUR-LOG-GROUP>,x-aws-log-stream=<YOUR-LOG-STREAM>,x-aws-metric-namespace=<YOUR-NAMESPACE> # Directs logs to CloudWatch groups export OTEL_EXPORTER_OTLP_TRACES_HEADERS=x-aws-log-group=<YOUR-LOG-GROUP>,x-aws-log-stream=<YOUR-TRACES-LOG-STREAM> # (Optional) Directs spans to your log group instead of the aws/spans log group. Requires ADOT version 0.18.0 or later. export OTEL_RESOURCE_ATTRIBUTES=service.name=<YOUR-AGENT-NAME> # Identifies your agent in observability data export OTEL_AWS_APPLICATION_SIGNALS_ENABLED=false # AWS Lambda Layer for OpenTelemetry only: disables Application Signals export OTEL_LOGS_EXPORTER=otlp # AWS Lambda Layer for OpenTelemetry only: exports logs over OTLP export OTEL_METRICS_EXPORTER=awsemf # AWS Lambda Layer for OpenTelemetry only: exports metrics as CloudWatch EMF

Remplacez-le <YOUR-AGENT-NAME> par un nom unique pour identifier cet agent dans le tableau de bord et les journaux GenAI Observability.

Note

Si vous choisissez OTEL_EXPORTER_OTLP_TRACES_HEADERS de livrer des spans à votre propre groupe de journaux, vous devez également ajouter une politique de ressources Amazon CloudWatch Logs. La politique doit autoriser X-Ray (xray.amazonaws.com) à appeler logs:PutLogEvents ce groupe de journaux. Appliquez la même politique que celle indiquée dans Activer la recherche de transactions à l'aide d'une API, en saisissant l'ARN de votre groupe de journauxResource. Sans cette politique, X-Ray vous ne pouvez pas fournir de spans à votre groupe de journaux.

Créez un agent localement

# Create agent.py - Strands agent that is a weather assistant from strands import Agent from strands_tools import http_request # Define a weather-focused system prompt WEATHER_SYSTEM_PROMPT = """You are a weather assistant with HTTP capabilities. You can: 1. Make HTTP requests to the National Weather Service API 2. Process and display weather forecast data 3. Provide weather information for locations in the United States When retrieving weather information: 1. First get the coordinates or grid information using https://api.weather.gov/points/{latitude},{longitude} or https://api.weather.gov/points/{zipcode} 2. Then use the returned forecast URL to get the actual forecast When displaying responses: - Format weather data in a human-readable way - Highlight important information like temperature, precipitation, and alerts - Handle errors appropriately - Convert technical terms to user-friendly language Always explain the weather conditions clearly and provide context for the forecast. """ # Create an agent with HTTP capabilities weather_agent = Agent( system_prompt=WEATHER_SYSTEM_PROMPT, tools=[http_request], # Explicitly enable http_request tool ) response = weather_agent("What's the weather like in Seattle?") print(response)

Exécutez votre agent avec une commande d'instrumentation automatique

aws-opentelemetry-distroDans votre fichier requirements.txt, la opentelemetry-instrument commande va :

  • Chargez votre configuration OTEL à partir de vos variables d'environnement

  • Instrumentez automatiquement Strands, les appels Amazon Bedrock, les outils et bases de données des agents, ainsi que les autres demandes effectuées par l'agent

  • Envoyer des traces à CloudWatch

  • Vous permettre de visualiser le processus de prise de décision de l'agent dans le tableau de bord GenAI Observability

Utilisez la commande suivante pour exécuter votre agent avec une instrumentation automatique :

opentelemetry-instrument python agent.py

Si vous hébergez votre agent sur AWS Lambda, utilisez la couche AWS Lambda pour OpenTelemetry sur le site Web AWS Distro for. OpenTelemetry Ajoutez la couche à votre fonction, puis définissez la variable d'AWS_LAMBDA_EXEC_WRAPPERenvironnement sur/opt/otel-instrument. La couche instrumente ensuite automatiquement votre fonction. Avec cette approche, vous n'avez pas besoin d'ajouter le aws-opentelemetry-distro package ou d'exécuter la opentelemetry-instrument commande décrite précédemment.

ADOT Collector n'est pas pris en charge pour l'observabilité des agents

Le collecteur ADOT n'est pas pris en charge pour l'observabilité des agents. Pour envoyer des données télémétriques depuis un agent hébergé en dehors de l' AgentCore environnement d'exécution, vous devez utiliser le SDK ADOT ou la AWS couche Lambda pour. OpenTelemetry

Vous pouvez désormais consulter vos traces, sessions et métriques sur le tableau de bord d'observabilité GenAI sur Amazon CloudWatch avec la valeur YOUR-AGENT-NAME que vous avez configurée dans vos variables d'environnement.

Pour corréler les traces entre plusieurs agents, vous pouvez associer un identifiant de session à vos données de télémétrie à l'aide des bagages : OpenTelemetry

from opentelemetry import baggage, context ctx = baggage.set_baggage("session.id", session_id)

Étape 4 : Observez votre agent grâce à l'observabilité GenAI sur Amazon CloudWatch

Après avoir implémenté l'observabilité, vous pouvez consulter les données collectées dans CloudWatch :

Observez votre agent

  1. Ouvrez l'observabilité GenAI sur console CloudWatch

  2. Vous pouvez consulter les données relatives aux appels de modèles et aux agents sur Bedrock Amazon Bedrock sur AgentCore le tableau de bord.

  3. Dans l'onglet Bedrock Agentcore, vous pouvez consulter la vue des agents, la vue des sessions et la vue des traces.

  4. La vue Agents répertorie tous vos agents en cours d'exécution et non en cours d'exécution. Vous pouvez également choisir un agent et afficher des détails supplémentaires tels que les mesures d'exécution, les sessions et les traces spécifiques à un agent.

  5. Dans l'onglet Affichage des sessions, vous pouvez parcourir toutes les sessions associées aux agents.

  6. Dans l'onglet Affichage des traces, vous pouvez consulter les informations relatives aux traces et à l'étendue des agents. Explorez également la trajectoire et la chronologie de la trace en choisissant une trace.

Afficher les connexions CloudWatch

Pour afficher les connexions CloudWatch

  1. Ouvrez la console CloudWatch .

  2. Dans le volet de navigation de gauche, développez Journaux et sélectionnez Groupes de journaux

  3. Recherchez le groupe de journaux de votre agent :

    • Logs standard (stdout/stderr) Emplacement : /aws/bedrock-agentcore/runtimes/<agent_id>-<endpoint_name>/[runtime-logs] <UUID>

    • Logos structurés OTEL : /aws/bedrock-agentcore/runtimes/<agent_id>-<endpoint_name>/runtime-logs

Afficher les traces et les étendues

Pour afficher les traces et les étendues

  1. Ouvrez la console CloudWatch .

  2. Sélectionnez Recherche de transactions dans la barre de navigation de gauche

  3. Emplacement : le flux de spans journaux dans le groupe de journaux de l'agent (/aws/bedrock-agentcore/runtimes/<agent_id>-<endpoint_name>), ou le flux de default journaux dans le groupe de aws/spans journaux pour les agents qui utilisent la destination de span partagée

  4. Filtrer par nom de service ou selon d'autres critères

  5. Sélectionnez une trace pour afficher le graphique d'exécution détaillé

Affichage des métriques

Pour afficher les statistiques

  1. Ouvrez la console CloudWatch .

  2. Sélectionnez Metrics dans la barre de navigation de gauche

  3. Accédez à l'espace de bedrock-agentcore noms

  4. Explorez les indicateurs disponibles

Bonnes pratiques

  1. Commencez simplement, puis développez  : l'observabilité par défaut fournie par Amazon Bedrock AgentCore capture automatiquement les indicateurs les plus critiques, notamment les appels de modèles, l'utilisation des jetons et l'exécution des outils.

  2. Configuration pour la phase de développement  : adaptez votre configuration d'observabilité à votre phase de développement actuelle et ajustez-la progressivement.

  3. Utilisez une dénomination cohérente - Établissez des conventions de dénomination pour les services, les étendues et les attributs dès le départ

  4. Filtrer les données sensibles  : empêchez l'exposition d'informations confidentielles en filtrant les données sensibles issues des attributs d'observabilité et des charges utiles.

  5. Configurer des alertes  : configurez CloudWatch des alarmes pour vous avertir des problèmes potentiels avant qu'ils n'affectent les utilisateurs