Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Importante
Para habilitar la observabilidad en Agent 365, use la Distribución de Microsoft OpenTelemetry. Esta distribución proporciona un único SDK de observabilidad en todo Microsoft, impulsando Agent 365, Microsoft Foundry, Azure Monitor, entre otros. El enfoque existente descrito en este artículo sigue funcionando sin cambios que rompan la compatibilidad. Para obtener orientación sobre la migración según el lenguaje, consulte las siguientes guías:
- Guía de migración de Python
- Guía de migración de JavaScript/TypeScript
- Guía de migración .NET Para el modelo de datos subyacente, identidad y autenticación, ámbitos y consentimiento, y límites — que se aplican a todas las rutas de integración — consulte Conceptos de observabilidad de Agent 365.
Nota
La observabilidad es uno de los niveles incrementales de capacidad en Introducción al desarrollo de Agent 365 y se aplica a todos los tipos de agentes.
Para participar en el ecosistema de Agent 365, agregue funcionalidades de observabilidad de Agent 365 a su agente. La observabilidad de Agent 365 se basa en OpenTelemetry (OTel) y proporciona un marco unificado para capturar la telemetría de forma coherente y segura en todas las plataformas de agente. Al implementar este componente necesario, permite a los administradores de TI supervisar la actividad del agente en el Centro de administración de Microsoft (MAC) y permitir que los equipos de seguridad usen Defender y Purview para la detección de amenazas y cumplimiento.
Beneficios clave
- Visibilidad integral: capture telemetría completa para cada invocación de agente, incluidas las sesiones, las llamadas a herramientas y las excepciones, lo que proporciona una rastreabilidad completa en todas las plataformas.
- SHabilitación de seguridad y cumplimiento: envíe registros de auditoría unificados a Defender y Purview, permitiendo escenarios de seguridad avanzada e informes de cumplimiento para su agente.
- Flexibilidad multiplataforma: compile los estándares de OTel y admita diversos runtimes y plataformas como Copilot Studio, Foundry y marcos de agente futuros.
- Eficiencia operativa para administradores: proporcione observabilidad centralizada en el Centro de administración de Microsoft 365, reduciendo el tiempo de solución de problemas y mejorando la gobernanza con controles de acceso basados en roles para los equipos de TI que administran el agente.
Agentes admitidos
Los siguientes tipos de agentes son compatibles con la observabilidad de Agent 365:
- Agentes habilitados con Microsoft Agent 365: use el SDK de observabilidad para instrumentar el agente.
- Agentes de motor personalizados: use el SDK de observabilidad para instrumentar el agente.
- Agentes declarativos: la observabilidad se admite de forma nativa. No se requiere implementación del SDK.
Instalación
Use estos comandos para instalar los módulos de observabilidad para los idiomas admitidos por Agent 365.
Instale los paquetes principales de observabilidad y paquetes del entorno de ejecución. Todos los agentes que usan Observabilidad de Agent 365 necesitan estos paquetes.
pip install microsoft-agents-a365-observability-core
pip install microsoft-agents-a365-runtime
Si su agente utiliza el paquete Microsoft Agents Hosting, instale el paquete de integración de hospedaje. Proporciona un middleware que rellena automáticamente el equipaje y los ámbitos desde el TurnContext e incluye el almacenamiento en caché de tokens para el exportador de observabilidad.
pip install microsoft-agents-a365-observability-hosting
Si su agente utiliza uno de los marcos de IA compatibles, instale la extensión de autoinstrumentación correspondiente para capturar automáticamente la telemetría sin necesidad de código de instrumentación manual. Consulte Instrumentación automática para obtener detalles de configuración.
# 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
Configuración
Utilice los siguientes ajustes para habilitar y personalizar Observabilidad de Agent 365 para su agente.
Establezca la variable de entorno ENABLE_A365_OBSERVABILITY_EXPORTER en true para observabilidad. Esta configuración exporta los registros al servicio y requiere que se proporcione token_resolver. En caso contrario, se utiliza el exportador de consola.
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,
)
El resolvedor de token está excluido del registro en la consola.
Puede personalizar el comportamiento del exportador, pasando una instancia de Agent365ExporterOptions a exporter_options. Cuando se proporciona exporter_options, tiene precedencia sobre los parámetros token_resolver y 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,
)
La tabla siguiente describe los parámetros opcionales para configure().
| Parámetro | Descripción | Valor predeterminado |
|---|---|---|
logger_name |
Nombre del registrador de Python usado para la depuración y la salida del registro de la consola. | microsoft_agents_a365.observability.core |
exporter_options |
Una instancia de Agent365ExporterOptions que configura el resolvedor de tokens y la categoría de clúster de manera conjunta. |
None |
suppress_invoke_agent_input |
Cuando True, suprime los mensajes de entrada en los segmentos de InvokeAgent. |
False |
La siguiente tabla describe las propiedades opcionales para Agent365ExporterOptions.
| Property | Descripción | Valor predeterminado |
|---|---|---|
use_s2s_endpoint |
Cuando True usa la ruta de acceso del punto de conexión de servicio a servicio. |
False |
max_queue_size |
Tamaño máximo de cola para el procesador por lotes. | 2048 |
scheduled_delay_ms |
Retraso en milisegundos entre lotes de exportación. | 5000 |
exporter_timeout_ms |
Tiempo de espera en milisegundos para la operación de exportación. | 30000 |
max_export_batch_size |
Tamaño máximo de lote para operaciones de exportación. | 512 |
Atributos de equipaje
Use BaggageBuilder para establecer información contextual que fluye a través de todos los intervalos de una solicitud.
El SDK implementa una SpanProcessor que copia de todas las entradas de equipaje no vacías en intervalos recién iniciados sin sobrescribir los 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 rellenar automáticamente el BaggageBuilder desde el TurnContext use el asistente populate en el paquete microsoft-agents-a365-observability-hosting. Este asistente extrae automáticamente los detalles del autor de la llamada, el agente, el inquilino, el canal y la conversación de la actividad.
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 equipaje
Si el agente usa el paquete de integración de hospedaje, registre el middleware de equipaje para rellenar automáticamente el equipaje para cada solicitud entrante. Este paso elimina la necesidad de llamar a BaggageBuilder manualmente en cada gestor de actividades.
Registre BaggageMiddleware en el conjunto de middleware del adaptador. Extrae automáticamente los detalles de llamada, agente, inquilino, canal y conversación de cada TurnContext entrante y ajusta la solicitud en un contexto de equipaje.
from microsoft_agents_a365.observability.hosting import BaggageMiddleware
adapter.use(BaggageMiddleware())
Como alternativa, use ObservabilityHostingManager para configurar middleware de contexto junto con otras características de alojamiento:
from microsoft_agents_a365.observability.hosting import ObservabilityHostingManager, ObservabilityHostingOptions
options = ObservabilityHostingOptions(enable_baggage=True)
ObservabilityHostingManager.configure(adapter.middleware_set, options)
El middleware omite la configuración de la información de contexto para las respuestas asincrónicas (eventos ContinueConversation) para evitar sobrescribir la información de contexto que la solicitud de origen ya ha establecido.
Resolución de token
Al usar el exportador de Agent 365, debe proporcionar una función de resolución de tokens que devuelva un token de autenticación.
Cuando usa el SDK de observabilidad de Agent 365 con el marco de hospedaje del agente, puede generar tokens mediante TurnContext de las actividades del agente.
En el siguiente fragmento de código se muestra cómo generar un token mediante el SDK de microsoft_agents.hosting.core. El token de autenticación generado aquí se usa para exportar los intervalos al servicio de ingesta de A365. Los agentes pueden generar un token ellos mismos, por ejemplo, usando Biblioteca de autenticación de Microsoft (MSAL), pero deben asegurarse de que el token tenga el ámbito de observabilidad.
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 un agente creado con la CLI de A365 que usa un compañero de equipo de IA y el paquete Microsoft Agent 365 Observability Hosting Library, use AgenticTokenCache para gestionar el almacenamiento en caché de tokens, automáticamente. Registre el token una vez por agente e inquilino durante un controlador de actividad y pase cache.get_observability_token como token_resolver en su configuración de observabilidad.
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(),
)
Instrumentación automática
La instrumentación automática escucha automáticamente las señales de telemetría existentes de marcos de agente (SDK) para seguimientos y las reenvía al servicio de observabilidad de Agent 365. Esta característica elimina la necesidad de que los desarrolladores escriban código de supervisión manualmente, simplifica la configuración y garantiza el seguimiento coherente del rendimiento.
Importante
La instrumentación automática rellena solo los atributos OTel estándar. Debe agregar atributos específicos de Microsoft a través de BaggageBuilder. Para ver qué atributos faltan, compara la salida del intervalo de la consola con los registros del almacén para obtener el conjunto de diferencias.
Varios SDK y plataformas admite la instrumentación automática:
| Plataforma | SDK o marcos admitidos |
|---|---|
| .NET | Kernel semántico, OpenAI, Agent Framework |
| Python | Kernel semántico, OpenAI, Agent Framework, LangChain |
| Node.js | OpenAI, LangChain |
Nota
La compatibilidad con la instrumentación automática varía según la plataforma y la implementación del SDK.
Kernel semántico
La instrumentación automática requiere el uso del generador de equipaje. Establezca el id. de agente y el id. de inquilino mediante BaggageBuilder.
Instale el paquete .
pip install microsoft-agents-a365-observability-extensions-semantic-kernel
Configure la observabilidad.
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
La instrumentación automática requiere el uso del generador de equipaje. Establezca el id. de agente y el id. de inquilino mediante BaggageBuilder.
Instale el paquete .
pip install microsoft-agents-a365-observability-extensions-openai
Configure la observabilidad.
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
La instrumentación automática requiere el uso del generador de equipaje. Establezca el id. de agente y el id. de inquilino mediante BaggageBuilder.
Instale el paquete .
pip install microsoft-agents-a365-observability-extensions-agent-framework
Configure la observabilidad.
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()
Marco de LangChain
La instrumentación automática requiere el uso del generador de equipaje. Establezca el id. de agente y el id. de inquilino mediante BaggageBuilder.
Instale el paquete .
pip install microsoft-agents-a365-observability-extensions-langchain
Configure la observabilidad.
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
Instrumentación manual
Use el SDK de observabilidad de Agent 365 para comprender el funcionamiento interno del agente.
El SDK proporciona ámbitos que puede iniciar: InvokeAgentScope, ExecuteToolScope, InferenceScope y OutputScope.
Invocación de agente
Use este ámbito al principio del proceso del agente. Al usar el ámbito del agente de invocación, se pueden capturar propiedades como el agente actual que se invoca, los datos de usuario del agente, etc.
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(...)
Ejecución de herramientas
Los siguientes ejemplos muestran cómo agregar el seguimiento de la observabilidad a la ejecución de herramientas de su agente. Este seguimiento recopila telemetría para propósitos de supervisión y auditoría.
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)
Inferencia
En los ejemplos siguientes se muestra cómo instrumentar llamadas de inferencia del modelo de IA con seguimiento de observabilidad para capturar el uso de tokens, los detalles del modelo y los metadatos de respuesta.
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)
Opción Output
Utiliza este ámbito para escenarios asíncronos en los que InvokeAgentScope, ExecuteToolScope o InferenceScope no pueden capturar datos de salida de manera síncrona. Comience OutputScope como un intervalo secundario para registrar los mensajes de salida finales después de que finalice el ámbito primario.
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 que integraste correctamente el SDK de observabilidad, examina los registros de consola generados por tu agente y los registros del SDK de observabilidad.
Establezca la variable de entorno ENABLE_A365_OBSERVABILITY_EXPORTER en false. Esta configuración exporta los tramos (trazas) a la consola.
Para investigar los errores de exportación, habilite el registro detallado estableciendo ENABLE_A365_OBSERVABILITY_EXPORTER en true y configurando el registro de depuración en el inicio de la aplicación:
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)
Mensajes clave del registro:
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.
Ver registros exportados
Para ver la telemetría de agentes en Microsoft Purview o Microsoft Defender, asegúrese de que se cumplan los siguientes requisitos:
- Microsoft Purview: la auditoría debe estar activada para su organización. Para obtener instrucciones, consulte Activar o desactivar la auditoría.
-
Microsoft Defender: es necesario configurar la búsqueda avanzada para acceder a la tabla
CloudAppEvents. Para obtener más información, consulte la tabla CloudAppEvents en el esquema de búsqueda avanzada.
Validar para la publicación en tienda
Importante
Para una validación del almacén con éxito, el agente debe implementar los ámbitos InvokeAgentScope, InferenceScope y ExecuteToolScope. Estos tres ámbitos son necesarios para la publicación.
Antes de publicar, use los registros de consola para validar la integración de observabilidad para el agente mediante la implementación de los ámbitos necesarios invoke agent, execute tool, inference y output. Luego compara los registros de tu agente con las siguientes listas de atributos para verificar que todos los atributos requeridos estén presentes. Defina los atributos en cada ámbito o mediante el generador de equipaje, e incluya atributos opcionales según considere oportuno.
Para obtener más información sobre los requisitos de publicación en la tienda, consulte las directrices de validación de la tienda.
Atributos InvokeAgentScope
La siguiente lista resume los atributos de telemetría obligatorios y opcionales que se registran al iniciar un 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
La siguiente lista resume los atributos de telemetría obligatorios y opcionales que se registran al iniciar un 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
La siguiente lista resume los atributos de telemetría obligatorios y opcionales que se registran al iniciar un 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
La siguiente lista resume los atributos de telemetría obligatorios y opcionales que se registran al iniciar un OutputScope. Utilice este ámbito para escenarios asincrónicos donde el ámbito del elemento primario no puede capturar los datos de salida de forma 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"
}
Prueba del agente con observabilidad
Después de implementar la observabilidad en su agente, pruébelo para asegurarse de que captura la telemetría correctamente. Siga la guía de pruebas para configurar su entorno. A continuación, céntrese principalmente en la sección Ver registros de observabilidad para comprobar que su implementación de observabilidad funciona según lo previsto.
Comprobación:
- Vaya a:
https://admin.cloud.microsoft/#/agents/all. - Seleccione su agente > Actividad
- Verá las sesiones y las llamadas a herramientas
Solución de problemas
Esta sección describe problemas comunes al implementar y utilizar la observabilidad.
| Problema | Description |
|---|---|
| Los datos de observabilidad no aparecen | No hay telemetría visible porque la exportación no está habilitada, la configuración es incorrecta o la resolución del token falla. |
| Falta el id. de inquilino o el del agente: intervalos omitidos | Los intervalos se quitan antes de la exportación cuando faltan los atributos de identidad necesarios para la creación de particiones. |
| Error de resolución de tokens: exportación omitida o no autorizada | Las solicitudes de exportación fallan o se omiten cuando el resolver no devuelve ningún token o encuentra una excepción. |
| HTTP 401 No autorizado | La autenticación tiene éxito sintácticamente, pero el token no es válido para la ingestión debido a su alcance, tipo o caducidad. |
| HTTP 403 Prohibido | Se deniega el acceso debido a brechas de licenciamiento del tenant o a permisos de observabilidad faltantes. |
| HTTP 403 Prohibido — Id. de agente no coincide | La solicitud es rechazada cuando la identidad del agente en la URL no coincide con la identidad representada por el token. |
| Errores HTTP 429 o 5xx - Errores transitorios | La limitación temporal de velocidad o los errores en el servicio interrumpen la exportación y pueden requerir ajustar la configuración de reintento. |
| Tiempo de espera de exportación | Los lotes de telemetría superan las ventanas de tiempo de espera configuradas debido a la latencia de la red o a la capacidad de respuesta del punto final. |
| La exportación es correcta, pero la telemetría no aparece en Defender ni en Purview. | La ingestión se completa, pero la visibilidad aguas abajo se retrasa o se bloquea debido a los requisitos previos del producto. |
Sugerencia
La Guía de solución de problemas de Agent 365 contiene recomendaciones generales, procedimientos recomendados y vínculos a recursos de solución de problemas para cada parte del ciclo de vida del desarrollo de Agent 365.
Los datos de observabilidad no aparecen
Síntomas:
- El agente está en ejecución
- No hay telemetría en el Centro de administración
- No se puede ver la actividad del agente
Causa principal:
- La observabilidad no está habilitada
- Errores de configuración
- Problemas con el resolutor de tokens
Soluciones: pruebe los siguientes pasos para solucionar el problema:
Verifica que el exportador de observabilidad esté habilitado
Debe habilitar explícitamente el exportador de Agent 365. Cuando se deshabilita, el SDK vuelve a un exportador de consola y la telemetría no se envía al servicio. Para detalles de configuración, consulte Configuración.
Comprobar configuración de la resolución de tokens
El exportador requiere un solucionador de tokens válido que devuelva un token de portador para cada solicitud de exportación. Si falta el solucionador de tokens o devuelve
null, la exportación se omite silenciosamente. Asegúrate de que tu código implemente correctamente el resolvedor de tokens. Para obtener detalles, consulte Resolución de tokens.Comprobar errores en los registros
Habilite el registro detallado y use el
az webapp log tailcomando para buscar registros de errores relacionados con la observabilidad. Para detalles sobre cómo habilitar el registro por plataforma, véase Validar localmente.# Look for observability-related errors az webapp log tail --name <your-app-name> --resource-group <your-resource-group> | Select-String "observability"Verificar exportación de telemetría
Confirme que la telemetría se genera y se exporta según lo previsto.
- Agregue un exportador de consola y compruebe si la telemetría se genera localmente. Para obtener detalles sobre cómo usar el exportador de consola y validar la salida, consulte Validar localmente.
Falta el identificador de inquilino o el del agente: intervalos omitidos
Síntomas: el sistema descarta intervalos en silencio y nunca los exporta. Algunos SDKs registran un recuento de spans omitidos o un mensaje como «No se encontraron spans con identidad de tenant o agente». Otros los descartan sin registrar nada en el log.
Resolución
- Antes de la exportación, el SDK divide los segmentos por las identidades de los inquilinos y de los agentes. El sistema quita intervalos que carecen de un identificador de inquilino o de agente y nunca los envía al servicio.
- Asegúrese de que
BaggageBuilderestá configurado con el identificador de inquilino y el identificador del agente antes de crear intervalos. Estos valores se propagan a través del contexto de OpenTelemetry y se adjuntan a todos los intervalos creados dentro del ámbito del equipaje. Para la API específica de la plataforma, consulte Atributos de equipaje. - Confirme que la actividad
TurnContexttiene un destinatario válido con la identidad del agente si usa el middleware de equipaje, o activa el asistente de contexto del paquete de integración de hospedaje para rellenar esos identificadores.
Error de resolución de tokens: exportación omitida o no autorizada
Síntomas: el resolvedor de tokens devuelve null o genera un error. Dependiendo del SDK, la exportación se omite por completo o la solicitud se envía sin un encabezado de autorización y falla con HTTP 401.
Resolución
- El resolutor de tokens se requiere al inicializar. Si falta, el exportador genera un error al iniciarse. Compruebe que se haya proporcionado un solucionador de tokens y devuelva un token de portador válido.
- Asegúrate de que el tenant ID y el agent ID correctos se usan para
BaggageBuilder, porque estos valores se pasan al solucionador de tokens. - Para agentes hospedados en Azure, compruebe que la Identidad administrada tenga el permiso de API requerido para el ámbito de observabilidad.
HTTP 401 No autorizado
Síntomas: la exportación falla con HTTP 401. El exportador no reintenta en caso de este error.
Resolución
- Compruebe que la audiencia del token coincide con el alcance del punto de conexión de observabilidad.
- Compruebe que el solucionador de tokens no esté devolviendo un token de usuario delegado, un token para una audiencia incorrecta o un token caducado.
HTTP 403 Prohibido
Síntomas: la exportación falla con HTTP 403. El exportador no reintenta en caso de este error.
Causa raíz: un error HTTP 403 puede tener diferentes causas. Revise las siguientes soluciones en orden.
Resolución
Licencia que falta: compruebe que su cliente tenga asignada una de las siguientes licencias en el Centro de administración de Microsoft 365:
- Prueba: Microsoft 365 E7
- Microsoft 365 E7
- Microsoft Agent 365 Frontier
Falta
Agent365.Observability.OtelWriteel permiso: si ha actualizado recientemente los paquetes de observabilidad, debe conceder este permiso. Consulta la nota importante en la siguiente sección.
Importante
Los agentes existentes que actualizan a estas versiones de paquetes requieren un paso adicional.
Este paso se aplica solo si actualizas un agente existente. La instalación de nuevos agentes no requiere este paso. Si va a actualizar a las siguientes versiones de paquete o versiones más recientes, debe conceder el nuevo permiso Agent365.Observability.OtelWrite a la identidad (identidad administrada o registro de aplicaciones). Sin este permiso, la exportación de telemetría produce un error HTTP 403.
| Plataforma | Versión mínima que requiere este paso |
|---|---|
| .NET | 0.3-beta |
| Node.js | 0.2.0-preview.1 |
| Python | 0.3.0 |
Conceda el permiso mediante una de las siguientes opciones.
Opción A — CLI de Agent 365 (requiere una cuenta de Administrador global; ejecute el comando desde el directorio del proyecto del agente que contiene a365.config.json, o use --agent-name)
a365 setup permissions bot
O bien, sin un archivo de configuración:
a365 setup permissions bot --agent-name "<agent-name>"
Este comando concede todos los permisos faltantes en el plano técnico, incluidos los ámbitos de observabilidad.
Opción B — Entra Portal (no se requieren archivos de configuración; requiere acceso de administrador global al registro de la aplicación blueprint)
- Vaya al portal de Entra>Registros de aplicaciones> y seleccione su aplicación de plano técnico.
- Vaya a Permisos de API>Agregar un permiso>API que usa mi organización> busca
9b975845-388f-4429-889e-eab1ef63949c. - Seleccione Permisos delegados>, active
Agent365.Observability.OtelWrite>Agregar permisos. - Repita los pasos 2–3, esta vez seleccione Permisos de aplicación>, active
Agent365.Observability.OtelWrite>Agregar permisos. - Haga clic en Conceder consentimiento de administrador y confirme.
Tanto Agent365.Observability.OtelWrite (Delegado) como Agent365.Observability.OtelWrite (Aplicación) deben mostrar el estado Granted.
HTTP 403 Prohibido — Id. de agente no coincide
Síntomas: la exportación falla con HTTP 403 y un mensaje del servidor similar a 403 Forbidden, con errores de agent-ID-mismatch al llamar a los puntos de conexión de trazas de Agent 365.
Causa raíz: este error ocurre cuando usa el Id. del cliente de plano técnico en lugar del Id. del cliente de la instancia del agente al configurar los detalles del agente. El id. del agente en la URL de exportación no coincide con la identidad autorizada por el token, por lo que el punto de conexión de los seguimientos rechaza la solicitud.
Resolución
- Compruebe si el id. de inquilino se agrega a la lista de inquilinos permitidos del Agent 365.
- Establece los detalles del agente con el Id. de cliente de la instancia del agente (no el id. de cliente de plano técnico).
- Compruebe la URL de exportación que se genera: se registra si habilita el registrador. Confirme que el id. del agente en la URL coincida con el id. de cliente de la instancia del agente.
- Para habilitar el registro de diagnóstico por SDK, consulte Validar localmente.
Errores HTTP 429 o 5xx - Errores transitorios
Síntomas: la exportación falla con un código de estado HTTP transitorio como 429 o 5xx.
Resolución
- Estos errores suelen ser transitorios y se resuelven por sí solos. Los SDK de Python y JavaScript vuelven a intentarlo automáticamente en códigos de estado HTTP 408, 429 y 5xx hasta tres veces con retroceso exponencial. El SDK de .NET no reintenta automáticamente.
- Si persisten errores, revise el panel de estado del servicio.
- Considere reducir la frecuencia de exportación aumentando el retraso programado entre lotes o incrementando el tamaño máximo de lote de exportación. Para opciones de configuración por plataforma, consulte la tabla
Agent365ExporterOptionsen Configuration.
Tiempo de espera de exportación
Síntomas: Se agota el tiempo de espera de los intentos de exportación.
Resolución
- Compruebe la conectividad de red al punto de conexsión de observabilidad.
- Los tiempos de espera por defecto varían según la plataforma. El tiempo de espera de solicitud HTTP predeterminado es de 30 segundos. Algunos SDK también tienen un tiempo de espera general e independiente del exportador, que cubre todo el proceso de exportación, incluidos los reintentos. Para conocer las propiedades exactas y los valores predeterminados por plataforma, consulte la tabla
Agent365ExporterOptionsen Configuración. - Si los tiempos de espera ocurren con frecuencia, incrementa el valor de tiempo de espera relevante en las opciones de exportador.
La exportación es correcta, pero la telemetría no aparece en Defender ni en Purview.
Síntomas: los registros muestran una exportación exitosa, pero la telemetría no es visible en Microsoft Defender ni en Microsoft Purview.
Resolución
- Verifica que cumples los requisitos previos para ver los registros exportados. Para Purview, la auditoría debe estar activada. Para Defender, debes configurar la búsqueda avanzada. Para obtener más información consulte Ver los registros exportados.
- La telemetría puede tardar varios minutos en actualizarse tras una exportación correcta. Espera a que aparezcan los datos antes de investigar más.
Para obtener más información sobre las pruebas de observabilidad, consulte:
Contenido relacionado
- Conceptos de observabilidad de Agent 365: flujo de datos, modelos de identidad, autenticación, ámbitos y límites aplicables a cada ruta de integración.
- Referencia de atributos de observabilidad de Agent 365: esquema canónico de atributos de intervalos al que debe ajustarse todo intervalo ingerido por Agent 365.
- Distribución de Microsoft para OpenTelemetry - el SDK unificado recomendado para nuevas integraciones.