As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Adicione observabilidade aos seus recursos do Amazon Bedrock AgentCore
O Amazon Bedrock AgentCore fornece várias métricas integradas para monitorar o desempenho dos recursos quanto ao tempo de AgentCore execução, memória, gateway, ferramentas integradas e tipos de recursos de identidade. Esses dados padrão estão disponíveis na Amazon CloudWatch. Para visualizar toda a gama de dados de observabilidade no CloudWatch console ou gerar métricas de tempo de execução personalizadas para agentes, você precisa instrumentar seu código usando o SDK do AWS Distro for Open Telemetry (ADOT).
Para visualizar o painel de observabilidade em CloudWatch, abra a página Amazon CloudWatch GenAi Observability
Consulte as seções a seguir para saber mais sobre como configurar seus recursos para visualizar métricas de observabilidade na página de observabilidade de IA generativa do CloudWatch console e nos registros. CloudWatch
dica
O uso do ADOT SDK para gerar métricas personalizadas também é suportado por agentes executados fora do AgentCore tempo de execução. Para saber como habilitar a observabilidade para esses agentes, consulte Habilitando a observabilidade para agentes hospedados fora do. AgentCore
Tópicos
Habilitando a observabilidade no código do agente para AgentCore-hosted agentes
Permitindo a observabilidade para agentes hospedados fora do AgentCore
Observabilidade aprimorada AgentCore do tempo de execução com cabeçalhos personalizados
Observabilidade aprimorada das ferramentas AgentCore integradas com cabeçalhos personalizados
Observabilidade de AgentCore identidade aprimorada com cabeçalhos personalizados
Permitindo a AgentCore observabilidade
Para visualizar métricas, extensões e rastreamentos gerados pelo AgentCore serviço, primeiro você precisa concluir uma configuração única para ativar a Pesquisa de CloudWatch transações da Amazon. Para visualizar os períodos de recursos de memória fornecidos pelo serviço, você também precisa ativar o rastreamento ao criar uma memória. Consulte Habilitando a observabilidade para AgentCore tempo de execução, memória, gateway, ferramentas integradas e recursos de identidade para saber mais.
As seções a seguir descrevem como realizar essas ações de configuração e ativar a observabilidade no código do seu agente.
Habilitando CloudWatch a pesquisa de transações
Você pode ativar a Pesquisa de CloudWatch Transações usando o CloudWatch console ou usando uma API por meio da Interface de Linha de AWS Comando (AWS CLI) ou de um dos AWS SDKs.
Use um dos procedimentos a seguir para ativar a Pesquisa de Transações.
exemplo
Destino do Span para agentes hospedados no ambiente de execução do Amazon Bedrock AgentCore
dica
Agora você pode consolidar toda a telemetria de um agente — extensões, registros estruturados e saída padrão — em um único grupo de registros para cada agente.
Com o AgentCore runtime, um recurso do Amazon Bedrock AgentCore, você pode configurar um agente para entregar suas extensões ao mesmo grupo de CloudWatch registros da Amazon que os registros do agente. Com essa configuração, os spans vão para o fluxo de spans log em /aws/bedrock-agentcore/runtimes/<agent_id>-<endpoint_name> vez do grupo de aws/spans log compartilhado. Você pode manter extensões, registros estruturados e saída padrão juntos em um grupo de registros por agente, definir o escopo do controle de acesso e da criptografia para um agente individual e exportar a telemetria de um único local.
AWS Nas regiões suportadas, os agentes recém-criados usam o grupo de registros do agente como o destino de extensão padrão. Os agentes criados antes de uma região oferecer suporte ao destino unificado do span mantêm o grupo de aws/spans registros compartilhados como padrão.
Você pode substituir o padrão de um agente individual pela variável de UNIFIED_TRACES_DESTINATION_ENABLED ambiente no tempo de execução do seu agente:
-
Para optar por um agente existente que usa o grupo de
aws/spansregistros compartilhados, definaUNIFIED_TRACES_DESTINATION_ENABLED=true. AgentCore em seguida, entrega as extensões do agente para seu próprio grupo de registros. -
Para excluir um agente que usa seu próprio grupo de registros por padrão, defina
UNIFIED_TRACES_DESTINATION_ENABLED=false. AgentCore em seguida, entrega as extensões do agente para o grupo deaws/spansregistros compartilhados.
AgentCore Para entregar períodos ao grupo de registros do agente, o seguinte deve ser verdadeiro:
-
Ative a pesquisa de CloudWatch transações em sua conta e envie segmentos de rastreamento para o Amazon CloudWatch Logs. Sem a Pesquisa de Transações, não é AgentCore possível entregar períodos ao grupo de registros do agente. Para obter mais informações, consulte Habilitando a pesquisa de CloudWatch transações.
-
Conceda a
logs:PutResourcePolicyação no grupo de registros do agente à função de execução do agente. AgentCore usa essa permissão para permitir AWS X-Ray a entrega de extensões ao grupo de registros. Para obter mais informações, consulte Função de execução para executar um agente em AgentCore tempo de execução. -
O agente usa o ADOT versão 0.18.0 ou posterior ().
aws-opentelemetry-distro>=0.18.0As versões anteriores ignoram a configuração de destino da extensão e entregam extensões ao grupo deaws/spansregistros compartilhado.
Alterar o destino da extensão não move os dados de extensão existentes. Os períodos que AgentCore já foram entregues permanecem em seu grupo de registros original.
Habilitando a observabilidade no código do agente para AgentCore-hosted agentes
Além das métricas geradas pelo serviço, AgentCore você também pode coletar dados de abrangência e rastreamento, bem como métricas personalizadas emitidas pelo código do seu agente.
Quando você usa estruturas de agentes como Strands opentelemetry-instrument-langchain Também é possível enviar convenções semânticas generativas de IA, telemetria
Para visualizar esses dados na página de observabilidade de IA generativa do CloudWatch console e na Amazon CloudWatch, você precisa adicionar o SDK do AWS Distro for Open Telemetry (ADOT) ao código do seu agente.
nota
Com AgentCore, você também pode visualizar métricas para agentes que não estão em execução no AgentCore tempo de execução. Etapas adicionais de configuração são necessárias para configurar as saídas de telemetria para não agentes. AgentCore Consulte as instruções em Habilitando a observabilidade para agentes hospedados fora do AgentCore para saber mais.
Para adicionar suporte ao ADOT e ativar a AgentCore observabilidade, siga as etapas no procedimento a seguir.
Adicione observabilidade ao seu agente AgentCore
-
Certifique-se de que sua estrutura esteja configurada para emitir rastreamentos. Por exemplo, na estrutura Strands, o objeto rastreador deve ser configurado para instruir o Strands a emitir registros de Telemetria Aberta (OTEL).
-
Adicione o ADOT SDK e o boto3 às dependências do seu agente. Para Python, adicione o seguinte ao seu
requirements.txtarquivo:aws-opentelemetry-distro>=0.18.0 boto3Como alternativa, você pode instalar as dependências diretamente:
pip install aws-opentelemetry-distro>=0.18.0 boto3 -
Execute seu código de agente usando o comando de OpenTelemetry instrumentação automática:
opentelemetry-instrument python my_agent.pyEssa abordagem de autoinstrumentação adiciona automaticamente o SDK ao caminho do Python. Talvez você já esteja usando essa abordagem como parte de sua OpenTelemetry implementação padrão.
Para ambientes em contêineres (como docker), adicione o seguinte comando:
CMD ["opentelemetry-instrument", "python", "main.py"]Ao usar o ADOT, para propagar o ID da sessão corretamente, defina o
X-Amzn-Bedrock-AgentCore-Runtime-Session-Idno cabeçalho da solicitação. O ADOT então define o session_id corretamente nos cabeçalhos downstream.Para propagar uma ID de rastreamento, invoque o tempo de AgentCore execução com o conjunto de parâmetros
traceId=<traceId>.Você também pode invocar seu agente com cabeçalhos adicionais para obter opções adicionais de observabilidade. Consulte Observabilidade aprimorada do tempo de AgentCore execução com cabeçalhos personalizados para saber mais.
Permitindo a observabilidade para agentes hospedados fora do AgentCore
Para permitir a observabilidade de agentes hospedados fora do AgentCore tempo de execução, primeiro siga as etapas nas seções anteriores para ativar a Pesquisa de CloudWatch Transações e adicionar o ADOT SDK ao seu código.
Se você hospedar seu agente no AWS Lambda, use o AWS Lambda Layer for OpenTelemetry AWS_LAMBDA_EXEC_WRAPPER ambiente como/opt/otel-instrument. A camada então instrumenta automaticamente sua função. Com essa abordagem, você não precisa adicionar o aws-opentelemetry-distro pacote ou executar o opentelemetry-instrument comando descrito anteriormente.
O ADOT Collector não é compatível com a observabilidade do agente
O ADOT Collector não é compatível com a observabilidade do agente. Para enviar telemetria de um agente hospedado fora do AgentCore tempo de execução, você deve usar o ADOT SDK ou o Lambda AWS Layer for. OpenTelemetry
Para agentes executados fora do AgentCore tempo de execução, você também precisa criar um grupo de registros de agentes que você inclua nas variáveis de ambiente.
Configure suas variáveis de AWS ambiente e, em seguida, defina suas variáveis de ambiente Open Telemetry conforme mostrado a seguir.
AWS variáveis de ambiente
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>
Variáveis de ambiente 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>Substitua pelo nome do seu agente e <agent-id> por um identificador exclusivo para o seu agente.
nota
Se você definir OTEL_EXPORTER_OTLP_TRACES_HEADERS a entrega de períodos para seu próprio grupo de logs, também deverá adicionar uma política de recursos do Amazon CloudWatch Logs. A política deve permitir que X-Ray (xray.amazonaws.com) chame logs:PutLogEvents esse grupo de registros. Use a mesma política mostrada em Habilitando a Pesquisa de CloudWatch Transações, com o ARN do seu grupo de registros inserido. Resource Sem essa política, não é X-Ray possível entregar extensões ao seu grupo de registros.
nota
(Opcional) Para estruturas de agentes que não sejam Strands e CrewAI: talvez seja necessário adicionar um SDK e um código adicionais para enviar a telemetria e as extensões das convenções semânticas da IA generativa. LangChain AgentCore O Observability, um recurso do Amazon Bedrock AgentCore, suporta o uso das seguintes bibliotecas de instrumentação em sua estrutura de agentes: * * Openllmetry * OpenInference
Suporte para ID de sessão
Para propagar o ID da sessão, você precisa invocar usando o identificador de sessão na bagagem do 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
Permitindo a observabilidade de AgentCore tempo de execução, memória, gateway, ferramentas integradas e recursos de identidade
Quando você cria um recurso AgentCore de tempo de execução (agente), por padrão, o AgentCore tempo de execução cria um grupo de CloudWatch registros para os registros fornecidos pelo serviço. No entanto, para recursos de memória, gateway e ferramentas integradas, AgentCore não configura automaticamente os destinos de registro para você.
Para recursos de memória e gateway, você pode configurar destinos de registro no console ou usando um AWS SDK. Se você usar o console para configurar um destino de CloudWatch registros, o nome do grupo de registros padrão para recursos de memória e gateway terá o formato/aws/vendedlogs/bedrock-agentcore/{resource-type}/APPLICATION_LOGS/{resource-id}, onde {resource-type} é memory ougateway.
Para registros de memória e gateway, você também pode configurar destinos de registro nos registros do Amazon S3 ou nos registros de stream do Firehose usando o AgentCore console. Para saber mais sobre como armazenar logs no Amazon S3 ou Firehose, consulte Carregar, baixar e trabalhar com objetos no Amazon S3 e Criar um stream de entrega do Amazon Data Firehose.
Para saber mais sobre a saída de dados de log AgentCore por recursos de memória e gateway, consulte Dados de registro fornecidos (memória) ou Dados de registro fornecidos (gateway).
Para recursos de ferramentas incorporados, o AgentCore serviço não fornece registros por padrão, mas você pode gerar seus próprios registros a partir do seu código. Se você fornecer suas próprias saídas de registro, precisará configurar manualmente os destinos de registro para armazenar esses dados.
Para ver quais dados de observabilidade AgentCore fornecem por padrão para cada tipo de recurso, consulte Dados de observabilidade AgentCore gerados pelo Amazon Bedrock.
Configurar destinos de registro usando o console
Para configurar destinos de registro para registros de memória ou gateway no AgentCore console, use os procedimentos a seguir.
exemplo
Configurar a entrega de rastreamento para CloudWatch usar o console
Esta seção descreve como habilitar a entrega de rastreamento CloudWatch para rastrear o fluxo de interações em seu aplicativo, permitindo que você visualize solicitações, identifique gargalos de desempenho, solucione erros e otimize o desempenho.
exemplo
Configurar CloudWatch recursos usando um AWS SDK
Para configurar uma fonte de entrega para registros e rastreamentos (SDK)
-
Execute o código Python a seguir CloudWatch para configurar seus recursos de memória, gateway e ferramentas integradas. Observe que as origens e os destinos de entrega para rastreamento são aplicáveis somente aos recursos de memória e gateway.
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)
Observabilidade aprimorada AgentCore do tempo de execução com cabeçalhos personalizados
Você pode invocar seu agente com cabeçalhos HTTP adicionais para fornecer opções aprimoradas de observabilidade. O exemplo a seguir mostra invocações, incluindo solicitações de cabeçalho adicionais opcionais para agentes hospedados no AgentCore tempo de execução.
Exemplo de invocação do 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"}', )
Você pode incluir os seguintes cabeçalhos opcionais ao invocar seu agente para aprimorar os recursos de observabilidade e rastreamento:
| Cabeçalho | Description | Valor de exemplo | Explicação técnica |
|---|---|---|---|
|
X-Amzn-Trace-Id |
ID de rastreamento para rastreamento de solicitações (X-Ray formato) |
Root=1-5759e988-bd862e3fe1be46a994272793; pai=53995c3f42cd8ad8; Amostrado=1 |
Usado para rastreamento distribuído entre AWS serviços. Contém ID raiz (origem da solicitação), ID principal (serviço anterior) e decisão de amostragem para rastreamento. Amostragem = 1 significa 100% de amostragem. Parent também está no formato X-Ray Trace. O OTEL gerará automaticamente IDs de rastreamento se não forem fornecidos. |
|
rastreador |
Cabeçalho de rastreamento padrão W3C |
00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01 |
Formato W3C que inclui versão, ID de rastreamento, ID principal e sinalizadores. Necessário para correlação de rastreamento entre serviços ao usar sistemas de rastreamento modernos. |
|
X-Amzn-Bedrock-AgentCore-Runtime-Session-Id |
AgentCore identificador de sessão |
A1B2C3D4-5678-90AB-CDEF - Exemplo AAAAA |
Identifica uma sessão de usuário no AgentCore sistema. Ajuda na análise e na solução de problemas com base em sessões. |
|
ID da sessão mcp |
Identificador de sessão MCP |
MCP-A1B2C3D4-5678-90AB-CDEF - Exemplo AAAAA |
Identifica uma sessão na Managed Cloud Platform. Permite o rastreamento de operações em todo o ecossistema MCP. |
|
estado do traço |
Informações adicionais sobre o estado de rastreamento |
congo=t61rc E, rojo=00f067aa0ba902b7 WkgMz |
Vendor-specific informações de rastreamento. Transmite contexto adicional para sistemas de rastreamento além do que está em traceparent. |
|
bagagem |
Propagação de contexto para rastreamento distribuído |
ID de usuário = Alice, região do servidor = US-EAST-1 |
Key-value pares que propagam propriedades definidas pelo usuário através dos limites do serviço para registro e análise contextuais. |
Observabilidade aprimorada das ferramentas AgentCore integradas com cabeçalhos personalizados
Você pode invocar suas Built-in ferramentas com cabeçalhos HTTP adicionais para fornecer opções aprimoradas de observabilidade. Você pode incluir os seguintes cabeçalhos opcionais ao integrar as seguintes APIs de Build-in ferramentas para aprimorar os recursos de observabilidade e rastreamento:
As seguintes APIs oferecem suporte a cabeçalhos personalizados:
-
StartCodeInterpreterSession
-
InvokeCodeInterpreter
-
StopCodeInterpreterSession
-
StartBrowserSession
-
StopBrowserSession
| Cabeçalho | Description | Valor de exemplo | Explicação técnica |
|---|---|---|---|
|
X-Amzn-Trace-Id |
ID de rastreamento para rastreamento de solicitações (X-Ray formato) |
Root=1-5759e988-bd862e3fe1be46a994272793; pai=53995c3f42cd8ad8; Amostrado=1 |
Usado para rastreamento distribuído entre AWS serviços. Contém ID raiz (origem da solicitação), ID principal (serviço anterior) e decisão de amostragem para rastreamento. Amostragem = 1 significa 100% de amostragem. Parent também está no formato X-Ray Trace. O OTEL gerará automaticamente IDs de rastreamento se não forem fornecidos. |
|
rastreador |
Cabeçalho de rastreamento padrão W3C |
00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01 |
Formato W3C que inclui versão, ID de rastreamento, ID principal e sinalizadores. Necessário para correlação de rastreamento entre serviços ao usar sistemas de rastreamento modernos. |
Observabilidade de AgentCore identidade aprimorada com cabeçalhos personalizados
Você pode invocar seus recursos de identidade com cabeçalhos HTTP adicionais para fornecer opções aprimoradas de observabilidade. Você pode incluir os seguintes cabeçalhos opcionais ao integrar as seguintes APIs de identidade para aprimorar os recursos de observabilidade e rastreamento:
As seguintes APIs oferecem suporte a cabeçalhos personalizados:
-
GetWorkloadAccessToken
-
GetWorkloadAccessTokenForJWT
-
GetWorkloadAccessTokenForUserId
-
GetResourceOauth2Token
-
GetResourceAPIKey
| Cabeçalho | Description | Valor de exemplo | Explicação técnica |
|---|---|---|---|
|
X-Amzn-Trace-Id |
ID de rastreamento para rastreamento de solicitações (X-Ray formato) |
Root=1-5759e988-bd862e3fe1be46a994272793; pai=53995c3f42cd8ad8; Amostrado=1 |
Usado para rastreamento distribuído entre AWS serviços. Contém ID raiz (origem da solicitação), ID principal (serviço anterior) e decisão de amostragem para rastreamento. Amostragem = 1 significa 100% de amostragem. Parent também está no formato X-Ray Trace. O OTEL gerará automaticamente IDs de rastreamento se não forem fornecidos. |
Melhores práticas de observabilidade
Considere as seguintes práticas recomendadas ao implementar a observabilidade para agentes em: AgentCore
-
Use IDs de sessão consistentes - Quando possível, reutilize o mesmo ID de sessão para solicitações relacionadas a fim de manter o contexto nas interações.
-
Implemente o rastreamento distribuído - Use os cabeçalhos fornecidos para permitir o rastreamento de ponta a ponta em todos os componentes do seu aplicativo.
-
Adicione atributos personalizados - Melhore seus rastreamentos e métricas com atributos personalizados que fornecem contexto adicional para solução de problemas e análise.
-
Monitore o uso de recursos - Preste atenção às métricas de uso da memória para otimizar o desempenho do seu agente.
-
Configurar alertas - Configure CloudWatch alarmes para ajudar a notificá-lo sobre possíveis problemas antes que eles afetem seus usuários.
Usando outras plataformas de observabilidade
Para integrar agentes hospedados no AgentCore tempo de execução com outras plataformas de observabilidade para capturar e visualizar saídas de telemetria, defina a seguinte variável de ambiente:
DISABLE_ADOT_OBSERVABILITY=true
Definir essa variável como true desativa as variáveis de ambiente ADOT padrão do AgentCore tempo de execução, garantindo que nenhuma das configurações padrão do ADOT seja definida.