SDK for observerbarhet

Viktig!

Aktiver observabilitet i Agent 365 ved å bruke Microsoft OpenTelemetry Distro. Denne distribusjonen tilbyr en felles observabilitets-SDK for hele Microsoft, som driver Agent 365, Microsoft Foundry, Azure Monitor og flere andre tjenester. Den eksisterende tilnærmingen beskrevet i denne artikkelen fortsetter å fungere uten endringer som bryter kompatibilitet. For migrasjonsveiledning etter språk, se følgende veiledninger:

Notat

Observabilitet er et av de inkrementelle kapabilitetsnivåene i Get Started with Agent 365-utvikling og gjelder for alle agenttyper.

For å delta i Agent 365-økosystemet, legg til Agent 365 Observability-funksjoner i agenten din. Agent 365 Observability bygger på OpenTelemetry (OTel) og gir et samlet rammeverk for å fange telemetri konsekvent og sikkert på tvers av alle agentplattformer. Ved å implementere denne nødvendige komponenten, gjør du det mulig for IT-administratorer å overvåke agentens aktivitet i Administrasjonssenteret for Microsoft, og gir sikkerhetsteam mulighet til å bruke Defender og Purview for etterlevelse og trusseldeteksjon.

Hovedfordeler

  • Helhetlig synlighet: Fang omfattende telemetri for hver agentutførelse, inkludert økter, verktøykall og unntak, slik at du får full sporbarhet på tvers av plattformer.
  • Aktivering av sikkerhet og etterlevelse: Overfør enhetlige revisjonslogger til Defender og Purview, noe som aktiverer avanserte sikkerhetsscenarier og rapportering om etterlevelse for agenten din.
  • Fleksibilitet på tvers av plattformer: Bygg på OTel-standarder og støtt ulike kjøretider og plattformer som Copilot Studio, Foundry og fremtidige agentrammeverk.
  • Operasjonell effektivitet for administratorer: Gi sentralisert observabilitet i Administrasjonssenter for Microsoft 365, reduserer feilsøkingstiden og forbedrer styringen med rollebaserte tilgangskontroller for IT-team som administrerer agenten din.

Støttede agenter

Følgende agenttyper støtter observabilitet for Agent 365:

Installasjon

Bruk disse kommandoene for å installere observabilitetsmodulene for språkene som støttes av Agent 365.

Installer kjernepakkene for observabilitet og kjøretidspakker. Alle agenter som bruker Agent 365 Observability trenger disse pakkene.

pip install microsoft-agents-a365-observability-core
pip install microsoft-agents-a365-runtime

Hvis agenten din bruker Microsoft Agents Hosting-pakken, installer hosting-integrasjonspakken. Den tilbyr mellomvare som automatisk fyller inn baggasje og omfang fra TurnContext, og inkluderer tokenbufring for observabilitetseksportøren.

pip install microsoft-agents-a365-observability-hosting

Hvis agenten din bruker en av de støttede AI-rammeverkene, installer den tilsvarende utvidelsen for autoinstrumentering for å registrere telemetri automatisk uten behov for manuell instrumentering. For konfigurasjonsdetaljer, se Auto-instrumentering.

# 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

Konfigurasjon

Bruk følgende innstillinger for å aktivere og tilpasse Agent 365 Observability for agenten din.

Sett ENABLE_A365_OBSERVABILITY_EXPORTER-miljøvariabelen til true for observabilitet. Denne innstillingen eksporterer logger til tjenesten og krever at en token_resolver oppgis. Ellers brukes konsolleksportø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,
)

Token-resolveren er ekskludert fra loggføring til konsollen.

Du kan tilpasse eksportørens oppførsel ved å sende en Agent365ExporterOptions forekomst til exporter_options. Når exporter_options er oppgitt, har den forrang over parameterne token_resolver og 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,
)

Tabellen nedenfor beskriver de valgfrie parameterne for configure().

Parameter Description Standard
logger_name Navnet på Python-loggeren som brukes til feilsøking og logg til konsoll. microsoft_agents_a365.observability.core
exporter_options En Agent365ExporterOptions-instans som konfigurerer både token-resolveren og klyngekategorien sammen. None
suppress_invoke_agent_input Når True, undertrykker inndatameldinger på InvokeAgent spenn. False

Tabellen nedenfor beskriver de valgfrie egenskapene for Agent365ExporterOptions.

Egenskap Description Standard
use_s2s_endpoint Når True brukes tjeneste-til-tjeneste-endepunktbanen. False
max_queue_size Maksimal køstørrelse for partiprosessoren. 2048
scheduled_delay_ms Forsinkelse i millisekunder mellom eksportpartiene. 5000
exporter_timeout_ms Tidsavbrudd i millisekunder for eksportoperasjonen. 30000
max_export_batch_size Maksimal partistørrelse for eksportoperasjoner. 512

Bagasjeattributter

Bruk BaggageBuilder til å angi kontekstuell informasjon som følger alle strekk i en forespørsel. SDK-en implementerer en SpanProcessor som kopierer alle ikke-tomme bagasjeoppføringer til nylig opprettede strekk uten å overskrive eksisterende attributter.

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

For å fylle ut BaggageBuilder automatisk fra TurnContext bruker du populate-hjelperen i microsoft-agents-a365-observability-hosting-pakken. Denne hjelperen henter automatisk ut detaljer om kaller, agent, leietaker, kanal og samtale fra 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

Bagasjemellomvare

Hvis agenten din bruker vertsintegrasjonspakken, registrerer du bagasjemellomvare for automatisk å fylle ut bagasje for hver innkommende forespørsel. Dette trinnet fjerner behovet for å kalle BaggageBuilder manuelt i hver aktivitetsbehandlingsprogram.

Registrer BaggageMiddleware i adapter-middleware-settet. Den trekker automatisk ut detaljer om kaller, agent, leietaker, kanal og samtale fra hver innkommende TurnContext og pakker forespørselen inn i en bagasjekontekst.

from microsoft_agents_a365.observability.hosting import BaggageMiddleware

adapter.use(BaggageMiddleware())

Alternativt kan du bruke ObservabilityHostingManager til å konfigurere bagasje-mellomvare sammen med andre hostingfunksjoner:

from microsoft_agents_a365.observability.hosting import ObservabilityHostingManager, ObservabilityHostingOptions

options = ObservabilityHostingOptions(enable_baggage=True)
ObservabilityHostingManager.configure(adapter.middleware_set, options)

Mellomvaren unngår å sette bagasje for asynkrone svar (ContinueConversation-hendelser) for å unngå å overskrive bagasje som den opprinnelige forespørselen allerede har satt.

Token-løser

Når du bruker Agent 365-eksportøren, må du implementere en token resolver-funksjon som returnerer et autentiseringstoken. Når du bruker Agent 365 Observability SDK sammen med Agent Hosting-rammeverket, kan du generere autentiseringstoken ved å bruke TurnContext fra agent-aktivitetene.

Følgende kodeeksempel viser hvordan du genererer et token ved hjelp av microsoft_agents.hosting.core SDK. Autentiseringstokenet som genereres her, brukes til å eksportere spans til A365-inntakstjenesten. Agenter kan generere et token selv, for eksempel ved å bruke Microsoft Authentication Library (MSAL), men de må sørge for at tokenet har observabilitetsomfanget.

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

For en agent bygget med A365 CLI som bruker en AI-assistent og Microsoft Agent 365 Observability Hosting Library-pakken, bruk AgenticTokenCache for å håndtere token-caching automatisk. Angi tokenet én gang for hver agent og leietaker i en aktivitetshåndterer, og angi cache.get_observability_token som token_resolver i observabilitetskonfigurasjonen din.

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(),
    )

Auto-Instrumentering

Auto-instrumentering overvåker automatisk agentrammeverks eksisterende sporingssignaler fra telemetri og videresender dem til observabilitetstjenesten til Agent 365. Denne funksjonen gjør det unødvendig for utviklere å skrive overvåkingskode manuelt, forenkler oppsettet og sikrer konsekvent ytelsessporing.

Viktig!

Auto-instrumentering angir kun standard OTel-attributter. Du må legge til Microsoft-spesifikke attributter gjennom BaggageBuilder. For å se hvilke attributter som mangler, valider span-utdata fra konsollen mot Store-loggene for å finne forskjellene.

Flere SDK-er og plattformer støtter auto-instrumentering:

Plattform Støttede SDK-er / rammeverk
.NET Semantic Kernel, OpenAI, Agent Framework
Python Semantic Kernel, OpenAI, Agent Framework, LangChain
Node.js OpenAI, LangChain

Notat

Støtte for auto-instrumentering varierer etter plattform og SDK-implementering.

Semantic Kernel

Automatisk instrumentering krever bruk av baggage builder. Sett agent-ID og tenant-ID ved å bruke BaggageBuilder.

Installer pakken.

pip install microsoft-agents-a365-observability-extensions-semantic-kernel

Konfigurer 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 krever bruk av baggage builder. Sett agent-ID og tenant-ID ved å bruke BaggageBuilder.

Installer pakken.

pip install microsoft-agents-a365-observability-extensions-openai

Konfigurer 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 krever bruk av baggage builder. Sett agent-ID og tenant-ID ved å bruke BaggageBuilder.

Installer pakken.

pip install microsoft-agents-a365-observability-extensions-agent-framework

Konfigurer 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-rammeverk

Autoinstrumentering krever bruk av baggage builder. Sett agent-ID og tenant-ID ved å bruke BaggageBuilder.

Installer pakken.

pip install microsoft-agents-a365-observability-extensions-langchain

Konfigurer 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

Bruk Agent 365 observability SDK for å forstå agentens interne virkemåte. SDK-en gir omfang som du kan starte: InvokeAgentScope, ExecuteToolScope, InferenceScope og OutputScope.

Agentaktivering

Bruk dette omfanget i starten av agentprosessen. Ved å bruke agentkall-omfanget kan du registrere egenskaper som den nåværende agenten som påkalles, agentbrukerdata og 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(...)

Verktøykjøring

Følgende eksempler viser hvordan du kan legge til observabilitetssporing i agentens verktøyutførelse. Denne sporingen fanger opp telemetri for overvåking og revisjon.

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)

Inferens

Følgende eksempler viser hvordan du kan instrumentere AI-modellinferensanrop med observabilitetssporing for å samle tokenbruk, modelldetaljer og 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)

Output

Bruk dette omfanget for asynkrone scenarioer der InvokeAgentScope, ExecuteToolScope eller InferenceScope ikke kan fange opp data synkront. Start OutputScope som en underordnet span for å registrere de siste utdatameldingene etter at overordnet omfang er avsluttet.

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

Valider lokalt

For å verifisere at du har lykkes med å integrere med observability-SDK-en, undersøk konsolloggene generert av agenten din og loggene fra observability-SDK-en.

Angi miljøvariabelen ENABLE_A365_OBSERVABILITY_EXPORTER til false. Denne innstillingen eksporterer spans (traces) til konsoll.

For å undersøke eksportfeil, aktiver detaljert logging ved å sette ENABLE_A365_OBSERVABILITY_EXPORTER til true og konfigurere feilsøkingslogging ved oppstart av applikasjonen:

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)

Nøkkel-loggmeldinger:

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.

Se eksporterte logger

For å se agenttelemetri i Microsoft Purview eller Microsoft Defender må du sørge for at følgende krav er oppfylt:

Valider for publisering i lagring

Viktig!

For vellykket validering i lagring må agenten din implementere InvokeAgentScope, InferenceScope og ExecuteToolScope omfang. Disse tre omfangene er påkrevd for publisering.

Før publisering bruker du konsollogger for å validere observabilitetsintegrasjonen for agenten ved å implementere de nødvendige invoke agent, execute tool, inference og output omfangene. Sammenlign deretter agentens logger med følgende attributtlister for å verifisere at alle påkrevde attributter er til stede. Fang attributter på hvert omfang eller gjennom bagasjebyggeren, og inkluder valgfrie attributter etter eget skjønn.

For mer informasjon om krav til Store-publisering, se Store-valideringsretningslinjer.

InvokeAgentScope attributter

Følgende liste oppsummerer de påkrevde og valgfrie telemetriattributtene som registreres når du starter 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 attributter

Følgende liste oppsummerer de påkrevde og valgfrie telemetriattributtene som registreres når du starter 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 attributter

Følgende liste oppsummerer de påkrevde og valgfrie telemetriattributtene som registreres når du starter 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 attributter

Følgende liste oppsummerer de påkrevde og valgfrie telemetriattributtene som registreres når du starter en OutputScope. Bruk dette omfanget for asynkrone scenarioer der det overordnede omfanget ikke kan fange opp 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"
    }

Test agenten din med observerbarhet

Etter at du har implementert observabilitet i agenten din, test den for å sikre at den fanger opp telemetri korrekt. Følg testguiden for å sette opp miljøet ditt. Fokuser deretter hovedsakelig på seksjonen Se observabilitetslogger for å bekrefte at observabilitetsimplementeringen din fungerer som forventet.

Verifikasjon:

  • Gå til: https://admin.cloud.microsoft/#/agents/all
  • Velg agenten din > Aktivitet
  • Du ser økter og verktøykall

Feilsøking

Denne delen beskriver vanlige problemer ved implementering og bruk av observabilitet.

Problem Description
Observerbarhetsdata vises ikke Ingen telemetri er synlig fordi eksport ikke er aktivert, konfigurasjonen er feil, eller token-oppløsningen feiler.
Manglende leier-ID eller agent-ID – strekk hoppes over Spanene blir droppet før eksport når identitetsattributter som kreves for partisjonering mangler.
Tokenoppløsningsfeil – eksport hoppet over eller uautorisert Eksportforespørsler mislykkes eller blir utelatt når resolveren ikke returnerer en token eller støter på en unntak.
HTTP 401 Uautorisert Autentisering lykkes rent syntaktisk, men tokenet er ugyldig for inntak på grunn av omfang, type eller utløpsdato.
HTTP 403 Ikke tillatt Tilgang nektes på grunn av manglende leietakerlisens eller manglende tillatelser for observabilitet.
HTTP 403 Forbudt – Agent-ID-konflikt Forespørselen avvises hvis agentidentiteten i nettadressen ikke stemmer overens med identiteten representert av tokenet.
HTTP 429 eller 5xx-feil – Midlertidige feil Midlertidig begrensning eller tjenestesidefeil avbryter eksporten og kan kreve finjustering av gjentakelseslogikken.
Eksporttidsavbrudd Telemetribatcher overskrider konfigurerte tidsavgrensninger på grunn av nettverksforsinkelse eller treg responstid fra endepunktet.
Eksport lykkes, men telemetri vises ikke i Defender eller Purview Inntak fullføres, men nedstrøms synlighet blir forsinket eller blokkert av produktforutsetninger.

Tips

Feilsøkingsveiledning for Agent 365 inneholder anbefalinger på høyt nivå for feilsøking, anbefalte fremgangsmåter og koblinger til feilsøkingsinnhold for hver fase i utviklingssyklusen i Agent 365.

Observerbarhetsdata vises ikke

Symptomer:

  • Agenten kjører
  • Ingen telemetri i administrasjonssenteret
  • Kan ikke se agentaktivitet

Rotårsak:

  • Observerbarhet er ikke aktivert
  • Konfigurasjonsfeil
  • Tokenløserproblemer

Løsninger: Prøv følgende trinn for å løse problemet:

  • Verifiser observabilitetseksportøren er aktivert

    Du må eksplisitt aktivere Agent 365-eksporten. Når eksportøren er deaktivert, faller SDK-en tilbake til en konsolleksportør, og telemetri sendes ikke til tjenesten. For konfigurasjonsdetaljer, se Konfigurasjon.

  • Sjekk konfigurasjonen for tokenløser

    Eksportøren krever en gyldig tokenløser som returnerer en bærertoken for hver eksportforespørsel. Hvis tokenløseren mangler eller returnerer null, blir eksporten hoppet over uten varsel. Sørg for at koden din implementerer tokenresolveren riktig. Se tokenresolver for detaljer.

  • Sjekk loggene for feil

    Slå på detaljert logging og bruk az webapp log tail-kommandoen for å finne feil relatert til observabilitet i loggene. For detaljer om hvordan logging aktiveres per plattform, se Valider lokalt.

    # Look for observability-related errors
    az webapp log tail --name <your-app-name> --resource-group <your-resource-group> | Select-String "observability"
    
  • Verifiser telemetrieksport

    Bekreft at telemetri genereres og eksporteres som forventet.

    • Legg til en konsolleksportør og sjekk om telemetri genereres lokalt. For detaljer om hvordan du bruker konsolleksportøren og validerer utdata, se Valider lokalt.

Manglende leier-ID eller agent-ID – strekk hoppet over

Symptomer: Systemet senker stille strekk og eksporterer dem aldri. Noen SDK-er logger antall utelatte spans eller en melding som «Ingen spans med tenant-/agentidentitet funnet». Andre dropper dem uten å logge dem.

Løsning.

  • Før eksport deler SDK-en opp spans etter leietaker- og agentidentitet. Systemet dropper spans som mangler enten leier-ID eller agent-ID og sender dem aldri til tjenesten.
  • Sørg for at BaggageBuilder er satt opp med leietaker-ID og agent-ID før du oppretter strekk. Disse verdiene videreføres gjennom OpenTelemetry-konteksten og legges til alle strekk som opprettes innenfor bagasjeomfanget. For den plattformspesifikke API-en kan du se Bagasjeattributter.
  • Bekreft at TurnContext-aktiviteten har en gyldig mottaker med agentidentitet hvis du bruker baggage-middleware eller turn context helper fra hosting-integrasjonspakken for å sette disse ID-ene.

Tokenoppløsningsfeil – eksport utelatt eller uautorisert

Symptomer: Tokenløseren returnerer null eller kaster en feil. Avhengig av SDK-en kan eksporten enten bli utelatt helt, eller forespørselen sendes uten en autorisasjonsheader og feiler med HTTP 401.

Løsning.

  • Token-resolveren kreves ved initialisering. Hvis det mangler, gir eksportøren en feilmelding ved oppstart. Kontroller at en tokenløser er oppgitt og returnerer et gyldig bærertoken.
  • Sørg for at riktig leietaker-ID og agent-ID brukes for BaggageBuilder, fordi disse verdiene sendes til token-resolveren.
  • For Azure-baserte agenter må du sørge for at administrert identitet har de nødvendige API-rettighetene for observerbarhetsomfanget.

HTTP 401 Uautorisert

Symptomer: Eksport mislykkes med HTTP 401. Eksportøren forsøker ikke på nytt ved denne feilen.

Løsning.

  • Verifiser at tokenmålgruppen samsvarer med observerbarhetsendepunktets omfang.
  • Sjekk at tokenløseren ikke returnerer en delegert brukertoken, et token for feil målgruppe eller et utløpt token.

HTTP 403 Ikke tillatt

Symptomer: Eksport mislykkes med HTTP 403. Eksportøren forsøker ikke på nytt ved denne feilen.

Rotårsak: En HTTP 403-feil kan ha ulike årsaker. Sjekk følgende løsninger i rekkefølge.

Løsning.

  • Manglende lisens – Kontroller at leietakeren din har én av følgende lisenser tildelt i Administrasjonssenteret for Microsoft 365:

    • Test – Microsoft 365 E7
    • Microsoft 365 E7
    • Microsoft Agent 365 Frontier
  • Manglende Agent365.Observability.OtelWritetillatelse — Hvis du nylig har oppgradert observabilitetspakkene dine, må du gi denne tillatelsen. Se den viktige merknaden i neste seksjon.

Viktig!

Eksisterende agenter som oppgraderer til disse pakkeversjonene krever et ekstra trinn

Dette trinnet gjelder kun hvis du oppgraderer en eksisterende agent. Nye agentinstallasjoner krever ikke dette trinnet. Hvis du oppgraderer til følgende pakkeversjoner eller nyere, må du gi den nye Agent365.Observability.OtelWrite-tillatelsen til identiteten din (administrert identitet eller appregistrering). Uten denne tillatelsen feiler telemetrieksport med HTTP 403.

Plattform Minimumsversjon som krever dette trinnet
.NET 0.3-beta
Node.js 0.2.0-preview.1
Python 0.3.0

Gi tillatelsen ved å bruke ett av følgende alternativer.

Alternativ A — Agent 365 CLI (krever en Global Administrator-konto; kjør fra agentprosjektkatalogen som inneholder a365.config.json, eller bruk --agent-name)

a365 setup permissions bot

Eller uten konfigurasjonsfil:

a365 setup permissions bot --agent-name "<agent-name>"

Denne kommandoen gir alle manglende tillatelser på blueprinten, inkludert observabilitetsscopene.

Alternativ B — Entra-portalen (ingen konfigurasjonsfiler kreves; krever Global Administrator-tilgang til blueprint-appens registrering)

  1. Gå til Entra Portal>Appregistreringer> velg blåkopiappen.
  2. Gå til API-tillatelser>Legg til en tillatelse>API-er organisasjonen min bruker> søk etter 9b975845-388f-4429-889e-eab1ef63949c.
  3. Velg Delegerte tillatelser>, merk av Agent365.Observability.OtelWrite>Legg til tillatelser.
  4. Gjenta trinn 2–3, denne gangen velg Applikasjonstillatelser>, sjekk Agent365.Observability.OtelWrite>Legg til tillatelser.
  5. Klikk på Gi administratorsamtykke og bekreft.

Både Agent365.Observability.OtelWrite (Delegert) og Agent365.Observability.OtelWrite (Applikasjon) skal vise Granted status.

HTTP 403 Forbudt – Agent-ID-konflikt

Symptomer: Eksporten mislykkes med HTTP 403 og en servermelding som ligner på 403 Forbidden med agent-ID-mismatch-feil ved kall til Agent 365-sporendepunkter.

Rotårsak: Denne feilen oppstår når du bruker blåkopiklient-ID-en i stedet for klient-ID-en til agentforekomsten når du konfigurerer agentdetaljene. Agent-ID-en i eksportnettadressen samsvarer ikke med identiteten autorisert av tokenet, så sporendepunktet avviser forespørselen.

Løsning.

  • Verifiser at leietaker-ID-en er lagt til i listen over tillatte leietakere for Agent 365.
  • Konfigurer agentdetaljene med klient-ID-en til agentforekomst (ikke blåkopiklient-ID-en).
  • Verifiser eksportnettadressen som genereres – den logges hvis logging er aktivert. Bekreft at agent-ID-en i nettadressen samsvarer med agentforekomstens klient-ID.
  • For å aktivere diagnostisk logging per SDK, se Valider lokalt.

HTTP 429 eller 5xx-feil – Midlertidige feil

Symptomer: Eksport feiler med en midlertidig HTTP-statuskode som 429 eller 5xx.

Løsning.

  • Disse feilene er vanligvis forbigående og løser seg av seg selv. Python- og JavaScript-SDK-ene prøver automatisk på nytt ved HTTP-statuskodene 408, 429 og 5xx opptil tre ganger med eksponentiell tilbaketrekning. .NET SDK-en prøver ikke automatisk på nytt.
  • Hvis feilene vedvarer, sjekker du tjenestetilstandsinstrumentbordet.
  • Vurder å redusere eksportfrekvensen ved å øke den planlagte forsinkelsen mellom batchene eller øke maksimal eksportbatchstørrelse. For konfigurasjonsalternativer per plattform, se Agent365ExporterOptions tabellen i Konfigurasjon.

Eksporttidsavbrudd

Symptomer: Eksportforsøk har tidsavbrudd.

Løsning.

  • Kontroller nettverkstilkoblingen til observerbarhetsendepunktet.
  • Timeout-standarder varierer avhengig av plattform. Standard HTTP-forespørseltidsavbrudd er 30 sekunder. Noen SDK-er har også en separat samlet timeout for eksportøren som dekker hele eksportprosessen, inkludert gjentatte forsøk. For nøyaktige egenskaper og standardinnstillinger per plattform, se Agent365ExporterOptions tabellen i Konfigurasjon.
  • Hvis timeout oppstår ofte, øk den relevante timeout-verdien i eksportørinnstillingene dine.

Eksport lykkes, men telemetri vises ikke i Defender eller Purview

Symptomer: Loggene viser en vellykket eksport, men telemetri er ikke synlig i Microsoft Defender eller Microsoft Purview.

Løsning.

  • Kontroller at du oppfyller forutsetningene for å se eksporterte logger. For Purview må loggføring aktiveres. For Defender må du konfigurere avansert jakt. For mer informasjon, se Visning av eksporterte logger.
  • Det kan ta flere minutter før telemetridata blir tilgjengelig etter en vellykket eksport. Vent på at dataene skal dukke opp før du undersøker videre.

For mer informasjon om testing av observabilitet, se: