Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Important
Questo articolo documenta l'SDK di osservabilità dell'Agente 365 obsoleto. Le integrazioni esistenti continuano a funzionare, ma non usare questo SDK per nuove integrazioni. Per nuovi sviluppi, usa la distro Microsoft OpenTelemetry. Prima di aggiornare un'integrazione esistente, consulta la guida alla migrazione per la tua lingua:
- Guida alla migrazione di Python
- Guida alla migrazione di JavaScript/TypeScript
- Guida alla migrazione di .NET
Per il modello dati sottostante, identità e autenticazione, ambiti e consenso, e i limiti che si applicano a ogni percorso di integrazione, vedi concetti di osservabilità di Agent 365.
Note
L'osservabilità è uno dei livelli di funzionalità incrementali in Introduzione allo sviluppo di Agent 365 e si applica a tutti i tipi di agente.
Per partecipare all'ecosistema Agent 365, aggiungi capacità di osservabilità Agent 365 al tuo agente. Agent 365 Observability si basa su OpenTelemetry (OTel) e fornisce un framework unificato per catturare telemetria in modo coerente e sicuro su tutte le piattaforme agent. Implementando questo componente richiesto, permetti agli amministratori IT di monitorare l'attività del tuo agente nel centro amministrativo Microsoft e consenti ai team di sicurezza di utilizzare Defender e Purview per la conformità e il rilevamento delle minacce.
Vantaggi principali
- Visibilità end-to-end: Acquisisci una telemetria completa per ogni invocazione di un agente, comprese le sessioni, le invocazioni di strumenti e le eccezioni, fornendoti una completa tracciabilità su tutte le piattaforme.
- Abilitazione di sicurezza e conformità: Inserisci log di audit unificati in Defender e Purview, abilitando scenari di sicurezza avanzati e report di conformità per il tuo agente.
- Flessibilità multipiattaforma: basarsi su standard OTel e supportare runtime e piattaforme diverse, ad esempio Copilot Studio, Foundry e futuri framework per agenti.
- Efficienza operativa per gli amministratori: offrire un'osservabilità centralizzata in interfaccia di amministrazione di Microsoft 365, ridurre i tempi di risoluzione dei problemi e migliorare la governance con i controlli degli accessi in base al ruolo per i team IT che gestiscono l'agente.
Agenti supportati
I tipi di agente seguenti supportano l'osservabilità di Agent 365:
- Agenti abilitati per Microsoft Agent 365: usare l'SDK di osservabilità per instrumentare l'agente.
- Agenti del motore personalizzati: usare l'SDK di osservabilità per instrumentare l'agente.
- Agenti dichiarativi: l'osservabilità è supportata per la configurazione predefinita. Non è necessaria alcuna implementazione dell'SDK.
Installation
Usa questi comandi per installare i moduli di osservabilità per le lingue supportate da Agent 365.
Installa i pacchetti principali di osservabilità e runtime. Tutti gli agenti che usano Agent 365 Observability necessitano di questi pacchetti.
pip install microsoft-agents-a365-observability-core
pip install microsoft-agents-a365-runtime
Se l'agente utilizza il pacchetto Microsoft Agents Hosting, è necessario installare il pacchetto di integrazione per l'hosting. Fornisce middleware che popola automaticamente bagagli e ambiti da TurnContexte include la memorizzazione nella cache dei token per l'utilità di esportazione dell'osservabilità.
pip install microsoft-agents-a365-observability-hosting
Se l'agente usa uno dei framework di intelligenza artificiale supportati, installare l'estensione di strumentazione automatica corrispondente per acquisire automaticamente i dati di telemetria senza codice di strumentazione manuale. Per informazioni dettagliate sulla configurazione, vedere Strumentazione automatica.
# 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
Configuration
Usa le seguenti impostazioni per abilitare e personalizzare l'Osservabilità dell'Agente 365 per il tuo agente.
Imposta la ENABLE_A365_OBSERVABILITY_EXPORTER variabile ambiente a true per l'osservabilità. In Agent 365 SDK 2.0 e versioni successive, l'esportatore utilizza sempre la route service-to-service (S2S) e si autentica con l'autenticazione app-only configurata token_resolver. Se abiliti l'esportatore senza un risolver, Python mantiene il fallback dell'exporter console e non invia telemetria all'Agent 365.
from microsoft_agents_a365.observability.core import configure
def token_resolver(agent_id: str, tenant_id: str) -> str | None:
# Return a validated app-only observability token for this agent and tenant.
return "<app-only-observability-token>"
configure(
service_name="my-agent-service",
service_namespace="my.namespace",
token_resolver=token_resolver,
)
Il risolver dei token è escluso dal login alla console.
È possibile personalizzare il comportamento del componente di esportazione passando un'istanza Agent365ExporterOptions a exporter_options. Quando exporter_options viene specificato, ha la precedenza sui token_resolver parametri 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,
)
Nella tabella seguente vengono descritti i parametri facoltativi per configure().
| Parametro | Description | Default |
|---|---|---|
logger_name |
Nome del logger Python usato per il debug e l'output del log della console. | microsoft_agents_a365.observability.core |
exporter_options |
Agent365ExporterOptions Istanza che configura insieme il sistema di risoluzione dei token e la categoria di cluster. |
None |
suppress_invoke_agent_input |
Quando True, elimina i messaggi di input su InvokeAgent intervalli. |
False |
Nella tabella seguente vengono descritte le proprietà facoltative per Agent365ExporterOptions.
| Proprietà | Description | Default |
|---|---|---|
use_s2s_endpoint |
Obsoleto e ignorato. L'Agent 365 SDK 2.0 e successivi utilizza sempre la route S2S, anche quando questo valore è False. |
False (ignorato) |
max_queue_size |
Dimensione massima della coda per il processore batch. | 2048 |
scheduled_delay_ms |
Ritardo in millisecondi tra batch di esportazione. | 5000 |
exporter_timeout_ms |
Timeout in millisecondi per l'operazione di esportazione. | 30000 |
max_export_batch_size |
Dimensioni massime del batch per le operazioni di esportazione. | 512 |
Attributi di bagaglio
Utilizza BaggageBuilder per impostare informazioni contestuali che passano attraverso tutti gli intervalli di una richiesta.
L'SDK implementa una SpanProcessor che copia tutte le informazioni di contesto non vuote in span appena avviate senza sovrascrivere attributi esistenti.
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
Per popolare automaticamente il BaggageBuilder dal TurnContext, usare l'helper populate nel pacchetto microsoft-agents-a365-observability-hosting. Questo helper estrae automaticamente il chiamante, l'agente, il tenant, il canale e i dettagli della conversazione dall'attività.
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 per la gestione dei bagagli
Se l'agente usa il pacchetto di integrazione dell'hosting, registrare il middleware del bagaglio per popolare automaticamente i bagagli per ogni richiesta in ingresso. Questo passaggio rimuove la necessità di chiamare BaggageBuilder manualmente in ogni gestore attività.
Registra BaggageMiddleware nel set di middleware dell'adattatore. Estrae automaticamente il chiamante, l'agente, il tenant, il canale e i dettagli della conversazione da ogni TurnContext in ingresso e esegue il wrapping della richiesta in un ambito di contesto.
from microsoft_agents_a365.observability.hosting import BaggageMiddleware
adapter.use(BaggageMiddleware())
In alternativa, usare ObservabilityHostingManager per configurare il middleware di contesto insieme ad altre funzionalità di hosting.
from microsoft_agents_a365.observability.hosting import ObservabilityHostingManager, ObservabilityHostingOptions
options = ObservabilityHostingOptions(enable_baggage=True)
ObservabilityHostingManager.configure(adapter.middleware_set, options)
Il middleware ignora la configurazione del bagaglio per risposte asincrone (ContinueConversation eventi) per evitare di sovrascrivere il bagaglio già impostato dalla richiesta di origine.
Sistema di risoluzione dei token
Quando usi l'esportatore Agent 365 nell'Agent 365 SDK 2.0 e versioni successive, fornisci un resolver di token che restituisca il token finale di osservabilità solo app per l'istanza dell'agente di esportazione. L'esportatore invia sempre telemetria alla rotta S2S e non torna alla rotta delegata. Un'istanza di agente registrata tramite Agent 365 non ha bisogno del Agent365.Observability.OtelWrite permesso o del consenso amministrativo per esportare tramite questo percorso.
Usa lo scambio Federated Managed Identity (FMI) a due passaggi per ottenere il token solo dell'app:
- Ottieni un token blueprint
client_credentialsperapi://AzureADTokenExchange/.defaultconfmi_pathimpostato sull'ID client dell'istanza agente. - Ottieni un token agent-instance
client_credentialsperapi://9b975845-388f-4429-889e-eab1ef63949c/.default. Passa il token dello step 1 comeclient_assertion, e impostaclient_assertion_typeaurn:ietf:params:oauth:client-assertion-type:jwt-bearer.
Per la configurazione completa dell'autenticazione, vedi Agent 365 abilitato tramite S2S. Per implementazioni complete dei servizi di token, consulta i campioni di Agent 365 per Node.js, Python e .NET.
Il tuo resolver deve:
- Restituisci un token solo app per l'istanza e il tenant dell'agente di esportazione. Non restituire mai l'asserzione intermedia del blueprint, un token blueprint, un token utente o un token OBO.
- Valida il token prima di restituirlo. Accetta
idtyp=app. Seidtypè assente, accettiamo solo un token che abbia un claimrolesnon vuoto o un claimoidnon vuoto uguale asub. Rifiuta i token che hanno un claimscpo un valoreidtypdiverso, i token scaduti e i token il cuiaudnon è9b975845-388f-4429-889e-eab1ef63949coapi://9b975845-388f-4429-889e-eab1ef63949c. - Memorizza il token nella cache e aggiornalo prima che scada. L'esportatore chiama il resolver una volta per ogni identità tenant e agent in ogni lotto di esportazione.
Note
Migra dall'SDK 1.x: L'SDK 2.0 rimuove lo scambio di token delegato per l'esportazione dell'osservabilità. Sostituisci il codice del token delegato nel tuo agente con un resolver solo app, come mostrato negli esempi seguenti. Gli agenti che rimangono sull'SDK 1.x ed esportano sulla rotta delegata hanno comunque bisogno del permesso Agent365.Observability.OtelWrite delegato e del consenso amministratore. Il comando a365 setup all non configura quel permesso per gli agenti blueprint. Per concederlo, vedi Concedere il permesso.
Chiama AgenticTokenCache.refresh_observability_token(agent_id, tenant_id, acquire_app_only_obs_token) dal tuo token_resolver. La cache trasferisce l'ambito di osservabilità /.default al tuo callback di acquisizione e restituisce il token cacheato.
from microsoft_agents_a365.observability.core import configure
from microsoft_agents_a365.observability.hosting.token_cache_helpers import AgenticTokenCache
cache = AgenticTokenCache()
async def acquire_app_only_obs_token(
agent_id: str,
tenant_id: str,
scopes: list[str],
) -> str:
# Run the FMI exchange described earlier, validate the token, and return it.
return "<app-only-observability-token>"
async def token_resolver(agent_id: str, tenant_id: str) -> str:
return await cache.refresh_observability_token(
agent_id, tenant_id, acquire_app_only_obs_token
)
configure(
service_name="my-agent-service",
service_namespace="my.namespace",
token_resolver=token_resolver,
)
Python supporta anche un resolver sincrono che restituisce un token da una cache thread-safe. I campioni di Agent 365 utilizzano questo pattern, che evita i vincoli di eseguire un resolver asincrono sul thread di esportazione.
Per migrare dall'SDK 1.x, rimuovere la AGENT_APP.auth.exchange_token chiamata che richiedeva l'ambito di osservabilità e quella AgenticTokenCache.register_observability che passava un AgenticTokenStruct. In SDK 2.0, register_observability è un no-op obsoleto.
Strumentazione automatica
La strumentazione automatica rileva automaticamente i segnali di telemetria esistenti dai framework agentici (SDK) per il tracciamento e li inoltra al servizio di osservabilità di Agent 365. Questa funzione elimina la necessità per gli sviluppatori di scrivere manualmente il codice di monitoraggio, semplifica la configurazione e garantisce un monitoraggio costante delle prestazioni.
Important
La strumentazione automatica popola solo gli attributi OTel standard. È necessario aggiungere attributi specifici di Microsoft tramite BaggageBuilder. Per vedere quali attributi mancano, confronta l'output degli span della console con i log dello store per l'insieme delle differenze.
Molteplici SDK e piattaforme supportano l'auto-strumentazione:
| Platform | SDK e framework supportati |
|---|---|
| .NET | Kernel semantico, OpenAI, Agent Framework |
| Python | Kernel semantico, OpenAI,Agent Framework, LangChain |
| Node.js | OpenAI, LangChain |
Note
Il supporto per la strumentazione automatica varia in base all'implementazione della piattaforma e dell'SDK.
Nucleo Semantico
La strumentazione automatica richiede l'uso di un builder del baggage. Imposta l'ID agente e l'ID tenant usando BaggageBuilder.
Installare il pacchetto .
pip install microsoft-agents-a365-observability-extensions-semantic-kernel
Configura l'osservabilità.
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 strumentazione automatica richiede l'uso di un builder del baggage. Imposta l'ID agente e l'ID tenant usando BaggageBuilder.
Installare il pacchetto .
pip install microsoft-agents-a365-observability-extensions-openai
Configura l'osservabilità.
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
Framework dell'agente
La strumentazione automatica richiede l'uso di un builder del baggage. Imposta l'ID agente e l'ID tenant usando BaggageBuilder.
Installare il pacchetto .
pip install microsoft-agents-a365-observability-extensions-agent-framework
Configura l'osservabilità.
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()
LangChain Framework
Note
La strumentazione automatica per il framework LangChain supporta anche LangGraph e Deep Agents. La stessa estensione cattura automaticamente la telemetria per gli agenti creati con uno qualsiasi di questi framework.
La strumentazione automatica richiede l'uso del baggage builder. Imposta l'ID agente e l'ID tenant usando BaggageBuilder.
Installare il pacchetto .
pip install microsoft-agents-a365-observability-extensions-langchain
Configura l'osservabilità.
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
Strumentazione manuale
Usa l'SDK di osservabilità dell'Agent 365 per comprendere il funzionamento interno dell'agente.
L'SDK fornisce ambiti che è possibile avviare: InvokeAgentScope, ExecuteToolScope, InferenceScopee OutputScope.
Invocazione dell'agente
Usa questo ambito all'inizio del processo da agente. Utilizzando l'ambito dell'agente invoke, puoi catturare proprietà come l'agente attualmente invocato, i dati utente dell'agente e altro ancora.
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(...)
Esecuzione dello strumento
I seguenti esempi mostrano come aggiungere il tracciamento dell'osservabilità all'esecuzione dello strumento del tuo agente. Questo tracciamento cattura la telemetria a scopo di monitoraggio e audit.
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)
Inferenza
Gli esempi seguenti illustrano come instrumentare le chiamate di inferenza del modello di intelligenza artificiale con il rilevamento dell'osservabilità per acquisire l'utilizzo dei token, i dettagli del modello e i metadati della risposta.
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)
Risultato
Usare questo ambito per scenari asincroni in cui InvokeAgentScope, ExecuteToolScopeo InferenceScope non è in grado di acquisire i dati di output in modo sincrono. Avviare OutputScope come intervallo figlio per registrare i messaggi di output finali al termine dell'ambito padre.
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
Valida localmente
Per verificare che tu abbia integrato con successo con l'SDK di osservabilità, esamina i log della console generati dal tuo agente e i log dall'SDK di osservabilità.
Impostare la variabile di ambiente ENABLE_A365_OBSERVABILITY_EXPORTER su false. Questa impostazione esporta gli intervalli (tracce) sulla console.
Per analizzare gli errori di esportazione, abilitate la registrazione dettagliata impostando ENABLE_A365_OBSERVABILITY_EXPORTER su true e configurando la registrazione di debug all'avvio dell'applicazione.
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)
Messaggi chiave del 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.
Visualizzazione dei log esportati
Per visualizzare la telemetria degli agenti in Microsoft Purview o Microsoft Defender, assicurati di soddisfare i seguenti requisiti:
- Microsoft Purview: il controllo deve essere attivato per l'organizzazione. Per istruzioni, vedere Attivare o disattivare il controllo.
-
Microsoft Defender: la ricerca avanzata deve essere configurata per accedere alla tabella
CloudAppEvents. Per informazioni dettagliate, vedere la tabella CloudAppEvents nello schema di ricerca avanzata.
Valida per la pubblicazione su piattaforma
Important
Per la convalida del negozio, l'agente deve implementare i InvokeAgentScope, InferenceScope e ExecuteToolScope scopi. Questi tre ambiti sono necessari per la pubblicazione.
Prima della pubblicazione, utilizzare i log della console per convalidare l'integrazione dell'osservabilità per l'agente implementando gli scope necessari invoke agent, execute tool, inference e output. Poi confronta i log del tuo agente con le seguenti liste di attributi per verificare che tutti gli attributi richiesti siano presenti. Cattura attributi su ogni mirino o tramite il bagluggage builder, e includi attributi opzionali a tua discrezione.
Per maggiori informazioni sui requisiti di pubblicazione dei negozi, consulta le linee guida per la validazione dei negozi.
attributi InvokeAgentScope
L'elenco seguente riassume gli attributi di telemetria richiesti e opzionali registrati quando si avvia 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"
}
attributi ExecuteToolScope
L'elenco seguente riassume gli attributi di telemetria richiesti e opzionali registrati quando si avvia 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"
}
attributi InferenceScope
L'elenco seguente riassume gli attributi di telemetria richiesti e opzionali registrati quando si avvia 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"
}
attributi OutputScope
L'elenco seguente riassume gli attributi di telemetria richiesti e opzionali registrati quando si avvia un OutputScope. Usare questo contesto per scenari asincroni in cui il contesto padre non può acquisire i dati di output in modo sincrono.
"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"
}
Testare l'agente utilizzando funzioni di monitoraggio e analisi
Dopo aver implementato l'osservabilità nell'agente, testarla per assicurarsi che acquisisca correttamente i dati di telemetria. Segui la guida ai test per impostare il tuo ambiente. Concentrarsi quindi principalmente sulla sezione Visualizza log di osservabilità per verificare che l'implementazione dell'osservabilità funzioni come previsto.
Verifica:
- Passa a:
https://admin.cloud.microsoft/#/agents/all - Seleziona il tuo agente > Attività
- Vedi le sessioni e le chiamate agli strumenti
Troubleshooting
Questa sezione descrive i problemi comuni durante l'implementazione e l'utilizzo dell'osservabilità.
| Problema | Description |
|---|---|
| I dati di osservabilità non vengono visualizzati | Nessun dato di telemetria è visibile perché l'esportazione non è abilitata, la configurazione non è corretta o la risoluzione dei token non riesce. |
| ID tenant o ID agente mancanti - segmenti ignorati | Gli intervalli vengono eliminati prima dell'esportazione quando mancano gli attributi identity necessari per il partizionamento. |
| Errore di risoluzione del token - esportazione saltata o non autorizzata | L'esportazione fallisce quando il resolver non restituisce alcun token o incontra un'eccezione. |
| HTTP 401 Non autorizzato | L'autenticazione ha esito positivo sintatticamente, ma il token non è valido per l'inserimento a causa di ambito, tipo o scadenza. |
| HTTP 403 Vietato | L'accesso viene negato a causa di lacune nelle licenze del tenant, di una registrazione Agent 365 mancante o di un'autorizzazione di osservabilità mancante quando richiesta. |
| HTTP 403 Accesso negato - ID agente non corrispondente | La richiesta viene rifiutata quando l'identità dell'agente nell'URL non corrisponde all'identità rappresentata dal token. |
| Errori HTTP 429 o 5xx - Errori temporanei | La limitazione temporanea della velocità o malfunzionamenti lato servizio interrompono l'esportazione e potrebbero richiedere la regolazione della configurazione dei tentativi. |
| Timeout di esportazione | I batch di telemetria superano le finestre di timeout configurate a causa della latenza di rete o della velocità di risposta dell'endpoint. |
| L'esportazione ha esito positivo, ma i dati di telemetria non vengono visualizzati in Defender o Purview | L'inserimento viene completato, ma la visibilità downstream viene ritardata o bloccata dai prerequisiti del prodotto. |
Tip
La Guida alla risoluzione dei problemi dell'Agente 365 contiene raccomandazioni di alto livello, best practice e link a contenuti di risoluzione dei problemi per ogni fase del ciclo di sviluppo dell'Agente 365.
I dati di osservabilità non compaiono
Sintomi:
- L'agente è in corsa
- Niente telemetria nel centro amministrativo
- Non si vede l'attività degli agenti
Causa radice:
- L'osservabilità non è abilitata
- Errori di configurazione
- Problemi di risoluzione dei token
Soluzioni: Prova i seguenti passaggi per risolvere il problema:
Controllare che l'esportatore di osservabilità sia abilitato
È necessario abilitare in modo esplicito l'utilità di esportazione di Agent 365. Se disabilitato, l'SDK passa a un'utilità di esportazione su console e i dati di telemetria non vengono inviati al servizio. Per informazioni dettagliate sulla configurazione, vedere Configurazione.
Controlla la configurazione del token resolver
L'esportatore richiede un resolver di token valido che restituisca un token di osservabilità per la sola app per ogni richiesta di esportazione. Se il resolver manca, non restituisce alcun token o genera un'eccezione, l'esportazione non invia una richiesta. Assicurati che il tuo codice implementi il resolver dei token. Per informazioni dettagliate, vedere Sistema di risoluzione dei token.
Controlla la presenza di errori nei log
Abilitare la registrazione dettagliata e usare il
az webapp log tailcomando per cercare nei log gli errori correlati all'osservabilità. Per informazioni dettagliate su come abilitare la registrazione per ogni piattaforma, vedere Convalidare localmente.# Look for observability-related errors az webapp log tail --name <your-app-name> --resource-group <your-resource-group> | Select-String "observability"Verifica l'esportazione della telemetria
Conferma che la telemetria è generata ed esportata come previsto.
- Aggiungere un esportatore della console e verificare se la telemetria viene generata localmente. Per informazioni dettagliate su come usare l'utilità di esportazione della console e convalidare l'output, vedere Convalidare localmente.
ID tenant o ID agente mancanti: intervalli ignorati
Sintomi: Il sistema elimina silenziosamente i segmenti e non li esporta mai. Alcuni SDK registrano un conteggio degli intervalli ignorati o un messaggio, ad esempio "Nessun intervallo con l'identità tenant/agente trovata". Altri li rilasciano senza registrazione.
Risoluzione:
- Prima dell'esportazione, le partizioni SDK si estendono in base all'identità del tenant e dell'agente. Il sistema elimina gli intervalli che mancano di un ID tenant o di un ID agente e non li invia mai al servizio.
- Assicurarsi che
BaggageBuildersia configurato con l'ID tenant e l'ID agente prima di creare intervalli. Questi valori vengono propagati attraverso il contesto OpenTelemetry e si collegano a tutti gli intervalli creati nell'ambito del bagaglio. Per l'API specifica della piattaforma, vedere Attributi del bagaglio. - Verificare che l'attività
TurnContextabbia un destinatario valido con identità agente se si utilizza il baggage middleware o il turn context helper dal pacchetto di integrazione dell'hosting per popolare gli ID.
Errore di risoluzione del token: esportazione ignorata o non autorizzata
Sintomi: Il risolutore di token restituisce null, restituisce un token vuoto o genera un errore. L'esportazione fallisce senza inviare una richiesta e l'esportatore non torna alla route delegata.
Risoluzione:
- Fornire un resolver che restituisca il token di osservabilità finale solo app per l'istanza e il tenant dell'agente di esportazione.
- Assicurarsi che l'ID tenant e l'ID agente corretti vengano usati per
BaggageBuilder, perché questi valori vengono passati al resolver del token. - Controlla il comportamento specifico della lingua per l'avvio. Node.js fallisce la configurazione quando l'esportatore Agent 365 è abilitato senza un resolver, .NET fallisce la costruzione dell'exporter e Python torna all'exporter console quando non è configurato alcun resolver.
- Verifica che il tuo resolver convalidi il token prima di restituirlo. Deve rifiutare i token delegati con un claim
scpe i token emessi per il destinatario sbagliato.
HTTP 401 Non autorizzato
Sintomi: L'esportazione non riesce con HTTP 401. L'esportatore non ritenta di risolvere questo errore.
Risoluzione:
- Verifica che l'audience del token sia
9b975845-388f-4429-889e-eab1ef63949coapi://9b975845-388f-4429-889e-eab1ef63949c. - Controlla che il resolver di token non stia restituendo un token utente delegato, un token con un'attestazione
scp, un token per un pubblico errato o un token scaduto. - Conferma che il resolver restituisca il token agente-istanza finale, non l'asserzione intermedia del blueprint.
HTTP 403 Non consentito
Sintomi: L'esportazione non riesce con HTTP 403. L'esportatore non ritenta di risolvere questo errore.
Causa radice: Un errore HTTP 403 può avere cause diverse. Controllare le risoluzioni seguenti nell'ordine indicato.
Risoluzione:
Missing license: verificare che al tenant sia assegnata una delle licenze seguenti in interfaccia di amministrazione di Microsoft 365:
- Test - Microsoft 365 E7
- Microsoft 365 E7
- Microsoft Agent 365 Frontier
L'istanza dell'agente non è registrata — La via S2S accetta un token solo dell'app senza il
Agent365.Observability.OtelWriteruolo solo da un'istanza di agente registrata con l'Agent 365. Altrimenti, restituisce HTTP 403insufficient_scope. Per gli agenti blueprint,a365 setup allregistra l'istanza dell'agente. Per riprovare una registrazione fallita, eseguia365 setup all --agent-registration-only. Creare da solo un'identità Microsoft Entra non registra l'istanza dell'agente.Il token non è solo per app — Verifica che il token non includa un claim
scp. La rotta S2S richiede un token di sola applicazione.L'identità non registrata manca del ruolo dell'app — Le identità non registrate, incluse le registrazioni standard delle app usate dagli agenti del motore personalizzato, necessitano del ruolo dell'app
Agent365.Observability.OtelWrite. Per concederla, vedere Concedere l'autorizzazione.Agente SDK 1.x sulla route delegata — La route delegata necessita del permesso
Agent365.Observability.OtelWritedelegato e del consenso dell'amministratore, chea365 setup allnon configura per gli agenti blueprint. Aggiorna a SDK 2.0, oppure concedi il permesso.L'ID agente non corrisponde al token — Vedi HTTP 403 Forbidden - mancata corrispondenza dell'ID agente.
HTTP 403 Forbidden — l'ID dell'agente non corrisponde
Sintomi: L'esportazione non riesce con HTTP 403 e un messaggio del server simile a 403 Forbidden con agent-ID-mismatch errori durante la chiamata agli endpoint delle tracce di Agent 365.
Causa radice: Questo errore si verifica quando si usa l'ID client del progetto anziché l'ID client dell'istanza dell'agente quando si impostano i dettagli dell'agente. L'ID agente nell'URL di esportazione non corrisponde all'identità autorizzata dal token, quindi l'endpoint delle tracce rifiuta la richiesta.
Risoluzione:
- Verificare se l'ID tenant viene aggiunto all'elenco di tenant consentiti di Agent 365.
- Imposta i dettagli dell'agente con l'ID cliente dell'istanza dell'agente (non l'ID cliente del blueprint).
- Verifica l'URL di esportazione generato: viene registrato nei log se si attiva il logger. Verifica che l'ID dell'agente nell'URL corrisponda all'ID client dell'istanza agente.
- Per abilitare la registrazione diagnostica per SDK, vedere Convalidare localmente.
Errori HTTP 429 o 5xx - Errori temporanei
Sintomi: L'esportazione non riesce con un codice di stato HTTP temporaneo, ad esempio 429 o 5xx.
Risoluzione:
- Questi errori sono in genere temporanei e risolti autonomamente. Gli SDK Python e JavaScript riprovano automaticamente per i codici di stato HTTP 408, 429 e 5xx fino a tre volte con backoff esponenziale. L'SDK di .NET non riprova automaticamente.
- Se gli errori continuano a verificarsi, controlla il dashboard dello stato del servizio.
- Valutare la possibilità di ridurre la frequenza di esportazione aumentando il ritardo pianificato tra batch o aumentando le dimensioni massime del batch di esportazione. Per le opzioni di configurazione per piattaforma, vedere la
Agent365ExporterOptionstabella in Configurazione.
Il timeout di esportazione
Sintomi: Timeout dei tentativi di esportazione.
Risoluzione:
- Controllare la connettività di rete all'endpoint di osservabilità.
- Le impostazioni predefinite di timeout variano in base alla piattaforma. Il timeout predefinito della richiesta HTTP è di 30 secondi. Alcuni SDK hanno anche un timeout di esportazione complessivo separato che copre tutto il ciclo di esportazione, inclusi i tentativi di ripetizione. Per le proprietà esatte e le impostazioni predefinite per ogni piattaforma, vedere la
Agent365ExporterOptionstabella in Configurazione. - Se i timeout si verificano frequentemente, aumentare il valore di timeout pertinente nelle opzioni di esportazione.
L'esportazione ha esito positivo, ma i dati di telemetria non vengono visualizzati in Defender o Purview
Symptoms: I log mostrano un'esportazione riuscita, ma i dati di telemetria non sono visibili in Microsoft Defender o Microsoft Purview.
Risoluzione:
- Verificare di soddisfare i prerequisiti per la visualizzazione dei log esportati. Per Purview, il controllo deve essere attivato. Per Defender, è necessario configurare la ricerca avanzata. Per altre informazioni, vedere Visualizzazione dei log esportati.
- La compilazione dei dati di telemetria può richiedere alcuni minuti dopo un'esportazione riuscita. Attendere che i dati vengano visualizzati prima di analizzare ulteriormente.
Per altre informazioni sul test dell'osservabilità, vedere:
Contenuti correlati
- Concetti di osservabilità dell'agente 365 : flusso di dati, modelli di identità, autenticazione, ambiti e limiti applicabili a ogni percorso di integrazione.
- Riferimento all'attributo di osservabilità dell'agente 365 : schema dell'attributo span canonico a cui deve essere conforme ogni intervallo inserito da Agent 365.
- Microsoft OpenTelemetry Distro : SDK unificato consigliato per le nuove integrazioni.