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.
Importante
Per abilitare l'osservabilità in Agent 365, utilizza Microsoft OpenTelemetry Distro. Questa distribuzione fornisce un unico SDK di osservabilità su Microsoft, con tecnologia Agent 365, Microsoft Foundry, Monitoraggio di Azure e altri. L'approccio esistente descritto in questo articolo continua a funzionare senza modifiche incompatibili. Per indicazioni sulla migrazione per lingua, consulta le seguenti guide:
- Guida alla migrazione Python
- Guida alla migrazione JavaScript/TypeScript
- Guida alla migrazione .NET Per il modello di dati sottostante, identità e autenticazione, ambiti e consenso, e limiti che si applicano a ogni percorso di integrazione, consulta Concetti di osservabilità di Agent 365.
Nota
L'osservabilità è uno dei livelli di funzionalità incrementali in guida introduttiva allo sviluppo con Agent 365 e si applica a tutti i tipi di agenti.
Per partecipare all'ecosistema Agent 365, aggiungi le funzionalità di osservabilità di Agent 365 all'agente. L'osservabilità di Agent 365 si basa su OpenTelemetry (OTel) e fornisce un framework unificato per acquisire i dati di telemetria in modo coerente e sicuro in tutte le piattaforme dell'agente. Mediante l'implementazione di questo componente necessario, consenti agli amministratori IT a monitorare l'attività dell'agente nell'interfaccia di amministrazione di Microsoft e consenti ai team di sicurezza di usare Defender e Purview per la conformità e il rilevamento delle minacce.
Vantaggi chiave
- Visibilità end-to-end: acquisisci dati di telemetria completi per ogni chiamata dell'agente, incluse sessioni, chiamate agli strumenti ed eccezioni, offrendo la tracciabilità completa tra le piattaforme.
- Abilitazione di sicurezza e conformità: inserisci log di controllo unificati in Defender e Purview, abilitando scenari di sicurezza avanzati e report di conformità per l'agente.
- Flessibilità multipiattaforma: crea standard OTel e supporta runtime e piattaforme diverse, ad esempio Copilot Studio, Foundry e framework di agenti futuri.
- Efficienza operativa per gli amministratori: offri osservabilità centralizzata nell'interfaccia di amministrazione di Microsoft 365, riduci i tempi di risoluzione dei problemi e migliora la governance con i controlli degli accessi in base al ruolo per i team IT che gestiscono l'agente.
Agenti supportati
I seguenti tipi di agenti supportano l'osservabilità di Agent 365:
- Agenti abilitati Microsoft Agent 365: Usa l'SDK di osservabilità per strumentare il tuo agente.
- Agenti di motori personalizzati: Usa l'SDK di osservabilità per strumentare il tuo agente.
- Agenti dichiarativi: l'osservabilità è supportata per la configurazione predefinita. Non è richiesta alcuna implementazione SDK.
Installazione
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 utilizzano l'osservabilità Agent 365 necessitano di questi pacchetti.
pip install microsoft-agents-a365-observability-core
pip install microsoft-agents-a365-runtime
Se l'agente usa il pacchetto Microsoft Agents Hosting, installa il pacchetto di integrazione dell'hosting. Fornisce middleware che popola automaticamente baggage 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 il tuo agente utilizza uno dei framework AI supportati, installa la corrispondente estensione di strumentazione automatica per catturare la telemetria senza codice di strumentazione manuale. Per i dettagli di configurazione, vedi 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
Configurazione
Usa le seguenti impostazioni per abilitare e personalizzare l'Osservabilità di Agent 365 per il tuo agente.
Imposta la variabile d'ambiente ENABLE_A365_OBSERVABILITY_EXPORTER su true per l'osservabilità. Questa impostazione esporta i log al servizio e richiede che venga fornito un token_resolver. Altrimenti, viene utilizzato l'esportatore della console.
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,
)
Lo strumento di risoluzione dei token è escluso dal log sulla console.
È possibile personalizzare il comportamento del componente di esportazione passando un'istanza Agent365ExporterOptions a exporter_options. Quando exporter_options viene fornito, ha la precedenza sui parametri 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,
)
La tabella seguente descrive i parametri facoltativi per configure().
| Parametro | Descrizione | Default |
|---|---|---|
logger_name |
Nome del logger Python usato per il debug e l'output dei log sulla console. | microsoft_agents_a365.observability.core |
exporter_options |
Un'istanza Agent365ExporterOptions che configura lo strumento di risoluzione dei token e la categoria del cluster insieme. |
None |
suppress_invoke_agent_input |
Quando True, elimina i messaggi di input su intervalli InvokeAgent. |
False |
La tabella seguente descrive le proprietà facoltative per Agent365ExporterOptions.
| Proprietà | Descrizione | Default |
|---|---|---|
use_s2s_endpoint |
Quando True, utilizza il percorso dell'endpoint tra servizi. |
False |
max_queue_size |
Dimensione massima della coda per il processore batch. | 2048 |
scheduled_delay_ms |
Ritardo in millisecondi tra i batch di esportazione. | 5000 |
exporter_timeout_ms |
Timeout in millisecondi per l'operazione di esportazione. | 30000 |
max_export_batch_size |
Dimensione massima del batch per le operazioni di esportazione. | 512 |
Attributi di baggage
Utilizza BaggageBuilder per impostare informazioni contestuali che passano attraverso tutti gli intervalli di una richiesta.
L'SDK implementa una SpanProcessor copia di tutte le voci di baggage non interrotte in intervalli appena avviati senza sovrascrivere gli 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, usa 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 baggage
Se l'agente usa il pacchetto di integrazione dell'hosting, registra il middleware del baggage per popolare automaticamente baggage per ogni richiesta in ingresso. Questo passaggio elimina la necessità di invocare BaggageBuilder manualmente in ogni gestore di attività.
Registra BaggageMiddleware nel set di middleware dell'adapter. Estrae automaticamente il chiamante, l'agente, il tenant, il canale e i dettagli della conversazione da ogni TurnContext in ingresso ed esegue il wrapping della richiesta in un ambito di contesto.
from microsoft_agents_a365.observability.hosting import BaggageMiddleware
adapter.use(BaggageMiddleware())
In alternativa, utilizza ObservabilityHostingManager per configurare il middleware per i dati accessori 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 baggage per risposte asincrone (eventi ContinueConversation) per evitare di sovrascrivere baggage già impostati dalla richiesta di origine.
Strumento di risoluzione dei token
Quando si usa l'utilità di esportazione di Agent 365, è necessario fornire una funzione di risoluzione dei token che restituisce il token di autenticazione.
Quando si usa l'SDK di osservabilità di Agent 365 con il framework di hosting dell'agente, è possibile generare token usando TurnContext dalle attività dell'agente
Il seguente esempio di codice mostra come generare un token utilizzando il microsoft_agents.hosting.core SDK. Il token di autenticazione generato qui viene utilizzato per esportare gli span al servizio di ingestione A365. Gli agenti possono generare un token autonomamente, ad esempio utilizzando Libreria di Autenticazione Microsoft (MSAL), ma devono assicurarsi che il token abbia l'ambito di osservabilità.
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
Per un agente creato con l'interfaccia della riga di comando A365 che utilizza un assistente AI e il pacchetto Microsoft Agent 365 Observability Hosting Library, usa AgenticTokenCache per gestire automaticamente la cache dei token. Registra il token una volta per agente e tenant durante un gestore di attività e passa cache.get_observability_token come token_resolver nella configurazione di osservabilità.
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(),
)
Strumentazione automatica
La strumentazione automatica ascolta automaticamente i segnali di telemetria esistenti dei framework agenti (SDK) per le tracce e li inoltra al servizio di osservabilità di Agent 365. Questa funzionalità elimina la necessità per gli sviluppatori di scrivere manualmente il codice di monitoraggio, semplificando la configurazione e garantendo un monitoraggio coerente delle prestazioni.
Importante
L'auto-strumentazione popola solo gli attributi standard OTel. Devi aggiungere attributi specifici di Microsoft tramite BaggageBuilder. Per vedere quali attributi mancano, confronta l'output degli intervalli della console con i log dello store per l'insieme delle differenze.
Diversi SDK e piattaforme supportano l'auto-strumentazione:
| Piattaforma | SDK/framework supportati |
|---|---|
| .NET | Kernel semantico, OpenAI, Agent Framework |
| Python | Kernel semantico, OpenAI, Agent Framework, LangChain |
| Node.js | OpenAI, LangChain |
Nota
Il supporto per la strumentazione automatica varia in base all'implementazione della piattaforma e dell'SDK.
Kernel semantico
La strumentazione automatica richiede l'uso del generatore di 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 del generatore di 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
Agent Framework
La strumentazione automatica richiede l'uso del generatore di 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()
Framework LangChain
La strumentazione automatica richiede l'uso del generatore di baggage. 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à di Agent 365 per comprendere il funzionamento interno dell'agente.
L'SDK fornisce gli ambiti che è possibile avviare: InvokeAgentScope, ExecuteToolScope, InferenceScope e OutputScope.
Chiamata dell'agente
Usa questo ambito all'inizio del processo dell'agente. Usando l'ambito di chiamata dell'agente si acquisisce proprietà come l'agente corrente richiamato, i dati utente dell'agente e così via.
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)
Output
Usa questo ambito per scenari asincroni in cui InvokeAgentScope, ExecuteToolScope o InferenceScope non possono catturare i dati di output in modo sincrono. Avvia 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
Convalida in locale
Per verificare di aver effettuato con successo l'integrazione con l'SDK di osservabilità, esamina i log della console generati dal tuo agente e i log dell'SDK di osservabilità.
Impostare la variabile di ambiente ENABLE_A365_OBSERVABILITY_EXPORTER su false. Questa impostazione si estende (traccia) nella console.
Per analizzare gli errori di esportazione, abilita 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 di 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 che siano soddisfatti i seguenti requisiti:
- Microsoft Purview: L'audit deve essere attivato per la tua organizzazione. Per istruzioni, vedi Attivare o disattivare l'audit.
-
Microsoft Defender: La ricerca avanzata deve essere configurata per accedere alla tabella
CloudAppEvents. Per dettagli, vedi tabella CloudAppEvents nello schema di ricerca avanzata.
Convalida per la pubblicazione in Store
Importante
Per la convalida del negozio, l'agente deve implementare gli scopi InvokeAgentScope, InferenceScope e ExecuteToolScope. Questi tre ambiti sono necessari per la pubblicazione.
Prima della pubblicazione, usa i log della console per convalidare l'integrazione dell'osservabilità per l'agente implementando gli ambiti invoke agent, execute tool, inference e output richiesti. Poi confronta i log del tuo agente con le seguenti liste di attributi per verificare che tutti gli attributi richiesti siano presenti. Acquisisce attributi su ogni ambito o tramite il generatore di baggage e includi attributi opzionali a tua discrezione.
Per maggiori informazioni sui requisiti per la pubblicazione nello Store, consulta le linee guida per la convalida dello Store.
Attributi InvokeAgentScope
L'elenco seguente riepiloga gli attributi di telemetria obbligatori e facoltativi 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 riepiloga gli attributi di telemetria obbligatori e facoltativi 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 riepiloga gli attributi di telemetria obbligatori e facoltativi 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 riepiloga gli attributi di telemetria obbligatori e facoltativi registrati quando si avvia un OutputScope. Usa questo ambito per scenari asincroni in cui l'ambito 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 con l'osservabilità
Dopo aver implementato l'osservabilità nell'agente, esegui dei test per verificare che i dati di telemetria vengano acquisiti correttamente. Segui la guida ai test per configurare l'ambiente. Segui la guida ai test per configurare l'ambiente, quindi concentrati principalmente sulla sezione Visualizzare i log di osservabilità per verificare che l'implementazione dell'osservabilità funzioni come previsto.
Verifica:
- Vai a:
https://admin.cloud.microsoft/#/agents/all - Seleziona l'agente > Attività
- Vedi sessioni e chiamate di strumenti
Risoluzione dei problemi
Questa sezione descrive i problemi più comuni nell’implementazione e nell’utilizzo dell’osservabilità.
| Problema | Descrizione |
|---|---|
| I dati di osservabilità non sono visibili | Nessuna telemetria è visibile perché l'esportazione non è abilitata, la configurazione è incorretta o la risoluzione dei token non va a buon fine. |
| ID tenant o ID agente mancanti: intervalli ignorati | Gli intervalli vengono eliminati prima dell'esportazione quando mancano gli attributi di identità necessari per il partizionamento. |
| Risoluzione del token non riuscita - esportazione ignorata o non autorizzata | Le richieste di esportazione falliscono o vengono saltate quando il resolver non restituisce alcun token o incontra un'eccezione. |
| HTTP 401 Non autorizzato | L'autenticazione va a buon fine dal punto di vista sintattico, ma il token è invalido per l'ingestione a causa dell'ambito, del tipo o della scadenza. |
| HTTP 403 Negato | L'accesso è negato a causa di lacune nelle licenze del tenant o di permessi di osservabilità mancanti. |
| HTTP 403 Negato - Mancata corrispondenza dell'ID agente | La richiesta viene rifiutata quando l'identità dell'agente nell'URL non corrisponde a quella rappresentata dal token. |
| Errori HTTP 429 o 5xx - Errori transitori | La limitazione della larghezza di banda della rete temporanea o malfunzionamenti lato servizio interrompono l'esportazione e potrebbero richiedere la regolazione della configurazione dei tentativi. |
| Timeout di esportazione | I batch di telemetria superano i tempi di timeout configurati a causa della latenza di rete o della reattività degli endpoint. |
| L'esportazione ha successo ma la telemetria non appare né in Defender né in Purview | L'ingestione si completa, ma la visibilità a valle viene ritardata o bloccata dai prerequisiti del prodotto. |
Suggerimento
Guida alla risoluzione dei problemi di Agent 365 contiene raccomandazioni di alto livello per la risoluzione dei problemi, procedure consigliate e collegamenti a contenuti di risoluzione dei problemi per ogni fase del ciclo di vita dello sviluppo di Agent 365.
I dati di osservabilità non sono visibili
Sintomi:
- L'agente è in esecuzione
- Telemetria assente nell’interfaccia di amministrazione
- Non è visibile l’attività dell’agente
Causa radice:
- L'osservabilità non è abilitata
- Errori di configurazione
- Problemi con lo strumento di risoluzione dei token
Soluzioni: Prova i seguenti passaggi per risolvere il problema:
Verifica che l'esportatore di osservabilità sia abilitato
Devi abilitare esplicitamente l'esportatore Agent 365. Quando disabilitato, l'SDK torna a un esportatore console e la telemetria non viene inviata al servizio. Per i dettagli della configurazione, vedi Configurazione.
Controlla la configurazione dello strumento di risoluzione dei token
L'utilità di esportazione richiede un resolver di token valido che restituisce un token di connessione per ogni richiesta di esportazione. Se lo strumento di risoluzione dei token è assente o restituisce
null, l'esportazione viene ignorata senza notifiche. Assicurati che il tuo codice implementi correttamente il resolver di token. Per dettagli, vedi Strumento di risoluzione dei token.Controllo degli errori nei log
Abilita la registrazione dettagliata e usa il comando
az webapp log tailper cercare nei log errori relativi all'osservabilità. Per dettagli su come abilitare la registrazione dei log su ciascuna piattaforma, vedi Convalida locale.# 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
Verifica che la telemetria sia generata ed esportata come previsto.
- Aggiungi un esportatore per la console e verifica se la telemetria viene generata localmente. Per dettagli su come utilizzare l'esportatore della console e verificare l'output, vedi Verifica localmente.
ID tenant o ID agente mancanti: intervalli ignorati
Sintomi: Il sistema scarta silenziosamente gli span 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 dell'SDK vengono suddivise 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.
- Assicurati 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 baggage. Per l'API specifica della piattaforma, vedi Attributi Baggage. - Verifica 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 omessa o non autorizzata
Sintomi: Lo strumento di risoluzione dei token restituisce null o solleva un errore. A seconda dell'SDK, l'esportazione viene saltata completamente oppure la richiesta viene inviata senza un'intestazione di autorizzazione e fallisce con HTTP 401.
Risoluzione:
- Lo strumento di risoluzione dei token è necessario all'inizializzazione. Se è mancante, l'esportatore genera un errore all'avvio. Verifica che sia fornito uno strumento di risoluzione dei token e che restituisca un Bearer token valido.
- Assicurati di utilizzare l'ID tenant corretto e l'ID agente per
BaggageBuilder, perché questi valori vengono passati al risolutore di token. - Per gli agenti ospitati su Azure, verifica che l'Identità Gestita disponga delle autorizzazioni API richieste per l'ambito di osservabilità.
HTTP 401 Non autorizzato
Sintomi: L'esportazione non riesce con HTTP 401. L'esportatore non ritenta di risolvere questo errore.
Risoluzione:
- Verifica che il partecipante del token corrisponda all'ambito dell'endpoint di osservabilità.
- Verifica che lo strumento di risoluzione dei token non restituisca un token utente delegato, un token per un partecipante errato o un token scaduto.
HTTP 403 Non consentito
Sintomi: L'esportazione non riesce con HTTP 403. L'esportatore non ritenta di risolvere questo errore.
Causa principale: Un errore HTTP 403 può avere diverse cause. Controlla le seguenti soluzioni nell'ordine indicato.
Risoluzione:
Licenza mancante: Verifica che il tuo tenant abbia una delle seguenti licenze assegnate nell'interfaccia di amministrazione di Microsoft 365:
- Test - Microsoft 365 E7
- Microsoft 365 E7
- Microsoft Agent 365 Frontier
Autorizzazione
Agent365.Observability.OtelWritemancante: se hai recentemente aggiornato i pacchetti di osservabilità, devi concedere questa autorizzazione. Vedi la nota importante nella sezione successiva.
Importante
Gli agenti esistenti che aggiornano a queste versioni dei pacchetti richiedono un passaggio aggiuntivo
Questo passaggio si applica solo se stai aggiornando un agente esistente. Le nuove installazioni di agenti non richiedono questo passaggio. Se esegui l'aggiornamento alle versioni del pacchetto seguenti o versioni successive, è necessario concedere la nuova autorizzazione Agent365.Observability.OtelWrite all'identità (identità gestita o registrazione dell'app). Senza questa autorizzazione, l'esportazione della telemetria non riesce con HTTP 403.
| Piattaforma | Versione minima che richiede questo passaggio |
|---|---|
| .NET | 0.3-beta |
| Node.js | 0.2.0-preview.1 |
| Python | 0.3.0 |
Concedi l'autorizzazione utilizzando una delle seguenti opzioni.
Opzione A — Interfaccia della riga di comando di Agent 365 (richiede un account di amministratore globale; esegui dalla directory del progetto dell'agente contenente a365.config.json, o utilizza --agent-name)
a365 setup permissions bot
Oppure, senza un file di configurazione:
a365 setup permissions bot --agent-name "<agent-name>"
Questo comando concede tutte le autorizzazioni mancanti sul progetto, inclusi gli ambiti di osservabilità.
Opzione B - Portale di Entra (non sono necessari file di configurazione; è richiesto l'accesso da Amministratore globale alla registrazione dell'app del progetto)
- Vai al portale di Entra>Registrazioni app> seleziona l'app Blueprint.
- Vai a Autorizzazioni API>Aggiungi un'autorizzazione> cerca API utilizzate dalla mia organizzazione> per
9b975845-388f-4429-889e-eab1ef63949c. - Seleziona Autorizzazioni delegate> e
Agent365.Observability.OtelWrite>Aggiungi autorizzazioni. - Ripeti i passaggi 2–3, questa volta seleziona Autorizzazioni dell'applicazione> controlla
Agent365.Observability.OtelWrite>Aggiungi autorizzazione. - Clicca su Concedi il consenso dell'amministratore e conferma.
Sia Agent365.Observability.OtelWrite (Delegato) che Agent365.Observability.OtelWrite (Applicazione) dovrebbero mostrare lo stato Granted.
HTTP 403 Negato - Mancata corrispondenza dell'ID agente
Sintomi: l'esportazione non riesce con HTTP 403 e un messaggio del server simile a 403 Forbidden con errori agent-ID-mismatch durante la chiamata agli endpoint delle tracce di Agent 365.
Causa principale: Questo errore si verifica quando utilizzi l'ID client del progetto invece dell'ID client dell'istanza dell'agente durante la configurazione dei dettagli dell'agente. L'ID dell'agente nell'URL di esportazione non corrisponde all'identità autorizzata dal token, quindi l'endpoint delle tracce rifiuta la richiesta.
Risoluzione:
- Verifica se l'ID tenant viene aggiunto all'elenco dei tenant consentiti di Agent 365.
- Configura i dettagli dell'agente con l'ID client dell'istanza dell'agente (non con l'ID client del progetto).
- Verifica l'URL di esportazione che viene generato - viene registrato se abiliti il logger. Conferma che l'ID dell'agente nell'URL corrisponda all'ID client dell'istanza dell'agente.
- Per abilitare il logging diagnostico per ciascun SDK, vedi Convalida in locale.
Errori HTTP 429 o 5xx - Errori transitori
Sintomi: L'esportazione fallisce con un codice di stato HTTP temporaneo come 429 o 5xx.
Risoluzione:
- Questi errori sono solitamente transitori e si risolvono da soli. Gli SDK Python e JavaScript effettuano automaticamente tentativi per i codici di stato HTTP 408, 429 e 5xx fino a tre volte con backoff esponenziale. L'SDK .NET non esegue automaticamente nuovi tentativi.
- Se persistono errori, controlla il pannello di stato del servizio.
- Valuta la possibilità di ridurre la frequenza di esportazione aumentando il ritardo programmato tra i batch o aumentando la dimensione massima del batch di esportazione. Per le opzioni di configurazione per piattaforma, consulta la tabella
Agent365ExporterOptionsnella sezione Configurazione.
Timeout di esportazione
Sintomi: Timeout dei tentativi di esportazione.
Risoluzione:
- Verifica la connettività di rete verso l'endpoint di osservabilità.
- I timeout predefiniti variano a seconda della piattaforma. Il timeout predefinito per le richieste 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 i valori predefiniti per piattaforma, consulta la tabella
Agent365ExporterOptionsin Configurazione. - Se i timeout si verificano frequentemente, aumenta il valore di timeout rilevante nelle opzioni di esportazione.
L'esportazione ha successo ma la telemetria non appare né in Defender né in Purview
Sintomi: I log mostrano un'esportazione riuscita, ma la telemetria non è visibile né in Microsoft Defender né in Microsoft Purview.
Risoluzione:
- Verifica di soddisfare i prerequisiti per visualizzare i log esportati. Per Purview, l'audit deve essere attivato. Per Defender, devi configurare la ricerca avanzata. Per altre informazioni, consulta Visualizzazione dei log esportati.
- La telemetria può richiedere diversi minuti per essere popolata dopo un'esportazione riuscita. Aspetta che compaiano i dati prima di approfondire.
Per ulteriori informazioni sulla verifica dell'osservabilità, consulta:
Contenuto correlato
- Concetti di osservabilità di Agent 365 - Flusso di dati, modelli di identità, autenticazione, ambiti e limiti che si applicano a ogni percorso di integrazione.
- Riferimento agli attributi di osservabilità di Agent 365 - Schema degli attributi canonici di span a cui ogni span acquisito da Agent 365 deve conformarsi.
- Microsoft OpenTelemetry Distro - SDK unificato consigliato per le nuove integrazioni