Inizia con AgentCore Observability
Amazon Bedrock Amazon Bedrock AgentCore Observability ti aiuta a tracciare, eseguire il debug e monitorare le prestazioni degli agenti negli ambienti di produzione. Questa guida ti aiuta a implementare funzionalità di osservabilità nelle tue applicazioni con agenti.
Argomenti
Passaggio 1: abilita la ricerca delle transazioni su CloudWatch
Fase 2: abilitare l'osservabilità per gli agenti ospitati su Amazon Bedrock AgentCore Runtime
Fase 3: abilitare l'osservabilità per agenti non Amazon Bedrock AgentCore-hosted
Fase 4: Osserva il tuo agente con l'osservabilità GenAI su Amazon CloudWatch
Prerequisiti
Prima di iniziare, assicurati di avere:
-
AWS Account con credenziali configurato (
aws configure) con accesso al modello abilitato al Foundation Model che desideri utilizzare. -
Python 3.10+ installato
-
Abilita la ricerca delle transazioni su Amazon CloudWatch. Solo una volta, gli utenti alle prime armi devono abilitare CloudWatch Transaction Search per visualizzare gli span e le tracce di Bedrock Amazon Bedrock AgentCore
-
(solo Non-runtime agenti) Aggiungi la OpenTelemetry libreria: includi
aws-opentelemetry-distro(ADOT) nel file requirements.txt. Se ospiti il tuo agente su AWS Lambda, utilizza invece il Lambda Layer for OpenTelemetry on the AWSAWS Distro for sul sitoWeb Distro for. OpenTelemetry -
(solo Non-runtime agenti) Assicurati che il tuo framework sia configurato per emettere tracce (ad esempio, pacchetto).
strands-agents[otel]A volte potrebbe essere necessario includere lo strumentatore automatico del framework dell'agente (ad esempio,).opentelemetry-instrumentation-langchain
Amazon Bedrock AgentCore Observability offre due modi per configurare il monitoraggio in base alle diverse esigenze dell'infrastruttura:
-
Agenti Amazon Bedrock AgentCore Runtime-hosted
-
Non-runtime agenti ospitati
Come configurazione unica per AWS account, gli utenti alle prime armi devono abilitare Transaction Search su Amazon CloudWatch. Esistono due modi per farlo, tramite l'API e tramite la CloudWatch console.
Passaggio 1: abilita la ricerca delle transazioni su CloudWatch
Dopo aver abilitato Transaction Search, potrebbero essere necessari fino a dieci minuti prima che gli intervalli risultino disponibili per la ricerca e l'analisi. Scegli una delle opzioni seguenti:
Opzione 1: abilita la ricerca delle transazioni utilizzando un'API
Per abilitare la ricerca delle transazioni tramite l'API
-
Crea una policy che garantisca l'accesso agli intervalli di importazione nei CloudWatch log utilizzando la CLI. AWS
Di seguito viene mostrato un esempio su come formattare il comando AWS CLI con.
PutResourcePolicyaws 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" } } } ]}' -
Configura la destinazione dei segmenti di traccia.
Di seguito viene mostrato un esempio su come formattare il comando AWS CLI con.
UpdateTraceSegmentDestinationaws xray update-trace-segment-destination --destination CloudWatchLogs -
Facoltativo Configura la quantità di intervalli da indicizzare.
Configura la percentuale di campionamento desiderata con.
UpdateIndexingRuleaws xray update-indexing-rule --name "Default" --rule '{"Probabilistic": {"DesiredSamplingPercentage": number}}'
Opzione 2: abilita la ricerca delle transazioni nella console CloudWatch
Per abilitare la ricerca delle transazioni nella CloudWatch console
-
Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/
. -
Nel riquadro di navigazione sotto Configurazione, scegli Impostazioni.
-
Seleziona Account e scegli la scheda X-Ray Traces.
-
Nella sezione Ricerca transazioni, scegli Visualizza impostazioni.
-
Nella pagina che si apre, scegli Modifica.
-
Scegli Abilita Transaction Search
-
Seleziona Per X-Ray utenti e inserisci la percentuale di tracce da indicizzare. Puoi indicizzare l'1% delle tracce gratuitamente e modificare questa percentuale in un secondo momento in base alle tue esigenze.
-
Scegli Save (Salva). Attendi che Ingest OpenTelemetry spans mostri Enabled prima di inviare le tracce.
Passiamo ora all'esplorazione dei due modi per configurare l'osservabilità.
Fase 2: abilitare l'osservabilità per gli agenti ospitati su Amazon Bedrock AgentCore Runtime
AgentCore Runtime-hosted Gli agenti Amazon Bedrock vengono distribuiti ed eseguiti direttamente all'interno AgentCore dell'ambiente Amazon Bedrock, fornendo strumentazione automatica con una configurazione minima. Quando si distribuisce un agente utilizzando la AgentCore CLI, il runtime fornisce automaticamente strumenti al proprio agente: non sono OpenTelemetry necessarie librerie o configurazioni OTEL aggiuntive.
Per un esempio completo, fate riferimento a questo taccuino
Crea il tuo progetto di agente
Crea un nuovo progetto utilizzando la AgentCore CLI. Questo configura la cartella del progetto, l'ambiente virtuale e le dipendenze:
npm install -g @aws/agentcore agentcore create --name StrandsClaudeGettingStarted
Nella directory degli agenti del progetto, sostituisci il codice agente predefinito con la tua logica di agente. Di seguito è riportato un esempio di utilizzo dell'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") response = agent(user_input) return response.message['content'][0]['text'] if __name__ == "__main__": app.run()
Implementa e richiama il tuo agente
Distribuisci l'agente su Runtime. AgentCore La AgentCore CLI gestisce il packaging, l'implementazione e la strumentazione OTEL automatica:
cd StrandsClaudeGettingStarted agentcore deploy
Dopo la distribuzione, l'agente viene eseguito su AgentCore Runtime e viene automaticamente dotato di strumentazione tramite. OpenTelemetry Richiama il tuo agente e visualizza le tracce, le sessioni e le metriche sulla dashboard di osservabilità di GenAI in Amazon: CloudWatch
agentcore invoke
In alternativa, puoi richiamare il tuo agente a livello di codice utilizzando l'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()))
Fase 3: abilitare l'osservabilità per agenti non Amazon Bedrock AgentCore-hosted
Per gli agenti che operano al di fuori del AgentCore runtime di Amazon Bedrock, puoi fornire le stesse funzionalità di monitoraggio per gli agenti distribuiti sulla tua infrastruttura. Ciò consente un'osservabilità costante indipendentemente da dove vengono eseguiti gli agenti. Utilizzate i seguenti passaggi per configurare le variabili di ambiente necessarie per osservare i vostri agenti.
Per un esempio completo, consulta l'esempio di Agents on Amazon EKS
Configura AWS variabili di ambiente
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>
Configura la CloudWatch registrazione
Crea un gruppo di log e un flusso di log per il tuo agente in Amazon CloudWatch che puoi utilizzare per configurare le seguenti variabili di ambiente.
Configura le variabili di OpenTelemetry ambiente
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
Sostituiscilo <YOUR-AGENT-NAME> con un nome univoco per identificare questo agente nella dashboard e nei registri di GenAI Observability.
Nota
Se decidi OTEL_EXPORTER_OTLP_TRACES_HEADERS di distribuire gli intervalli al tuo gruppo di log, devi anche aggiungere una policy sulle risorse di Amazon CloudWatch Logs. La policy deve consentire a X-Ray (xray.amazonaws.com) di richiamare quel logs:PutLogEvents gruppo di log. Utilizza la stessa politica mostrata in Abilita la ricerca delle transazioni utilizzando un'API, inserendo l'ARN del tuo gruppo di log. Resource Senza questa politica, non X-Ray puoi fornire span al tuo gruppo di log.
Crea un agente localmente
# 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)
Esegui il tuo agente con il comando di strumentazione automatico
Con aws-opentelemetry-distro il tuo requirements.txt, il opentelemetry-instrument comando:
-
Carica la configurazione OTEL dalle variabili di ambiente
-
Instrument Strands, chiamate Amazon Bedrock, strumenti e database degli agenti e altre richieste effettuate dall'agente
-
Invia tracce a CloudWatch
-
Consentono di visualizzare il processo decisionale dell'agente nella dashboard di GenAI Observability
Usa il seguente comando per eseguire il tuo agente con strumentazione automatica:
opentelemetry-instrument python agent.py
Se ospiti il tuo agente su AWS Lambda, usa il AWS Lambda Layer for OpenTelemetry sul sito Web Distro forAWS_LAMBDA_EXEC_WRAPPER ambiente su. /opt/otel-instrument Il layer quindi strumenta automaticamente la tua funzione. Con questo approccio, non è necessario aggiungere il aws-opentelemetry-distro pacchetto o eseguire il opentelemetry-instrument comando descritto in precedenza.
ADOT Collector non è supportato per l'osservabilità degli agenti
ADOT Collector non è supportato per l'osservabilità degli agenti. Per inviare telemetria da un agente ospitato al di fuori del AgentCore runtime, è necessario utilizzare ADOT SDK o Lambda Layer for. AWS OpenTelemetry
Per correlare le tracce tra le esecuzioni di più agenti, puoi associare un ID di sessione ai dati di telemetria utilizzando baggage: OpenTelemetry
from opentelemetry import baggage, context ctx = baggage.set_baggage("session.id", session_id)
Fase 4: Osserva il tuo agente con l'osservabilità GenAI su Amazon CloudWatch
Dopo aver implementato l'osservabilità, puoi visualizzare i dati raccolti in: CloudWatch
Osserva il tuo agente
-
Puoi visualizzare i dati relativi alle chiamate dei modelli e agli agenti su Bedrock Amazon AgentCore Bedrock sulla dashboard.
-
Nella scheda Bedrock Agentcore puoi visualizzare Agents View, Sessions View e Traces View.
-
Agents View elenca tutti gli agenti che sono attivi e non in fase di esecuzione, puoi anche scegliere un agente e visualizzare ulteriori dettagli come metriche di runtime, sessioni e tracce specifiche di un agente.
-
Nella scheda Sessions View, puoi navigare tra tutte le sessioni associate agli agenti.
-
Nella scheda Trace View, puoi esaminare le tracce e le informazioni relative agli agenti. Esplora anche la traiettoria e la sequenza temporale della traccia scegliendo una traccia.
Visualizza i log in CloudWatch
Per visualizzare i log in CloudWatch
-
Apri la console CloudWatch
-
Nel riquadro di navigazione a sinistra, espandi Registri e seleziona Gruppi di log
-
Cerca il gruppo di log del tuo agente:
-
Posizione dei log standard (stdout/stderr):
/aws/bedrock-agentcore/runtimes/<agent_id>-<endpoint_name>/[runtime-logs] <UUID> -
Log strutturati OTEL:
/aws/bedrock-agentcore/runtimes/<agent_id>-<endpoint_name>/runtime-logs
-
Visualizza tracce e intervalli
Per visualizzare tracce e intervalli
-
Apri la console CloudWatch
-
Seleziona Transaction Search dalla barra di navigazione a sinistra
-
Posizione: il flusso di
spanslog nel gruppo di log dell'agente (/aws/bedrock-agentcore/runtimes/<agent_id>-<endpoint_name>) o il flusso didefaultlog nel gruppo diaws/spanslog per gli agenti che utilizzano la destinazione span condivisa -
Filtra per nome del servizio o altri criteri
-
Seleziona una traccia per visualizzare il grafico di esecuzione dettagliato
Visualizzazione dei parametri di
Per visualizzare le metriche
-
Apri la console CloudWatch
-
Seleziona Metriche dalla barra di navigazione a sinistra
-
Vai al namespace
bedrock-agentcore -
Esplora le metriche disponibili
Best practice
-
Inizia in modo semplice, poi espandi: l'osservabilità predefinita fornita da Amazon Bedrock AgentCore acquisisce automaticamente le metriche più critiche, tra cui le chiamate ai modelli, l'utilizzo dei token e l'esecuzione degli strumenti.
-
Configura per la fase di sviluppo: personalizza la configurazione di osservabilità in base alla fase di sviluppo attuale e aggiustala progressivamente.
-
Usa una denominazione coerente: stabilisci convenzioni di denominazione per servizi, intervalli e attributi sin dall'inizio
-
Filtra i dati sensibili: evita l'esposizione di informazioni riservate filtrando i dati sensibili dagli attributi di osservabilità e dai payload.
-
Imposta avvisi: configura gli CloudWatch allarmi per avvisarti di potenziali problemi prima che abbiano un impatto sugli utenti