Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Importante
Para habilitar a observabilidade no Agent 365, use o Microsoft OpenTelemetry Distro. Esta distribuição fornece um SDK de observabilidade único em toda a Microsoft, impulsionando o Agent 365, o Microsoft Foundry, o Azure Monitor e outros. A abordagem existente descrita neste artigo continua funcionando sem alterações interruptivas. Para obter orientações de migração por linguagem, veja os seguintes guias:
- Guia de migração de Python
- Guia de migração de JavaScript/TypeScript
- Guia de migração de .NET Para o modelo de dados subjacente, identidade e autenticação, escopos e consentimento, e limites – que se aplicam a todos os caminhos de integração – consulte Conceitos de observabilidade do Agent 365.
Observação
A observabilidade é um dos níveis de recursos incrementais em Introdução do desenvolvimento do Agent 365 e se aplica a todos os tipos de agente.
Para participar do ecossistema do Agent 365, adicione os recursos de Observabilidade do Agent 365 ao seu agente. A Observabilidade do Agent 365 se baseia no OpenTelemetry (OTel) e oferece uma estrutura unificada para capturar telemetria de forma consistente e segura em todas as plataformas de agentes. Ao implementar este componente obrigatório, os administradores de TI poderão monitorar a atividade do seu agente no centro de administração da Microsoft e as equipes de segurança poderão usar o Defender e o Purview para fins de conformidade e detecção de ameaças.
Principais benefícios
- Visibilidade de ponta a ponta: capture telemetria abrangente para cada invocação de agente, incluindo sessões, chamadas de ferramentas e exceções, garantindo rastreabilidade total entre as plataformas.
- Segurança e conformidade: integre logs de auditoria unificados ao Defender e ao Purview, viabilizando cenários avançados de segurança e relatórios de conformidade para seu agente.
- Flexibilidade multiplataforma: construa com base nos padrões OTel e dê suporte a ambientes de execução e plataformas diversas, como Copilot Studio, Foundry e futuros frameworks de agentes.
- Eficiência operacional para administradores: forneça observabilidade centralizada no centro de administração do Microsoft 365, reduzindo o tempo de resolução de problemas e melhorando a governança com controles de acesso baseados em funções para equipes de TI que gerenciam seu agente.
Agentes com suporte
Os seguintes tipos de agentes oferecem suporte à observabilidade do Agent 365:
- Agentes habilitados para Microsoft Agent 365: use o SDK de observabilidade para instrumentar seu agente.
- Agentes com mecanismo personalizado: use o SDK de observabilidade para instrumentar seu agente.
- Agentes declarativos: há suporte para a observabilidade pronta para uso. Não é necessária implementação de SDK.
Instalação
Use estes comandos para instalar os módulos de observabilidade para as linguagens com suporte pelo Agent 365.
Instale os pacotes essenciais de observabilidade e runtime. Todos os agentes que usam a Observabilidade do Agent 365 precisam desses pacotes.
pip install microsoft-agents-a365-observability-core
pip install microsoft-agents-a365-runtime
Se o seu agente usa o pacote Hospedagem de Agentes da Microsoft, instale o pacote de integração de hospedagem. Ele fornece middleware que preenche automaticamente a bagagem e os escopos a partir do TurnContext, e inclui o armazenamento de tokens para o exportador de observabilidade.
pip install microsoft-agents-a365-observability-hosting
Se o seu agente usa um das estruturas de IA com suporte, instale a extensão correspondente de instrumentação automática para capturar telemetria automaticamente, sem código manual de instrumentação. Para obter detalhes de configuração, consulte Instrumentação automática.
# For Semantic Kernel
pip install microsoft-agents-a365-observability-extensions-semantic-kernel
# For OpenAI Agents SDK
pip install microsoft-agents-a365-observability-extensions-openai
# For Microsoft Agent Framework
pip install microsoft-agents-a365-observability-extensions-agent-framework
# For LangChain
pip install microsoft-agents-a365-observability-extensions-langchain
Configuração
Use as configurações a seguir para habilitar e personalizar a Observabilidade do Agent 365 para seu agente.
Defina a ENABLE_A365_OBSERVABILITY_EXPORTER variável do ambiente como true para observabilidade. Essa configuração exporta logs para o serviço e requer que seja fornecido um token_resolver. Caso contrário, o exportador de console será usado.
from microsoft_agents_a365.observability.core import configure
def token_resolver(agent_id: str, tenant_id: str) -> str | None:
# Implement secure token retrieval here
return "Bearer <token>"
configure(
service_name="my-agent-service",
service_namespace="my.namespace",
token_resolver=token_resolver,
)
O resolvedor de tokens não é incluído no registro de logs do console.
Você pode personalizar o comportamento do exportador passando uma instância Agent365ExporterOptions para exporter_options. Quando exporter_options é fornecido, ele tem precedência sobre os parâmetros token_resolver e cluster_category.
from microsoft_agents_a365.observability.core import configure, Agent365ExporterOptions
configure(
service_name="my-agent-service",
service_namespace="my.namespace",
exporter_options=Agent365ExporterOptions(
cluster_category="prod",
token_resolver=token_resolver,
),
suppress_invoke_agent_input=True,
)
A tabela a seguir descreve os parâmetros opcionais para configure().
| Parâmetro | Descrição | Padrão |
|---|---|---|
logger_name |
Nome do logger em Python usado para depuração e saída de logs no console. | microsoft_agents_a365.observability.core |
exporter_options |
Uma instância de Agent365ExporterOptions que configura o resolvedor de tokens e a categoria de cluster juntos. |
None |
suppress_invoke_agent_input |
Quando True, suprime as mensagens de entrada nos spans InvokeAgent. |
False |
A tabela a seguir descreve as propriedades opcionais para Agent365ExporterOptions.
| Propriedade | Descrição | Padrão |
|---|---|---|
use_s2s_endpoint |
Quando True, usa o caminho do ponto de extremidade serviço-a-serviço. |
False |
max_queue_size |
Tamanho máximo da fila para o processador em lote. | 2048 |
scheduled_delay_ms |
Atraso em milissegundos entre os lotes de exportação. | 5000 |
exporter_timeout_ms |
Tempo limite em milissegundos para a operação de exportação. | 30000 |
max_export_batch_size |
Tamanho máximo de lote para operações de exportação. | 512 |
Atributos de bagagem
Use BaggageBuilder para definir informações contextuais que fluem por todos os spans em uma solicitação.
O SDK implementa um SpanProcessor que copia todas as entradas de bagagem não vazias para novos intervalos sem sobrescrever atributos existentes.
from microsoft_agents_a365.observability.core import BaggageBuilder
with (
BaggageBuilder()
.tenant_id("tenant-123")
.agent_id("agent-456")
.conversation_id("conv-789")
.build()
):
# Any spans started in this context will receive these as attributes
pass
Para preencher automaticamente o BaggageBuilder a partir do TurnContext, use o auxiliar populate no pacote microsoft-agents-a365-observability-hosting. Esse auxiliar extrai automaticamente os detalhes do chamador, agente, locatário, canal e conversa da atividade.
from microsoft_agents.hosting.core.turn_context import TurnContext
from microsoft_agents_a365.observability.core import BaggageBuilder
from microsoft_agents_a365.observability.hosting.scope_helpers.populate_baggage import populate
builder = BaggageBuilder()
populate(builder, turn_context)
with builder.build():
# Baggage is auto-populated from the TurnContext activity
pass
Middleware de bagagem
Se o agente usar o pacote de integração de hospedagem, registre o middleware de bagagem para preencher automaticamente a bagagem para cada solicitação de entrada. Essa etapa elimina a necessidade de chamar BaggageBuilder manualmente em cada manipulador de atividade.
Registre BaggageMiddleware no conjunto do middleware do adaptador. Ele extrai automaticamente os detalhes de chamadas, agente, locatário, canal e conversa de cada entrada TurnContext e encapsula a solicitação em um escopo de bagagem.
from microsoft_agents_a365.observability.hosting import BaggageMiddleware
adapter.use(BaggageMiddleware())
Como alternativa, use ObservabilityHostingManager para configurar o middleware de bagagem junto com outros recursos de hospedagem:
from microsoft_agents_a365.observability.hosting import ObservabilityHostingManager, ObservabilityHostingOptions
options = ObservabilityHostingOptions(enable_baggage=True)
ObservabilityHostingManager.configure(adapter.middleware_set, options)
O middleware ignora a configuração de dados adicionais para respostas assíncronas (eventos ContinueConversation) para evitar substituir as informações que a solicitação de origem já estabeleceu.
Resolvedor de tokens
Quando você usa o exportador do Agent 365, é necessário fornecer uma função de resolvedor de tokens que retorne um token de autenticação.
Ao usar o SDK de Observabilidade do Agent 365 com a estrutura de Hospedagem do Agente, você pode gerar tokens usando TurnContext das atividades do agente.
O exemplo de código a seguir mostra como gerar um token usando o SDK microsoft_agents.hosting.core. O token de autenticação gerado aqui é usado para exportar os intervalos para o serviço de ingestão do A365. Os agentes podem gerar um token por conta própria, por exemplo, usando a a MSAL (Biblioteca de Autenticação da Microsoft), mas precisam garantir que o token tenha o escopo de observabilidade.
from microsoft_agents.activity import load_configuration_from_env
from microsoft_agents.authentication.msal import MsalConnectionManager
from microsoft_agents.hosting.aiohttp import CloudAdapter
from microsoft_agents.hosting.core import (
AgentApplication,
Authorization,
MemoryStorage,
TurnContext,
TurnState,
)
from microsoft_agents_a365.runtime import (
get_observability_authentication_scope,
)
agents_sdk_config = load_configuration_from_env(environ)
STORAGE = MemoryStorage()
CONNECTION_MANAGER = MsalConnectionManager(**agents_sdk_config)
ADAPTER = CloudAdapter(connection_manager=CONNECTION_MANAGER)
ADAPTER.use(TranscriptLoggerMiddleware(ConsoleTranscriptLogger()))
AUTHORIZATION = Authorization(STORAGE, CONNECTION_MANAGER, **agents_sdk_config)
AGENT_APP = AgentApplication[TurnState](
storage=STORAGE, adapter=ADAPTER, authorization=AUTHORIZATION, **agents_sdk_config
)
@AGENT_APP.activity("message", auth_handlers=["AGENTIC"])
async def on_message(context: TurnContext, _state: TurnState):
aau_auth_token = await AGENT_APP.auth.exchange_token(
context,
scopes=get_observability_authentication_scope(),
auth_handler_id="AGENTIC",
)
# cache this auth token and return via token resolver
Para um agente criado com a CLI do AA365 que usar um colega de equipe de IA e o pacote Biblioteca de Hosting de Observabilidade do Microsoft Agent 365, use AgenticTokenCache para tratar o cache de tokens automaticamente. Registre o token uma vez por agente e locatário durante um manipulador de atividades e passe cache.get_observability_token como token_resolver na configuração de observabilidade.
from microsoft_agents_a365.observability.core import configure
from microsoft_agents_a365.observability.hosting.token_cache_helpers import (
AgenticTokenCache,
AgenticTokenStruct,
)
from microsoft_agents_a365.runtime import get_observability_authentication_scope
# Create a shared cache instance
token_cache = AgenticTokenCache()
# Use the cache as your token resolver in configure()
configure(
service_name="my-agent-service",
service_namespace="my.namespace",
token_resolver=token_cache.get_observability_token,
)
@AGENT_APP.activity("message", auth_handlers=["AGENTIC"])
async def on_message(context: TurnContext, _state: TurnState):
token_cache.register_observability(
agent_id="agent-456",
tenant_id="tenant-123",
token_generator=AgenticTokenStruct(
authorization=AGENT_APP.auth,
turn_context=context,
),
observability_scopes=get_observability_authentication_scope(),
)
Instrumentação automática
A instrumentação automática monitora automaticamente as estruturas do agente (SDKs), sinais de telemetria existentes para rastreamentos e os encaminha para o serviço de observabilidade do Agent 365. Esse recurso elimina a necessidade de os desenvolvedores escreverem código de monitoramento manualmente, simplifica a configuração e garante um monitoramento consistente de desempenho.
Importante
A instrumentação automática preenche apenas os atributos OTel padrão. Você deve adicionar atributos específicos da Microsoft por meio de BaggageBuilder. Para ver quais atributos estão ausentes, valide a saída do intervalo no console com os logs do armazenamento para identificar as diferenças.
Vários SDKs e plataformas oferecem suporte à instrumentação automática:
| Plataforma | SDKs/Frameworks com suporte |
|---|---|
| .NET | Kernel semântico, OpenAI, Agent Framework |
| Python | Kernel semântico, OpenAI, Agent Framework, LangChain |
| Node.js | OpenAI, LangChain |
Observação
O suporte à instrumentação automática varia de acordo com a plataforma e a implementação do SDK.
Kernel semântico
A instrumentação automática requer o uso do criador de bagagem. Defina a ID do agente e a ID do locatário usando BaggageBuilder.
Instale o pacote.
pip install microsoft-agents-a365-observability-extensions-semantic-kernel
Configure a observabilidade.
from microsoft_agents_a365.observability.core import configure
from microsoft_agents_a365.observability.extensions.semantickernel.trace_instrumentor import SemanticKernelInstrumentor
# Configure observability
configure(
service_name="my-semantic-kernel-agent",
service_namespace="ai.agents"
)
# Enable auto-instrumentation
instrumentor = SemanticKernelInstrumentor()
instrumentor.instrument()
# Your Semantic Kernel code is now automatically traced
OpenAI
A instrumentação automática requer o uso do criador de bagagem. Defina a ID do agente e a ID do locatário usando BaggageBuilder.
Instale o pacote.
pip install microsoft-agents-a365-observability-extensions-openai
Configure a observabilidade.
from microsoft_agents_a365.observability.core import configure
from microsoft_agents_a365.observability.extensions.openai import OpenAIAgentsTraceInstrumentor
# Configure observability
configure(
service_name="my-openai-agent",
service_namespace="ai.agents"
)
# Enable auto-instrumentation
instrumentor = OpenAIAgentsTraceInstrumentor()
instrumentor.instrument()
# Your OpenAI Agents code is now automatically traced
Agent Framework
A instrumentação automática requer o uso do criador de bagagem. Defina a ID do agente e a ID do locatário usando BaggageBuilder.
Instale o pacote.
pip install microsoft-agents-a365-observability-extensions-agent-framework
Configure a observabilidade.
from microsoft_agents_a365.observability.core import configure
from microsoft_agents_a365.observability.extensions.agentframework import (
AgentFrameworkInstrumentor,
)
# Configure observability
configure(
service_name="AgentFrameworkTracingWithAzureOpenAI",
service_namespace="AgentFrameworkTesting",
)
# Enable auto-instrumentation
AgentFrameworkInstrumentor().instrument()
Framework LangChain
Instrumentação automática requer o uso do criador de bagagem. Defina a ID do agente e a ID do locatário usando BaggageBuilder.
Instale o pacote.
pip install microsoft-agents-a365-observability-extensions-langchain
Configure a observabilidade.
from microsoft_agents_a365.observability.core.config import configure
from microsoft_agents_a365.observability.extensions.langchain import CustomLangChainInstrumentor
# Configure observability
configure(
service_name="my-langchain-agent",
service_namespace="ai.agents"
)
# Enable auto-instrumentation
CustomLangChainInstrumentor()
# Your LangChain code is now automatically traced
Instrumentação manual
Use o SDK de observabilidade do Agent 365 para entender o funcionamento interno do agente.
O SDK fornece escopos que você pode iniciar: InvokeAgentScope, ExecuteToolScope, InferenceScope e OutputScope.
Invocação do agente
Use esse escopo no início do processo do seu agente. Ao usar o escopo de invocação do agente, você pode capturar propriedades como o agente atual que está sendo invocado, dados do usuário do agente, entre outros.
from microsoft_agents_a365.observability.core import (
InvokeAgentScope,
InvokeAgentScopeDetails,
AgentDetails,
CallerDetails,
UserDetails,
Channel,
Request,
ServiceEndpoint,
)
agent_details = AgentDetails(
agent_id="agent-456",
agent_name="My Agent",
agent_description="An AI agent powered by Azure OpenAI",
agentic_user_id="auid-123",
agentic_user_email="agent@contoso.com",
agent_blueprint_id="blueprint-789",
tenant_id="tenant-123",
)
scope_details = InvokeAgentScopeDetails(
endpoint=ServiceEndpoint(hostname="myagent.contoso.com", port=443),
)
request = Request(
content="User asks a question",
session_id="session-42",
conversation_id="conv-xyz",
channel=Channel(name="msteams"),
)
caller_details = CallerDetails(
user_details=UserDetails(
user_id="user-123",
user_email="jane.doe@contoso.com",
user_name="Jane Doe",
),
)
with InvokeAgentScope.start(request, scope_details, agent_details, caller_details):
# Perform agent invocation logic
response = call_agent(...)
Execução de ferramenta
Os exemplos a seguir mostram como adicionar rastreamento de observabilidade à execução da ferramenta do seu agente. Esse rastreamento captura telemetria para fins de monitoramento e auditoria.
from microsoft_agents_a365.observability.core import (
ExecuteToolScope,
ToolCallDetails,
Request,
ServiceEndpoint,
)
# Use the same agent_details and request instances from the InvokeAgentScope example above
tool_details = ToolCallDetails(
tool_name="summarize",
tool_type="function",
tool_call_id="tc-001",
arguments="{'text': '...'}",
description="Summarize provided text",
endpoint=ServiceEndpoint(hostname="tools.contoso.com", port=8080),
)
with ExecuteToolScope.start(request, tool_details, agent_details) as scope:
result = run_tool(tool_details)
scope.record_response(result)
Inferência
Os exemplos a seguir mostram como instrumentar chamadas de inferência de modelos de IA com rastreamento de observabilidade para capturar o uso de tokens, detalhes do modelo e metadados da resposta.
from microsoft_agents_a365.observability.core import (
InferenceScope,
InferenceCallDetails,
InferenceOperationType,
)
# Use the same agent_details and request instances from the InvokeAgentScope example above
inference_details = InferenceCallDetails(
operationName=InferenceOperationType.CHAT,
model="gpt-4o-mini",
providerName="azure-openai",
inputTokens=123,
outputTokens=456,
finishReasons=["stop"],
)
with InferenceScope.start(request, inference_details, agent_details) as scope:
completion = call_llm(...)
scope.record_output_messages([completion.text])
scope.record_input_tokens(completion.usage.input_tokens)
scope.record_output_tokens(completion.usage.output_tokens)
Saída
Use esse escopo para cenários assíncronos em que InvokeAgentScope, ExecuteToolScope ou InferenceScope não podem capturar dados de saída de forma síncrona. Comece OutputScope como um intervalo filho para registrar as mensagens de saída finais após a conclusão do escopo pai.
from microsoft_agents_a365.observability.core import (
OutputScope,
Response,
SpanDetails,
)
# Use the same agent_details and request instances from the InvokeAgentScope example above
# Get the parent context from the originating scope
parent_context = invoke_scope.get_context()
response = Response(messages=["Here is your organized inbox with 15 urgent emails."])
with OutputScope.start(
request,
response,
agent_details,
span_details=SpanDetails(parent_context=parent_context),
):
# Output messages are recorded automatically from the response
pass
Validar localmente
Para verificar se você integrou-se com sucesso ao SDK de observabilidade, examine os logs de console gerados pelo agente e os logs do SDK de observabilidade.
Defina a variável de ambiente ENABLE_A365_OBSERVABILITY_EXPORTER como false. Essa configuração exporta intervalos (rastreamentos) para o console.
Para investigar falhas de exportação, habilite o log detalhado definindo ENABLE_A365_OBSERVABILITY_EXPORTER como true e configure o log de depuração na inicialização do aplicativo:
import logging
logging.basicConfig(level=logging.DEBUG)
logging.getLogger("microsoft_agents_a365.observability.core").setLevel(logging.DEBUG)
# Or target only the exporter:
logging.getLogger(
"microsoft_agents_a365.observability.core.exporters.agent365_exporter"
).setLevel(logging.DEBUG)
Principais mensagens de log:
DEBUG Token resolved for agent {agentId} tenant {tenantId}
DEBUG Exporting {n} spans to {url}
DEBUG HTTP 200 - correlation ID: abc-123
ERROR Token resolution failed: {error}
ERROR HTTP 401 exporting spans - correlation ID: abc-123
INFO No spans with tenant/agent identity found; nothing exported.
Exibindo os logs exportados
Para visualizar a telemetria do agente no Microsoft Purview ou no Microsoft Defender, certifique-se de que os seguintes requisitos sejam cumpridos:
- Microsoft Purview: a auditoria deve estar ativada para sua organização. Para instruções, veja Ativar ou desativar a auditoria.
-
Microsoft Defender: a busca avançada deve ser configurada para acessar a tabela
CloudAppEvents. Para obter detalhes, consulte a tabela CloudAppEvents no esquema de busca avançada.
Validar para publicação na loja
Importante
Para uma validação com êxito na loja, seu agente deve implementar os escopos InvokeAgentScope, InferenceScope e ExecuteToolScope. Esses três escopos são necessários para a publicação.
Antes de publicar, use logs de console para validar sua integração de observabilidade para o agente, implementando os escopos necessários de invoke agent, execute tool, inference e output. Depois, compare os logs do seu agente com as seguintes listas de atributos para verificar se todos os atributos necessários estão presentes. Capture atributos em cada escopo ou através do criador de contexto, e inclua atributos opcionais segundo seu critério.
Para obter mais informações sobre os requisitos de publicação na loja, consulte diretrizes de validação da loja.
Atributos InvokeAgentScope
A lista a seguir resume os atributos de telemetria obrigatórios e opcionais registrados quando você inicia um InvokeAgentScope.
"attributes": {
"error.type": "Optional",
"microsoft.a365.agent.blueprint.id": "Required",
"gen_ai.agent.description": "Optional",
"gen_ai.agent.id": "Required",
"gen_ai.agent.name": "Required",
"microsoft.a365.agent.platform.id": "Optional",
"microsoft.agent.user.email": "Required",
"microsoft.agent.user.id": "Required",
"gen_ai.agent.version": "Optional",
"microsoft.a365.caller.agent.blueprint.id": "Optional",
"microsoft.a365.caller.agent.id": "Optional",
"microsoft.a365.caller.agent.name": "Optional",
"microsoft.a365.caller.agent.platform.id": "Optional",
"microsoft.a365.caller.agent.user.email": "Optional",
"microsoft.a365.caller.agent.user.id": "Optional",
"microsoft.a365.caller.agent.version": "Optional",
"client.address": "Required",
"user.id": "Required",
"user.name": "Optional",
"user.email": "Required",
"microsoft.channel.link": "Optional",
"microsoft.channel.name": "Required",
"gen_ai.conversation.id": "Required",
"microsoft.conversation.item.link": "Optional",
"gen_ai.input.messages": "Required",
"gen_ai.operation.name": "Required",
"gen_ai.output.messages": "Required",
"server.address": "Required",
"server.port": "Required",
"microsoft.session.id": "Optional",
"microsoft.session.description": "Optional",
"microsoft.tenant.id": "Required"
}
Atributos ExecuteToolScope
A lista a seguir resume os atributos de telemetria obrigatórios e opcionais registrados quando você inicia um ExecuteToolScope.
"attributes": {
"error.type": "Optional",
"microsoft.a365.agent.blueprint.id": "Required",
"gen_ai.agent.description": "Optional",
"gen_ai.agent.id": "Required",
"gen_ai.agent.name": "Required",
"microsoft.a365.agent.platform.id": "Optional",
"microsoft.agent.user.email": "Required",
"microsoft.agent.user.id": "Required",
"gen_ai.agent.version": "Optional",
"client.address": "Required",
"user.id": "Required",
"user.name": "Optional",
"user.email": "Required",
"microsoft.channel.link": "Optional",
"microsoft.channel.name": "Required",
"gen_ai.conversation.id": "Required",
"microsoft.conversation.item.link": "Optional",
"gen_ai.operation.name": "Required",
"gen_ai.tool.call.arguments": "Required",
"gen_ai.tool.call.id": "Required",
"gen_ai.tool.call.result": "Required",
"gen_ai.tool.description": "Optional",
"gen_ai.tool.name": "Required",
"gen_ai.tool.type": "Required",
"server.address": "Optional",
"server.port": "Optional",
"microsoft.session.id": "Optional",
"microsoft.session.description": "Optional",
"microsoft.tenant.id": "Required"
}
Atributos InferenceScope
A lista a seguir resume os atributos de telemetria obrigatórios e opcionais registrados quando você inicia um InferenceScope.
"attributes": {
"error.type": "Optional",
"microsoft.a365.agent.blueprint.id": "Required",
"gen_ai.agent.description": "Optional",
"gen_ai.agent.id": "Required",
"gen_ai.agent.name": "Required",
"microsoft.a365.agent.platform.id": "Optional",
"microsoft.a365.agent.thought.process": "Optional",
"microsoft.agent.user.email": "Required",
"microsoft.agent.user.id": "Required",
"gen_ai.agent.version": "Optional",
"client.address": "Required",
"user.id": "Required",
"user.name": "Optional",
"user.email": "Required",
"microsoft.channel.link": "Optional",
"microsoft.channel.name": "Required",
"gen_ai.conversation.id": "Required",
"microsoft.conversation.item.link": "Optional",
"gen_ai.input.messages": "Required",
"gen_ai.operation.name": "Required",
"gen_ai.output.messages": "Required",
"gen_ai.provider.name": "Required",
"gen_ai.request.model": "Required",
"gen_ai.response.finish_reasons": "Optional",
"gen_ai.usage.input_tokens": "Optional",
"gen_ai.usage.output_tokens": "Optional",
"server.address": "Optional",
"server.port": "Optional",
"microsoft.session.description": "Optional",
"microsoft.session.id": "Optional",
"microsoft.tenant.id": "Required"
}
Atributos OutputScope
A lista a seguir resume os atributos de telemetria obrigatórios e opcionais registrados quando você inicia um OutputScope. Use esse escopo para cenários assíncronos em que o escopo pai não consegue capturar os dados de saída de maneira síncrona.
"attributes": {
"microsoft.a365.agent.blueprint.id": "Required",
"gen_ai.agent.description": "Optional",
"gen_ai.agent.id": "Required",
"gen_ai.agent.name": "Required",
"microsoft.a365.agent.platform.id": "Optional",
"microsoft.agent.user.email": "Required",
"microsoft.agent.user.id": "Required",
"gen_ai.agent.version": "Optional",
"client.address": "Required",
"user.id": "Required",
"user.name": "Optional",
"user.email": "Required",
"microsoft.channel.link": "Optional",
"microsoft.channel.name": "Required",
"gen_ai.conversation.id": "Required",
"microsoft.conversation.item.link": "Optional",
"gen_ai.operation.name": "Required",
"gen_ai.output.messages": "Required",
"microsoft.session.id": "Optional",
"microsoft.session.description": "Optional",
"microsoft.tenant.id": "Required"
}
Testar seu agente com observabilidade
Depois de implementar a observabilidade no seu agente, teste-o para garantir que ele registre a telemetria corretamente. Siga o guia de testes para configurar seu ambiente. Em seguida, concentre-se principalmente na seção Exibir logs de observabilidade para validar se sua implementação de observabilidade está funcionando conforme o esperado.
Verificação:
- Vá para:
https://admin.cloud.microsoft/#/agents/all - Selecione seu agente > Atividade
- Você verá sessões e chamadas de ferramentas
Solução de Problemas
Esta seção descreve problemas comuns durante a implementação e o uso da observabilidade.
| Problema | descrição |
|---|---|
| Os dados de observabilidade não aparecem | Nenhuma telemetria fica visível porque a exportação não está habilitada, a configuração está incorreta ou há falha na resolução do token. |
| ID do locatário ou ID do agente ausente - spans ignorados | Spans são descartados antes da exportação quando os atributos de identidade necessários para o particionamento não estão presentes. |
| Falha na resolução de token – exportação ignorada ou não autorizada | Há falha nas solicitações de exportação ou elas são ignoradas quando o resolvedor não retorna nenhum token ou encontra uma exceção. |
| HTTP 401 Não Autorizado | A autenticação é bem-sucedida do ponto de vista sintático, mas o token é inválido para a ingestão devido ao escopo, tipo ou expiração. |
| HTTP 403 Proibido | O acesso é negado devido a lacunas de licenciamento de locatário ou permissões de observabilidade ausentes. |
| HTTP 403 Proibido - incompatibilidade de ID de agente | A solicitação é rejeitada quando a identidade do agente na URL não corresponde à identidade representada pelo token. |
| Erros HTTP 429 ou 5xx - erros transitórios | A limitação temporária ou falhas no serviço interrompem a exportação e podem exigir ajustes nas tentativas de repetição. |
| Tempo limite de exportação | Os lotes de telemetria excedem as janelas de tempo limite configuradas devido à latência da rede ou à capacidade de resposta do ponto de extremidade. |
| A exportação é bem-sucedida, mas a telemetria não aparece no Defender ou no Purview | A ingestão é concluída, mas a visibilidade downstream é atrasada ou bloqueada por pré-requisitos do produto. |
Dica
O Guia de Solução de Problemas do Agent 365 contém recomendações de solução de problemas de alto nível, melhores práticas e links para conteúdo de solução de problemas para cada parte do ciclo de vida de desenvolvimento do Agent 365.
Os dados de observabilidade não aparecem
Sintomas:
- O agente está em execução
- Sem telemetria no centro de administração
- Não é possível ver a atividade do agente
Causa raiz:
- A observabilidade não está habilitada
- Erros de configuração
- Problemas do resolvedor de tokens
Soluções: tente as seguintes etapas para resolver o problema:
Verifique se o exportador de observabilidade está habilitado
É necessário habilitar explicitamente o exportador do Agent 365. Quando desabilitado, o SDK retorna a um exportador de console e a telemetria não é enviada ao serviço. Para obter detalhes da configuração, consulte Configuração.
Verificar a configuração do resolver de tokens
O exportador exige um resolvedor válido de tokens que forneça um token de portador para cada solicitação de exportação. Se o resolvedor de tokens estiver ausente ou retornar
null, a exportação será ignorada silenciosamente. Certifique-se de que seu código implemente corretamente o resolvedor de tokens. Para obter mais detalhes, consulte Resolvedor de tokens.Verificar erros em logs
Habilite o log detalhado e use o comando
az webapp log tailpara procurar nos logs erros relacionados à observabilidade. Para obter detalhes sobre como habilitar o registro em log por plataforma, consulte Validar localmente.# Look for observability-related errors az webapp log tail --name <your-app-name> --resource-group <your-resource-group> | Select-String "observability"Verificar exportação de telemetria
Confirme que a telemetria foi gerada e exportada conforme esperado.
- Adicione um exportador de console e verifique se a telemetria é gerada localmente. Para obter detalhes sobre como usar o exportador de console e validar a saída, consulte Validar localmente.
ID do locatário ou ID do agente ausente – intervalos ignorados
Sintomas: o sistema descarta silenciosamente intervalos e nunca os exporta. Alguns SDKs registram uma contagem de intervalos ignorados ou uma mensagem como "Nenhum intervalo com a identificação de locatário/agente encontrada". Outros os descartam sem registrar.
Resolução:
- Antes da exportação, as partições do SDK abrangem a identidade do locatário e do agente. O sistema descarta spans que não tenham uma ID de locatário ou uma ID de agente e nunca as envia para o serviço.
- Verifique se
BaggageBuilderestá configurado com a ID do locatário e a ID do agente antes de criar intervalos. Esses valores se propagam por meio do contexto OpenTelemetry e são anexados a todos os intervalos criados dentro do escopo da bagagem. Para a API específica da plataforma, consulte Atributos de bagagem. - Confirme se a atividade
TurnContexttem um destinatário válido com a identidade do agente, caso você use o middleware de bagagem ou o auxiliar de contexto do pacote de integração de hospedagem para preencher essas IDs.
Falha no processamento de token – exportação ignorada ou não autorizada
Sintomas: o resolvedor de tokens retorna null ou lança um erro. Dependendo do SDK, a exportação é ignorada completamente ou a solicitação é enviada sem um cabeçalho de autorização e tem falha com HTTP 401.
Resolução:
- O resolvedor de tokens é obrigatório na inicialização. Se estiver faltando, o exportador gera um erro na inicialização. Verifique se um resolver de tokens foi fornecido e retorna um token de portador válido.
- Certifique-se de que a ID do locatário e a ID do agente corretas sejam usadas para
BaggageBuilder, pois esses valores são passados para o resolvedor de tokens. - Para agentes hospedados no Azure, verifique se a Identidade Gerenciada dispõe da permissão de API necessária para o escopo de observabilidade.
HTTP 401 Não Autorizado
Sintomas: a exportação falha com HTTP 401. O exportador não faz nova tentativa após esse erro.
Resolução:
- Verifique se o público-alvo do token corresponde ao escopo do ponto de extremidade de observabilidade.
- Verifique se o resolver de tokens não está retornando um token de usuário delegado, um token para um destinatário incorreto ou um token expirado.
HTTP 403 Forbidden
Sintomas: a exportação falha com HTTP 403. O exportador não faz nova tentativa após esse erro.
Causa raiz: um erro HTTP 403 pode ter várias causas. Verifique as resoluções a seguir na ordem.
Resolução:
Licença ausente — verifique se sua organização possui uma das seguintes licenças atribuídas no centro de administração do Microsoft 365:
- Teste - Microsoft 365 E7
- Microsoft 365 E7
- Microsoft Agent 365 Frontier
Permissão
Agent365.Observability.OtelWriteausente — se tiver atualizado recentemente seus pacotes de observabilidade, você precisará conceder essa permissão. Consulte a observação importante na próxima seção.
Importante
Agentes existentes que estão sendo atualizados para essas versões de pacote exigem uma etapa extra
Essa etapa se aplica somente se você estiver atualizando um agente existente. As novas instalações do agente não exigem essa etapa. Se estiver atualizando para as versões seguintes do pacote ou versões mais recentes, você deverá conceder a nova permissão Agent365.Observability.OtelWrite à sua identidade (Identidade Gerenciada ou registro de aplicativo). Sem essa permissão, a exportação de telemetria terá falha com HTTP 403.
| Plataforma | Versão mínima que exige essa etapa |
|---|---|
| .NET | 0.3-beta |
| Node.js | 0.2.0-preview.1 |
| Python | 0.3.0 |
Conceda a permissão usando uma das seguintes opções:
Opção A — CLI do Agent 365 (requer uma conta de Administrador Global; execute a partir do diretório do projeto do agente contendo a365.config.json ou utilize --agent-name)
a365 setup permissions bot
Ou, sem um arquivo de configuração:
a365 setup permissions bot --agent-name "<agent-name>"
Esse comando concede todas as permissões ausentes no blueprint, incluindo os escopos de observabilidade.
Opção B — Portal do Entra (nenhum arquivo de configuração necessário; requer acesso do Administrador Global ao registro do aplicativo blueprint)
- Acesse o portal do Entra>Registros de aplicativo>, selecione seu aplicativo Blueprint.
- Vá para Permissões de API>Adicionar uma permissão>APIs que minha organização usa> e pesquise por
9b975845-388f-4429-889e-eab1ef63949c. - Selecione Permissões delegadas> marque
Agent365.Observability.OtelWrite>Adicionar permissões. - Repita as etapas 2 e 3. Desta vez, selecione Permissões de aplicativo>, marque
Agent365.Observability.OtelWrite>Adicionar permissões. - Clique em Conceder consentimento do administrador e confirme.
Ambos Agent365.Observability.OtelWrite (Delegado) e Agent365.Observability.OtelWrite (Aplicativo) devem mostrar o status Granted.
HTTP 403 Proibido — ID do agente não corresponde
Sintomas: a exportação falha com HTTP 403 e uma mensagem do servidor semelhante a 403 Forbidden, com falhas agent-ID-mismatch ao chamar os pontos de extremidade de rastreamento do Agent 365.
Causa raiz: esse erro ocorre quando você usa a ID do cliente do blueprint em vez da ID do cliente da instância do agente ao definir os detalhes do agente. A ID do agente na URL de exportação não corresponde à identidade autorizada pelo token, portanto o ponto de extremidade de rastreamentos rejeita a solicitação.
Resolução:
- Verifique se a ID do locatário foi adicionada à lista de locatários permitidos pelo Agent 365.
- Configure os detalhes do agente utilizando a ID do cliente da instância do agente (não o ID do cliente do blueprint).
- Verifique a URL de exportação gerada, ela é registrada se você habilitar o logger. Confirme que a ID do agente na URL corresponde ao ID do cliente da instância do agente.
- Para habilitar o log de diagnóstico por SDK, consulte Validar localmente.
Erros HTTP 429 ou 5xx - erros transitórios
Sintomas: falha na exportação com código de status HTTP transitório, como 429 ou 5xx.
Resolução:
- Esses erros geralmente são transitórios e se resolvem sozinhos. Os SDKs de Python e JavaScript realizam tentativas automáticas novamente em códigos de status HTTP 408, 429 e 5xx até três vezes com retirada exponencial. O SDK do .NET não faz novas tentativas automaticamente.
- Se os erros persistirem, verifique o painel de integridade do serviço.
- Considere reduzir a frequência de exportação aumentando o atraso programado entre os lotes de exportação ou aumentando o tamanho máximo do lote de exportação. Para obter opções de configuração por plataforma, consulte a tabela
Agent365ExporterOptionsem Configuração.
Tempo limite de exportação
Sintomas: tempo limite de tentativas de exportação.
Resolução:
- Verifique a conectividade da rede com o ponto de extremidade de observabilidade.
- Os padrões de tempo limite variam conforme a plataforma. O tempo limite padrão da solicitação HTTP é 30 segundos. Alguns SDKs também têm um tempo limite global separado do exportador que abrange todo o ciclo de exportação, incluindo novas tentativas. Para obter as propriedades e valores padrão exatos de cada plataforma, consulte a tabela
Agent365ExporterOptionsem Configuração. - Caso os tempos limite ocorram com frequência, aumente o valor de tempo limite relevante nas opções do exportador.
A exportação é bem-sucedida, mas a telemetria não aparece no Defender ou no Purview
Sintomas: os logs mostram uma exportação com êxito, mas a telemetria não está visível no Microsoft Defender ou no Microsoft Purview.
Resolução:
- Certifique-se de que você atenda aos pré-requisitos para exibir os registros exportados. Para o Purview, a auditoria deve estar ativada. Para o Defender, você deve configurar a busca avançada. Para obter mais informações, consulte Exibindo os logs exportados.
- A telemetria pode levar vários minutos para ser preenchida após uma exportação bem-sucedida. Aguarde os dados serem exibidos antes de prosseguir com a investigação.
Para saber mais sobre testes de observabilidade, consulte:
Conteúdo relacionado
- Conceitos de observabilidade do Agent 365 - fluxo de dados, modelos de identidade, autenticação, escopos e limites que se aplicam a todos os caminhos de integração.
- Referência de atributos de observabilidade do Agent 365 - esquema canônico de atributos de span ao qual todo span ingerido pelo Agent 365 deve se conformar.
- Microsoft OpenTelemetry Distro – SDK recomendado e unificado para novas integrações.