Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt
För att aktivera observabilitet i Agent 365, använd Microsoft OpenTelemetry Distro. Denna distribution erbjuder ett enda observabilitets-SDK över hela Microsoft, som driver Agent 365, Microsoft Foundry, Azure Monitor och med mera. Den befintliga metod som beskrivs i denna artikel fortsätter att fungera utan att introducera brytande ändringar. För migreringsvägledning per språk, se följande guider:
- Python migreringsguide
- JavaScript/TypeScript migreringsguide
- .NET-migrationsguide För den underliggande datamodellen, identitet och autentisering, omfattningar och samtycke, samt begränsningar – som gäller för varje integrationsväg – se Agent 365-observabilitetskoncept.
Kommentar
Observabilitet är en av de inkrementella kapabilitetsnivåerna i Kom igång med Agent 365-utvecklingen och gäller för alla agenttyper.
För att delta i Agent 365-ekosystemet, lägg till Agent 365-observabilitetsfunktioner i din agent. Agent 365 Observability bygger på OpenTelemetry (OTel) och erbjuder ett enhetligt ramverk för konsekvent och säker insamling av telemetri över alla agentplattformar. Genom att implementera denna nödvändiga komponent möjliggör du för IT-administratörer att övervaka din agents aktivitet i Microsoft admincenter och låta säkerhetsteam använda Defender och Purview för efterlevnad och hotdetektering.
Viktiga fördelar
- Helhetsöversikt: Fånga omfattande telemetri för varje agentanrop, inklusive sessioner, verktygsanrop och undantag, vilket ger full spårbarhet över plattformar.
- Säkerhets- och efterlevnadsmöjliggörande: Mata in enhetliga revisionsloggar i Defender och Purview, vilket möjliggör avancerade säkerhetsscenarier och efterlevnadsrapportering för din agent.
- Plattformsoberoende flexibilitet: Bygg på OTel-standarder och stöd olika körtider och plattformar som Copilot Studio, Foundry och framtida agentramverk.
- Operativ effektivitet för administratörer: Tillhandahåll centraliserad observabilitet i Administrationscenter för Microsoft 365, minska felsökningstiden och förbättra styrningen med rollbaserade åtkomstkontroller för IT-team som hanterar din agent.
Agenter som stöds
Följande agenttyper stödjer Agent 365-observabilitet:
- Microsoft Agent 365-aktiverade agenter: Använd observability SDK för att instrumentera din agent.
- Anpassade motoragenter: Använd observability SDK för att instrumentera din agent.
- förklarande agenter: Observerbarhet stöds utan extra åtgärder. Ingen SDK-implementation krävs.
Installation
Använd dessa kommandon för att installera observabilitetsmodulerna för de språk som stöds av Agent 365.
Installera kärnobservabilitets- och körningspaket. Alla agenter som använder Agent 365 Observability behöver dessa paket.
pip install microsoft-agents-a365-observability-core
pip install microsoft-agents-a365-runtime
Om din agent använder Microsoft Agents Hosting-paketet, installera hosting-integrationspaketet. Den tillhandahåller mellanprogram som automatiskt fyller i bagage och omfång från TurnContext, och innehåller cachelagring av token för observerbarhetsexportören.
pip install microsoft-agents-a365-observability-hosting
Om din agent använder ett av de stödda AI-ramverken, installera det tillägg för automatisk instrumentering som hör till för att automatiskt samla in telemetri utan att behöva skriva manuell instrumenteringskod. Se Auto-instrumentation för konfigurationsdetaljer.
# 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
Konfiguration
Använd följande inställningar för att aktivera och anpassa Agent 365 Observability för din agent.
Ställ in miljövariabeln ENABLE_A365_OBSERVABILITY_EXPORTER till true för observabilitet. Denna inställning exporterar loggar till tjänsten och kräver att en token_resolver anges. Annars används konsolexportören.
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,
)
Tokenresolvern är utesluten från loggning till konsolen.
Du kan anpassa exportörens beteende genom att skicka en Agent365ExporterOptions-instans till exporter_options. Om exporter_options anges får den företräde över token_resolver och cluster_category parametrarna.
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,
)
Följande tabell beskriver de valfria parametrarna för configure().
| Parameter | beskrivning | Standard |
|---|---|---|
logger_name |
Namnet på Python-loggern som används för felsökning och loggning till konsol. | microsoft_agents_a365.observability.core |
exporter_options |
En Agent365ExporterOptions-instans som konfigurerar både tokenresolvern och klusterkategorin. |
None |
suppress_invoke_agent_input |
När True, undertrycks inmatningsmeddelanden på InvokeAgent spann. |
False |
Följande tabell beskriver de valfria egenskaperna för Agent365ExporterOptions.
| Egenskap | beskrivning | Standard |
|---|---|---|
use_s2s_endpoint |
När True använder sökvägen till tjänst-till-tjänst-ändpunkten. |
False |
max_queue_size |
Maximal köstorlek för batchprocessorn. | 2048 |
scheduled_delay_ms |
Fördröjning i millisekunder mellan exportbatcher. | 5000 |
exporter_timeout_ms |
Timeout i millisekunder för exportåtgärden. | 30000 |
max_export_batch_size |
Maximal batchstorlek för exportåtgärder. | 512 |
Bagageattribut
Använd BaggageBuilder för att ange kontextuell information som följer med genom alla spann i en begäran.
SDK:n implementerar en SpanProcessormekanism som kopierar alla bagageposter som inte är tomma till nystartade spann utan att skriva över befintliga attribut.
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
För att automatiskt fylla i BaggageBuilder från TurnContext, använd hjälpredan populate i paketet microsoft-agents-a365-observability-hosting. Hjälparen extraherar automatiskt detaljer om uppringare, agent, tenant, kanal och konversation från aktiviteten.
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
Baggage-mellanprogramvara
Om din agent använder hosting-integreringspaketet, registrera baggage middleware för att automatiskt populera bagage för varje inkommande begäran. Detta steg eliminerar behovet av att kalla på BaggageBuilder manuellt i varje aktivitetsbehandlare.
Registrera BaggageMiddleware på adaptermellanprogram-uppsättningen. Den extraherar automatiskt information om uppringare, agent, tenant, kanal och konversation från varje inkommande TurnContext och omsluter begäran i en baggage-omfattning.
from microsoft_agents_a365.observability.hosting import BaggageMiddleware
adapter.use(BaggageMiddleware())
Alternativt, använd ObservabilityHostingManager för att konfigurera baggage-middleware tillsammans med andra hostingfunktioner:
from microsoft_agents_a365.observability.hosting import ObservabilityHostingManager, ObservabilityHostingOptions
options = ObservabilityHostingOptions(enable_baggage=True)
ObservabilityHostingManager.configure(adapter.middleware_set, options)
Mellanvaran hoppar över att sätta baggage för asynkrona svar (händelser av typ ContinueConversation) för att undvika att skriva över baggage som den ursprungliga förfrågan redan satt.
Tokenlösare
När du använder Agent 365-exportören måste du tillhandahålla en tokenlösare som returnerar en autentiseringstoken.
När du använder Agent 365 Observability SDK med Agent Hosting-ramverket kan du generera tokens genom att använda TurnContext från agentaktiviteter.
Följande kodfragment visar hur man genererar en token genom att använda microsoft_agents.hosting.core-SDK:n. Den genererade autentiseringstoken används för att exportera spannen till A365:s insamlingstjänst. Agenter kan själva generera en token, till exempel genom att använda Microsofts autentiseringsbibliotek (MSAL), men de måste säkerställa att tokenen har scope för observabilitet.
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
För en agent som är byggd med A365 CLI och använder en AI-assistent samt Microsoft Agent 365 Observability Hosting Library-paketet, ska AgenticTokenCache användas för att hantera tokencaching automatiskt. Registrera token en gång per agent och hyresgäst under en aktivitetshanterare, och cache.get_observability_token ska anges som token_resolver i din observabilitetskonfiguration.
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(),
)
Autoinstrumentation
Autoinstrumentering lyssnar automatiskt på agentramverks (SDK:ers) existerande telemetrisignaler för spårning och vidarebefordrar dem till Agent 365 observerbarhetstjänsten. Denna funktion eliminerar behovet för utvecklare att skriva övervakningskod manuellt, förenklar installationen och säkerställer konsekvent prestandauppföljning.
Viktigt
Autoinstrumentering fyller endast i standard OTel-attribut. Du måste lägga till Microsoft-specifika attribut genom BaggageBuilder. För att se vilka attribut som saknas, validera din spanutdata från konsolen mot Store-loggarna för diff-uppsättningen.
Flera SDK:er och plattformar stödjer autoinstrumentering:
| Plattform | SDK:er/ramverk som stöds |
|---|---|
| .NET | Semantic Kernel, OpenAI, Agent Framework |
| Python | Semantic Kernel, OpenAI, Agent Framework, LangChain |
| Node.js | OpenAI, LangChain |
Kommentar
Stöd för autoinstrumentering varierar mellan olika plattformar och SDK-implementationer.
Semantic Kernel
Automatisk instrumentering kräver användning av "baggage builder". Ställ in agent-ID och tenant-ID genom att använda BaggageBuilder.
Installera paketet.
pip install microsoft-agents-a365-observability-extensions-semantic-kernel
Konfigurera observabilitet.
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
Automatisk instrumentering kräver användning av "baggage builder". Ställ in agent-ID och tenant-ID genom att använda BaggageBuilder.
Installera paketet.
pip install microsoft-agents-a365-observability-extensions-openai
Konfigurera observabilitet.
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
Automatisk instrumentering kräver användning av "baggage builder". Ställ in agent-ID och tenant-ID genom att använda BaggageBuilder.
Installera paketet.
pip install microsoft-agents-a365-observability-extensions-agent-framework
Konfigurera observabilitet.
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-ramverket
Autoinstrumentering kräver användning av baggage builder. Ställ in agent-ID och tenant-ID genom att använda BaggageBuilder.
Installera paketet.
pip install microsoft-agents-a365-observability-extensions-langchain
Konfigurera observabilitet.
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
Manuell instrumentering
Använd Agent 365 observability SDK för att förstå agentens interna arbetssätt.
SDK:n tillhandahåller scopes som du kan starta: InvokeAgentScope, ExecuteToolScope, InferenceScope och OutputScope.
Agentanrop
Använd detta scope i början av din agentprocess. Genom att använda agentanropsomfånget kan du registrera egenskaper som den aktuella agenten som anropas, agentanvändardata och mycket mer.
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(...)
Verktygskörning
Följande exempel visar hur du lägger till observabilitetsspårning i din agents verktygskörning. Denna spårning insamlar telemetri för övervaknings- och granskningsändamål.
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)
Slutsatsdragning
Följande exempel visar hur du kan instrumentera anrop för AI-modellinferens med observabilitetsspårning för att fånga tokenanvändning, modelldetaljer och responsmetadata.
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)
Utmatning
Använd denna scope för asynkrona scenarier där InvokeAgentScope, ExecuteToolScope eller InferenceScope inte kan registrera utdata synkront. Börja OutputScope som ett underordnat spann för att registrera de slutliga utdatameddelandena efter att det överordnade omfånget är klart.
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
Validera lokalt
För att kontrollera att du har lyckats integrera med observability SDK, granska konsolloggar som genereras av din agent och loggar från observability SDK.
Ange miljövariabeln ENABLE_A365_OBSERVABILITY_EXPORTER till false. Den här inställningen exporterar spann (traces) till konsolen.
För att felsöka exportfel, aktivera utförlig loggning genom att sätta ENABLE_A365_OBSERVABILITY_EXPORTER till true och konfigurera felsökningsloggning vid applikationsstart:
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)
Viktiga loggmeddelanden:
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.
Visning av exporterade loggar
För att se agenttelemetri i Microsoft Purview eller Microsoft Defender, se till att följande krav uppfylls:
- Microsoft Purview: Granskning måste vara aktiverad för din organisation. För anvisningar, se Aktivera eller inaktivera granskning.
-
Microsoft Defender: Avancerad jakt måste konfigureras för att komma åt tabellen
CloudAppEvents. För mer information, se CloudAppEvents-tabellen i schemat för avancerad sökning.
Validera för butikspublicering
Viktigt
För att validering av lagring ska lyckas måste din agent implementera omfången InvokeAgentScope, InferenceScope och ExecuteToolScope. Dessa tre scopes krävs för publicering.
Innan du publicerar, använd konsolloggar för att validera agentens observabilitetsintegration genom att implementera de nödvändiga invoke agent, execute tool, inference och output scopes. Jämför sedan agentens loggar med följande listor över attribut för att verifiera att alla obligatoriska attribut är närvarande. Registrera attribut på varje scope eller via baggage builder, och inkludera valfria attribut efter eget gottfinnande.
För mer information om krav på Store-publicering, se riktlinjer för Store-validering.
InvokeAgentScope-attribut
Följande lista sammanfattar de obligatoriska och valfria telemetriattribut som registreras när du startar en 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"
}
ExecuteToolScope-attribut
Följande lista sammanfattar de obligatoriska och valfria telemetriattribut som registreras när du startar en 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"
}
InferenceScope-attribut
Följande lista sammanfattar de obligatoriska och valfria telemetriattribut som registreras när du startar en 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"
}
OutputScope-attribut
Följande lista sammanfattar de obligatoriska och valfria telemetriattribut som registreras när du startar en OutputScope. Använd denna scope för asynkrona scenarier där det överordnade scopet inte kan registrera utdata synkront.
"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"
}
Testa din agent med överskådlighet
När du har implementerat observabilitet i din agent, testa den för att säkerställa att den fångar telemetri korrekt. Följ testguiden för att konfigurera din miljö. Sedan, fokusera främst på avsnittet Se observabilitetsloggar för att verifiera att din observabilitetsimplementation fungerar som förväntat.
Verifiering:
- Gå till
https://admin.cloud.microsoft/#/agents/all - Välj din agent > Aktivitet
- Du ser sessioner och verktygsanrop
Felsökning
Detta avsnitt beskriver vanliga problem vid implementering och användning av observabilitet.
| Problem | beskrivning |
|---|---|
| Observerbarhetsdata visas inte | Ingen telemetri visas eftersom exporten inte är aktiverad, konfigurationen är felaktig eller token-upplösningen misslyckas. |
| Saknad tenant-ID eller agent-ID - spans filtreras bort | Spannar tas bort före export när identitetsattribut som krävs för partitionering saknas. |
| Tokenupplösningsfel – export hoppades över eller nekades behörighet | Exportförfrågningar misslyckas eller utelämnas när resolvern inte returnerar någon token eller stöter på ett undantag. |
| HTTP 401 icke auktoriserad | Autentiseringen lyckas rent tekniskt, men tokenen är ogiltig för inmatning på grund av omfattning, typ eller utgångsdatum. |
| HTTP 403 förbjuden | Åtkomst nekas på grund av licensbrister hos tenant eller saknade observabilitetsbehörigheter. |
| HTTP 403 Förbjudet – Agent-ID-missmatch | Förfrågan avslås när agentidentiteten i URL:en inte matchar identiteten som tokenen representerar. |
| HTTP 429 eller 5xx-fel – tillfälliga fel | Tillfällig strypning eller fel på tjänstesidan avbryter exporten och kan kräva justering av omförsöksinställningar. |
| Exporttidsgräns | Telemetrisatser överskrider konfigurerade timeoutperioder på grund av nätverksfördröjning eller endpointens responsförmåga. |
| Export lyckas men telemetrin visas inte i Defender eller Purview | Intagningen slutförs, men nedströms synligheten fördröjs eller blockeras av produktkrav. |
Dricks
Agent 365-felsökningsguide innehåller övergripande felsökningsrekommendationer, bästa praxis och länkar till felsökningsinnehåll för varje enskild del av Agent 365:s utvecklingslivscykel.
Observerbarhetsdata visas inte
Symtom:
- Agenten körs
- Ingen telemetri i administrationscentret
- Kan inte se agentaktivitet
Grundorsak:
- Överskådlighet har inte aktiverats
- Konfigurationsfel
- Tokenresolver-problem
Lösningar: Följ dessa steg för att lösa problemet:
Verifiera att observabilitetsexportören är aktiverad
Du måste uttryckligen aktivera Agent 365-exportören. När exportören är inaktiverad faller SDK:n tillbaka på en konsolexportör och telemetri skickas inte till tjänsten. För konfigurationsdetaljer, se Konfiguration.
Kontrollera tokenresolverns konfiguration
Exportören kräver en giltig tokenlösare som returnerar en Bearer-token för varje exportförfrågan. Om token resolver saknas eller returnerar
null, utförs ingen export och det sker utan att något meddelas. Se till att din kod implementerar tokenresolvern korrekt. För mer information, se Tokenresolver.Granska loggarna för fel
Aktivera detaljerad loggning och använd kommandot
az webapp log tailför att söka i loggar efter fel relaterade till observability. För detaljer om hur du aktiverar loggning per plattform, se Validera lokalt.# Look for observability-related errors az webapp log tail --name <your-app-name> --resource-group <your-resource-group> | Select-String "observability"Verifiera telemetriexport
Bekräfta att telemetri genereras och exporteras som förväntat.
- Lägg till en konsolexportör och kontrollera att telemetri genereras lokalt. För detaljer om hur man använder konsolexportören och validerar utdata, se Validera lokalt.
Saknat tenant-ID eller agent-ID — spans utelämnats
Symptom: Systemet släpper tyst spans och exporterar dem aldrig. Vissa SDK:er loggar antalet överhoppade spans eller ett meddelande som "Inga spans med tenant/agent-identitet hittade." Andra ignorerar dem utan att logga.
Lösning:
- Innan export partitionerar SDK spann efter tenant- och agentidentitet. Systemet släpper spans som saknar antingen tenant-ID eller agent-ID och skickar dem aldrig till tjänsten.
- Säkerställ att
BaggageBuilderär konfigurerad med tenant-ID och agent-ID innan du skapar span. Dessa värden propagerar genom OpenTelemetry-kontexten och kopplas till alla span som skapas inom bagage-omfattning. För det plattformsspecifika API:et, se Bagageattribut. - Bekräfta att aktiviteten
TurnContexthar en giltig mottagare med agentidentitet om du använder bagage-middleware eller kontexthjälparen från värdintegrationspaketet för att fylla i dessa ID:n.
Fel vid tokenlösning – exporten uteblir eller är obehörig
Symtom: Tokenresolvern returnerar null eller kastar ett fel. Beroende på SDK hoppas exporten antingen över helt eller så skickas förfrågan utan auktorisationshuvud och misslyckas med HTTP 401.
Lösning:
- Tokenresolvern krävs vid initiering. Om den saknas kastar exportören ett fel vid uppstart. Verifiera att en token-resolver tillhandahålls och returnerar en giltig Bearer-token.
- Se till att rätt tenant-ID och agent-ID används för
BaggageBuilder, eftersom dessa värden skickas till tokenlösaren. - För Azure-hostade agenter, se till att Managed Identity har den nödvändiga API-behörigheten för överskådlighetsområdet.
HTTP 401 icke auktoriserad
Symtom: Exporten misslyckas med HTTP 401. Exportören försöker inte igen vid detta fel.
Lösning:
- Verifiera att tokenaudience matchar observability-endpointens omfattning.
- Kontrollera att token resolver inte returnerar en delegerad användartoken, en token med felaktig audience eller en utgången token.
HTTP 403 Förbjuden
Symtom: Exporten misslyckas med HTTP 403. Exportören försöker inte igen vid detta fel.
Grundorsak: Ett HTTP 403-fel kan ha olika orsaker. Kontrollera följande lösningar i ordning.
Lösning:
Saknad licens — Kontrollera att din Microsoft 365-miljö har tilldelats någon av följande licenser i Administrationscenter för Microsoft 365:
- Test - Microsoft 365 E7
- Microsoft 365 E7
- Microsoft Agent 365 Frontier
Saknad
Agent365.Observability.OtelWritebehörighet — Om du nyligen uppgraderat dina observabilitetspaket måste du tilldela denna behörighet. Se den viktiga anmärkningen i nästa avsnitt.
Viktigt
För befintliga agenter som uppgraderar till dessa paketversioner krävs ett extra steg
Detta steg gäller endast om du uppgraderar en befintlig agent. Nya agentinstallationer kräver inte detta steg. Om du uppgraderar till följande paketversioner eller nyare måste du bevilja den nya Agent365.Observability.OtelWrite-behörigheten till din identitet (Managed Identity eller appregistrering). Om behörigheten saknas, misslyckas telemetriexport med HTTP 403.
| Plattform | Minsta version som kräver detta steg |
|---|---|
| .NET | 0.3-beta |
| Node.js | 0.2.0-preview.1 |
| Python | 0.3.0 |
Välj något av följande alternativ för att bevilja behörigheter.
Alternativ A — Agent 365 CLI (kräver ett Global Administrator-konto; kör från agentprojektkatalogen som innehåller a365.config.json, eller använd --agent-name)
a365 setup permissions bot
Eller utan konfigurationsfil:
a365 setup permissions bot --agent-name "<agent-name>"
Detta kommando beviljar alla saknade behörigheter i blueprinten, inklusive Observability scopes.
Alternativ B — Entra Portal (inga konfigurationsfiler krävs; kräver åtkomst som global administratör till blueprint-applikationens registrering)
- Gå till Entra portal>Appregistreringar> och välj din Blueprint-app.
- Gå till API-behörigheter>Lägg till en behörighets-API> som min organisation använder> sök efter
9b975845-388f-4429-889e-eab1ef63949c. - Välj Delegarede behörigheter> markera
Agent365.Observability.OtelWrite>Lägg till behörigheter. - Upprepa steg 2–3, men välj denna gång Applikationsbehörigheter>, markera
Agent365.Observability.OtelWrite>Lägg till behörigheter. - Klicka på Bevilja administratörssamtycke och bekräfta.
Både Agent365.Observability.OtelWrite (delegerad) och Agent365.Observability.OtelWrite (applikation) bör visa Granted status.
HTTP 403 Forbidden — Agent-ID-matchning saknas
Symtom: Exporten misslyckas med HTTP 403 och ett servermeddelande liknande 403 Forbidden med agent-ID-mismatch fel vid anrop till Agent 365 traces endpoints.
Rotorsak: Det här felet uppstår när du använder blueprint-klient-ID istället för agentinstansens klient-ID när du konfigurerar agentens uppgifter. Agent-ID:t i export-URL:en motsvarar inte identiteten som tokenen auktoriserar, så spårnings-ändpunkten avvisar begäran.
Lösning:
- Verifiera om klientorganisations-ID har lagts till i listan över godkända klientorganisationer för Agent 365.
- Konfigurera agentens uppgifter med agentinstansens klient-ID (inte Blueprint-klient-ID:t).
- Verifiera den genererade export-URL:en – den loggas om du aktiverar loggaren. Bekräfta att agent-ID:t i URL:en matchar agentinstansens klient-ID.
- För att aktivera diagnostisk loggning per SDK, se Validera lokalt.
HTTP 429 eller 5xx-fel – tillfälliga fel
Symtom: Exporten misslyckas på grund av en övergående HTTP-statuskod, såsom 429 eller 5xx.
Lösning:
- Dessa fel är vanligtvis övergående och löses av sig själva. Python- och JavaScript-SDK:erna försöker automatiskt igen vid HTTP 408, 429 och 5xx-statuskoder upp till tre gånger med exponentiell backoff. .NET SDK:n återförsöker inte automatiskt.
- Om felen kvarstår, kontrollera tjänstens hälsostatuspanel.
- Överväg att minska exportfrekvensen genom att öka den schemalagda fördröjningen mellan batcher eller öka den maximala exportbatchstorleken. För konfigurationsalternativ per plattform, se
Agent365ExporterOptionstabellen i Konfiguration.
Exporttidsgräns
Symtom: Exportförsök avbryts på grund av timeout.
Lösning:
- Kontrollera nätverksanslutningen till överskådlighetsändpunkten.
- Timeout-standardinställningar varierar beroende på plattform. Standardtidsgränsen för HTTP-begäran är 30 sekunder. Vissa SDK:er har också en separat, övergripande exporter-timeout som täcker hela exportcykeln inklusive återförsök. För exakta egenskaper och standardinställningar per plattform, se
Agent365ExporterOptions-tabellen i Konfiguration. - Om timeouts förekommer ofta, öka det relevanta timeout-värdet i dina exportinställningar.
Export lyckas men telemetrin visas inte i Defender eller Purview
Symtom: Loggar visar en lyckad export men telemetri är inte synlig i Microsoft Defender eller Microsoft Purview.
Lösning:
- Kontrollera att du uppfyller förutsättningarna för att kunna se exporterade loggar. För Purview måste granskning vara aktiverad. För Defender måste du konfigurera avancerad jakt. Mer information finns i Visa exporterade loggar.
- Telemetri kan ta flera minuter att bli tillgänglig efter en lyckad export. Vänta på att data ska dyka upp innan du undersöker vidare.
För att lära dig mer om testning av observabilitet, se:
Relaterat innehåll
- Agent 365-överskådlighetskoncept – Dataflöde, identitetsmodeller, autentisering, omfattningar och gränser som gäller för varje integreringsväg.
- Agent 365 överskådlighetsattributreferens – Kanoniskt spanattributschema som varje spann som tas in av Agent 365 måste följa.
- Microsoft OpenTelemetry Distro – Den rekommenderade enhetliga SDK för nya integrationer.