Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Microsoft OpenTelemetry Distro on yhtenäinen havaittavuusjakelu, joka mahdollistaa jälkien, mittareiden ja lokien keräämisen agenttisista ja ei-agenttisista sovelluksista yhdellä käyttöönotolla. Se tarjoaa havaittavuuden tuen Microsoft Agent 365:lle, Microsoft Foundrylle, Azure Monitorille ja kaikille OpenTelemetry Protocol (OTLP) -yhteensopiville taustajärjestelmille. Distro tukee .NET-, Node.js- ja Python-sovelluksia ja korvaa hajanaiset havaittavuusratkaisut yhdellä importilla ja konfiguraatiokutsulla.
Avainedut
Microsoft OpenTelemetry Distro tarjoaa seuraavat edut:
- Yksi paketti, yksi API: Korvaa useat vienti- ja instrumentointipaketit yhdellä riippuvuudella.
- Monitaustatuki: Lähetä telemetria Azure Monitoriin, mille tahansa OpenTelemetry Protocol (OTLP) -yhteensopivalle päätepisteelle, kuten Datadogiin, Grafanaan tai New Reliciin, sekä Microsoft Agent 365:een samanaikaisesti.
- Sisäänrakennetut instrumentaatiot: Käytä automaattista instrumentointia HTTP:lle, tietokannoille, Azure SDK:lle, Azure-funktioille ja muille ilman lisäasetuksia.
- Standardipohjainen: Rakenna OpenTelemetryn pohjalle, joka on alan standardi havaittavuusviitekehys.
- Vähäinen pohjakoodi: Lisää yksi tuonti ja yksi funktiokutsu sovelluksesi aloituspisteeseen.
Asennus ja määrittäminen
Tämä ohjeistus näyttää, miten voit lisätä havaittavuutta sovellukseesi Microsoft OpenTelemetry Distron avulla. Distro kerää automaattisesti jäljitykset, mittarit ja lokitiedot sisäänrakennetuilla instrumentaatioilla ja vie telemetrian Azure Monitoriin, mihin tahansa OpenTelemetry Protocol (OTLP) -päätepisteeseen tai Microsoft Agent 365:een.
Kirjaston asennus
Aloita Microsoft OpenTelemetry Distron käyttö asentamalla kehitysalustallesi sopiva kirjasto ohjelmointikielesi pakettienhallintaohjelmalla.
Ennakkovaatimukset: Python 3.10 tai uudempi.
pip install microsoft-opentelemetry
Määritys
Agent 365 -viejä ei käytä yhteysmerkkijonoa. Se löytää päätepisteensä automaattisesti vuokraajan perusteella. Jotta vienti Agent 365:een olisi mahdollista, aseta exporter target ja määritä token resolver, joka palauttaa käyttöoikeustunnuksen annetulle agentti-ID:lle ja tenant ID:lle.
Kutsu use_microsoft_opentelemetry() ottaaksesi käyttöön observabilityn.
from microsoft.opentelemetry import use_microsoft_opentelemetry
from microsoft.opentelemetry.a365.hosting.token_cache_helpers import AgenticTokenCache
token_cache = AgenticTokenCache()
use_microsoft_opentelemetry(
enable_a365=True,
a365_token_resolver=lambda agent_id, tenant_id: (
(t := asyncio.run(token_cache.get_observability_token(agent_id, tenant_id)))
and t.token or None
),
)
Jos haluat käyttää mukautettua tunnus-ratkaisijaa (oletustunnus-ratkaisijan sijaan), katso Manuaalinen tunnusratkaisija.
Voit mukauttaa viejän toimintaa antamalla a365_*-avainsana-argumentin use_microsoft_opentelemetry():lle.
| Parametri | Description | Oletus |
|---|---|---|
a365_use_s2s_endpoint |
Kun True on käytössä, käytetään service-to-service-päätepisteen polkua. |
False |
a365_max_queue_size |
Eräkäsittelijän jonon maksimikoko. | 2048 |
a365_scheduled_delay_ms |
Viive millisekunneissa vientierien välillä. | 5000 |
a365_exporter_timeout_ms |
Vientitoiminnon aikakatkaisuaika (ms). | 30000 |
a365_max_export_batch_size |
Suurin eräkoko vientitoiminnoille. | 512 |
Kontekstin välittäminen
Havaittavuuden ylläpitämiseksi hajautetuissa Agent 365 -operaatioissa, välitä konteksti. Kun välität kontekstia agenttien ja palveluiden kautta, varmistat, että jäljitykset, lokit ja mittarit ovat asianmukaisesti korreloitu koko pyynnön elinkaaren ajan. Tämä korrelaatio on välttämätön täydelliselle ja tehokkaalle Microsoft Agent 365 -monitorointikokemukselle.
Baggage-tietojen määritteet
Käytä BaggageBuilder asettaaksesi kontekstuaalista tietoa, joka välittyy kaikkiin pyynnön spanien läpi.
SDK toteuttaa SpanProcessor -toiminnon, joka kopioi kaikki ei-tyhjät baggage-merkinnät uusiin spaneihin ilman olemassa olevien attribuuttien ylikirjoittamista.
from microsoft.opentelemetry.a365.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
Täyttääksesi BaggageBuilder automaattisesti TurnContext perusteella, käytä populate-aputoimintoa microsoft-opentelemetry-paketissa. Tämä apufunktio poimii automaattisesti kutsujan, agentin, vuokraajan, kanavan ja keskustelun tiedot aktiviteetista.
from microsoft.opentelemetry.a365.core import BaggageBuilder
from microsoft.opentelemetry.a365.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-väliohjelmisto
Jos agenttisi käyttää hosting-integraatiopakettia, rekisteröi baggage-väliohjelmisto, jotta baggage täytetään automaattisesti jokaiselle saapuvalle pyynnölle. Tämä vaihe poistaa tarpeen kutsua BaggageBuilder manuaalisesti jokaisessa aktiviteetin käsittelijässä.
Pythonissa rekisteröi baggage-väliohjelmisto ObservabilityHostingManager.configure():n kautta, ei suoraan adapterille.
from microsoft.opentelemetry.a365.hosting import ObservabilityHostingManager, ObservabilityHostingOptions
options = ObservabilityHostingOptions(enable_baggage=True)
ObservabilityHostingManager.configure(adapter.middleware_set, options)
Middleware ohittaa baggage-määrityksen asynkronisille vastauksille (ContinueConversation tapahtumille) välttääkseen baggage-tietojen ylikirjoittamisen, jotka alkuperäinen pyyntö on jo asettanut.
Varmista, että data välittyy tuotteessa
Jotta voit tarkastella agentin telemetriaa Microsoft Purviewissa tai Microsoft Defenderissä, varmista että seuraavat vaatimukset täyttyvät:
- Microsoft Purview: Auditointi on otettava käyttöön organisaatiossasi. Katso ohjeet kohdasta Seurannan ottaminen käyttöön tai poistaminen käytöstä.
-
Microsoft Defender: Edistynyt metsästys täytyy konfiguroida, jotta tauluun
CloudAppEventspääsee käsiksi. Katso tiedot kohdasta CloudAppEvents-taulukko edistyneen metsästyksen skeemassa.
Automaattinen instrumentointi
Microsoft OpenTelemetry -jakelu yhdistää standardi OpenTelemetry-putket Microsoftin kuratoidun instrumentoinnin kanssa. Jakelu voi kerätä sovellustelemetriaa, infrastruktuuritelemetriaa sekä agentti- tai generatiivinen tekoälytelemetriaa kielestä ja kokoonpanosta riippuen.
| Luokka | Mitä se kattaa |
|---|---|
| Signaaliputkistot | Jäljet, mittarit ja lokit. |
| Resurssien tunnistus | Palvelu-, isäntä-, pilvi- ja Azure-suorituksenaikainen konteksti (mikäli tuettu). |
| Infrastruktuurin instrumentointi | HTTP, ASP.NET Core, Azure SDK, tietokanta-asiakkaat ja lokikehykset olivat tuettuja. |
| Generatiivisen tekoälyn instrumentointi | OpenAI, Azure OpenAI, Semantic Kernel, LangChain, OpenAI Agents SDK ja Agent Framework olivat tuettuja. |
| Manuaaliset agentin toiminta-alueet | Agentin kutsu, työkalujen suoritus, inferenssi ja tulostelemetria, missä tuettu. |
| Viejät ja prosessorit | Azure Monitor, Microsoft Agent 365, OTLP, konsoliulostulo, span-prosessorit, lokiprosessorit ja metriikkalukijat. |
Instrumentointikattavuus
| Language | Yleinen sovelluksen instrumentointi | Yhteinen agentti ja generatiivinen tekoälyinstrumentointi |
|---|---|---|
| Python | OpenTelemetryn resurssit, prosessorit, lukijat, lokitus, mittarit ja jäljitykset. | Semantic Kernel, OpenAI Agents SDK, Agent Framework, LangChain, Microsoft Agent 365 baggage ja Microsoft Agent 365 -vaikutusalueet. |
| Node.js | HTTP, Azure SDK, Azure-funktiot, MongoDB, MySQL, PostgreSQL, Redis, Bunyan ja Winston. | OpenAI Agents SDK, LangChain, Microsoft Agent 365 baggage ja Microsoft Agent 365 -vaikutusalueet. |
| .NET | ASP.NET Core, HttpClient, SQL Client, Azure SDK, resurssien tunnistus, mittarit ja lokit. | Semantic Kernel, OpenAI ja Azure OpenAI, Agent Framework, Microsoft Agent 365 baggage ja Microsoft Agent 365 -vaikutusalueet. |
Automaattinen instrumentointi kuuntelee telemetriasignaaleja, joita tuetut kirjastot ja kehykset lähettävät. Manuaalista instrumentointia käytetään, kun sovelluksen täytyy kuvata agenttikohtaisia toimintoja, kuten kutsun tekemistä, työkalun suorittamista, inferenssiä tai asynkronista tulosta.
Lisää mukautettuja OpenTelemetry-lähteitä, mittareita, prosessoreita tai lukijoita, kun sovelluksesi tuottaa telemetriaa, jota sisäänrakennetut instrumentoinnit eivät kata.
Tärkeää
Automaattinen instrumentointi täyttää vain tavalliset OpenTelemetry-attribuutit. Se ei sisällä kaikkia attribuutteja, joita Agent 365 vaatii. Sinun täytyy lisätä Microsoft-kohtaiset attribuutit BaggageBuilder kautta. Katso, mitkä attribuutit vaaditaan, kohdasta Tallenna vahvistusattribuutit.
Sisäänrakennetut instrumentointikirjastot
Automaattinen instrumentointi kuuntelee tuettujen kehysten lähettämää telemetriaa ja välittää sen Distron OpenTelemetry-putken kautta. Agenttiskenaarioissa määritä baggage-attribuutit, kuten vuokraaja-ID ja agentti-ID, ennen kuin instrumentoitu kehys luo spanit.
| Sovelluskehys | Python | Node.js | .NET |
|---|---|---|---|
| Semantic Kernel | Tuettu | Ei tueta | Tuettu |
| OpenAI ja OpenAI Agents SDK | Tuettu | Tuettu | Tuettu |
| Agent Framework | Tuettu | Ei tueta | Tuettu |
| LangChain | Tuettu | Tuettu | Ei luettelossa |
Semantic Kernel
from microsoft.opentelemetry import use_microsoft_opentelemetry
def token_resolver(agent_id, tenant_id):
return "your-token"
use_microsoft_opentelemetry(
enable_a365=True,
a365_token_resolver=token_resolver,
instrumentation_options={
"semantic_kernel": {"enabled": True},
},
)
OpenAI
from microsoft.opentelemetry import use_microsoft_opentelemetry
def token_resolver(agent_id, tenant_id):
return "your-token"
use_microsoft_opentelemetry(
enable_a365=True,
a365_token_resolver=token_resolver,
instrumentation_options={
"openai_agents": {"enabled": True},
},
)
Agent Framework
from microsoft.opentelemetry import use_microsoft_opentelemetry
def token_resolver(agent_id, tenant_id):
return "your-token"
use_microsoft_opentelemetry(
enable_a365=True,
a365_token_resolver=token_resolver,
instrumentation_options={
"agent_framework": {"enabled": True},
},
)
LangChain
from microsoft.opentelemetry import use_microsoft_opentelemetry
def token_resolver(agent_id, tenant_id):
return "your-token"
use_microsoft_opentelemetry(
enable_a365=True,
a365_token_resolver=token_resolver,
instrumentation_options={
"langchain": {"enabled": True},
},
)
Manuaalinen instrumentointi
Käytä manuaalista instrumentointia, kun automaattinen instrumentointi ei kuvaa agentin toimintaa riittävän yksityiskohtaisesti. Manuaalisten scopejen avulla sovellus voi kuvata yleisiä agenttitoimintoja yhdenmukaisesti eri ohjelmointikielissä.
| Käyttöalue | Käyttökohde |
|---|---|
InvokeAgentScope |
Agenttikutsun aloittaminen ja päättyminen. |
ExecuteToolScope |
Agentin tekemä työkalukutsu. |
InferenceScope |
Tekoälymallin päättelyoperaatio. |
OutputScope |
Tuotos, joka täytyy tallentaa sen jälkeen, kun alkuperäinen scope on jo päättynyt. |
Käytä samoja pyynnön ja agentin identiteettiarvoja eri konteksteissa pyynnön aikana, jotta liittyvä telemetria voidaan korreloida.
Agentin kutsuminen
from microsoft.opentelemetry.a365.core import (
AgentDetails,
Channel,
InvokeAgentScope,
InvokeAgentScopeDetails,
Request,
ServiceEndpoint,
)
agent_details = AgentDetails(
agent_id="agent-456",
agent_name="Email Assistant",
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",
)
request = Request(
content="Please help me organize my emails",
session_id="session-42",
conversation_id="conv-xyz",
channel=Channel(name="msteams"),
)
scope_details = InvokeAgentScopeDetails(
endpoint=ServiceEndpoint(hostname="myagent.contoso.com", port=443),
)
with InvokeAgentScope.start(
request=request,
scope_details=scope_details,
agent_details=agent_details,
) as scope:
scope.record_input_messages(["Please help me organize my emails"])
# Run the agent invocation.
invoke_scope.record_output_messages(["I found 15 urgent emails."])
Työkalun suoritus
from microsoft.opentelemetry.a365.core import (
ExecuteToolScope,
ServiceEndpoint,
ToolCallDetails,
ToolType,
)
tool_details = ToolCallDetails(
tool_name="email-search",
arguments={"query": "from:manager@contoso.com"},
tool_call_id="tool-call-456",
description="Search emails by criteria",
tool_type=ToolType.FUNCTION.value,
endpoint=ServiceEndpoint(
hostname="tools.contoso.com",
port=8080,
protocol="https",
),
)
with ExecuteToolScope.start(
request=request,
details=tool_details,
agent_details=agent_details,
) as scope:
result = search_emails(tool_details.arguments)
scope.record_response(result)
Päättely
from microsoft.opentelemetry.a365.core import (
InferenceCallDetails,
InferenceOperationType,
InferenceScope,
)
inference_details = InferenceCallDetails(
operationName=InferenceOperationType.CHAT,
model="gpt-4o-mini",
providerName="azure-openai",
)
with InferenceScope.start(
request=request,
details=inference_details,
agent_details=agent_details,
) as scope:
scope.record_input_messages(["Summarize the following emails for me."])
response = call_llm()
scope.record_output_messages([response.text])
scope.record_input_tokens(response.usage.input_tokens)
scope.record_output_tokens(response.usage.output_tokens)
scope.record_finish_reasons(["stop"])
Tulos
from microsoft.opentelemetry.a365.core import OutputScope, Response, SpanDetails
# Capture this before exiting the originating InvokeAgentScope context.
parent_context = invoke_scope.get_span_context()
response = Response(
messages=["Here is your organized inbox."],
)
with OutputScope.start(
request=request,
response=response,
agent_details=agent_details,
user_details=None,
span_details=SpanDetails(parent_context=parent_context),
) as scope:
pass
Tuotedokumentaatiossa tulisi määritellä tuotekohtaiset validointivaatimukset näille laajuuksille.
Paikallisvalidaatio
Paikallinen validointi varmistaa, että sovellus tuottaa telemetriaa ennen kuin tuotekohtainen kohde validoidaan. Käytä konsolitulostusta tai paikallista OTLP-päätepistettä varmistaaksesi, että tracet, mittarit ja lokit luodaan.
Validoi paikallisella OTLP-päätepisteellä
Määritä Distro lähettämään telemetriaa paikalliseen kerääjään tai OTLP-yhteensopivaan päätepisteeseen.
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
from microsoft.opentelemetry import use_microsoft_opentelemetry
use_microsoft_opentelemetry()
Validointi paikallisella tuloksella
Käytä paikallista tulosta, kun haluat varmistaa instrumentaation ennen telemetrian lähettämistä etäkohteeseen.
export ENABLE_A365_OBSERVABILITY_EXPORTER=false
from microsoft.opentelemetry import use_microsoft_opentelemetry
def token_resolver(agent_id, tenant_id):
return "local-validation-token"
use_microsoft_opentelemetry(
enable_a365=True,
a365_token_resolver=token_resolver,
)
# Run instrumented application code.
Tarkastele paikallista tulosta spanien osalta odotetuista lähteistä, kuten HTTP-pyynnöistä, OpenAI- tai Azure OpenAI -kutsuista, agentin kutsulaajuuksista, työkalun suorituslaajuuksista tai päättelyalueista. Kohdekohtainen validointi kuuluu kyseisen kohteen tuotedokumentaatioon.
Todennuksen määrittäminen manuaalisesti
Kun käytät Agent 365 -vientikomponenttia, sinun on tarjottava mekanismi autentikointitunnisteen tarjoamiseen. Token-resolver toimii vientieräkohtaisesti käyttämällä agentti ID:tä ja tenant ID:tä aktiivisesta baggage-kontekstista. Distro tukee kahta lähestymistapaa.
Vinkki
Jos rakennat agentteja Microsoft 365 -agenttien SDK:n avulla, tutustu Agentin SDK:n havainnointiautentikoinnin asennusohjeisiin saadaksesi vaiheittaiset ohjeet OBO- ja S2S-tunnisteiden hankinnan konfigurointiin sekä agenttisille että ei-agenttisille agenteille.
Manuaalinen token-resolver
Käytä manuaalista token-resolveria, kun hankit tunnisteita Agent Framework -putken ulkopuolella, kun rakennat muita kuin Agent Framework -sovelluksia tai kun käytät service-to-service (S2S) -autentikointia (client credentials flow). Agentit voivat luoda tunnuksen itse, esimerkiksi käyttämällä Microsoft Authentication Librarya (MSAL) tai muuta tunnuksen hankintatapaa, mutta niiden on varmistettava, että tunnuksella on oikea observability-scope (api://9b975845-388f-4429-889e-eab1ef63949c/Agent365.Observability.OtelWrite).
Muistiinpano
Palvelusta palveluun (S2S) -autentikoinnissa on käytettävä manuaalista token-ratkaisinta. Agenttinen token cache tukee vain OBO-autentikointivirtoja.
Seuraavat esimerkit havainnollistavat OBO (on-behalf-of) token-ratkaisijan mallia — agentti hankkii käyttäjätunnuksen agentin tunnistautumiskäsittelijän kautta ja vaihtaa sen havaittavuuteen perustuvaan tokeniin. Palvelusta palveluun (S2S) -esimerkit sekä OBO:n ja S2S:n todennuksen vertailu löytyy osiosta Agentin SDK:n havainnointiautentikoinnin asennusohjeet.
Resolverin täytyy olla synkroninen. Nouda token async-aktiviteettikäsittelijästäsi (tai MSAL:n kautta) ja tallenna se ratkaisijan välimuistiin.
from microsoft.opentelemetry import use_microsoft_opentelemetry
from microsoft.opentelemetry.a365.runtime import get_observability_authentication_scope
_cached_token: str | None = None
def my_token_resolver(agent_id: str, tenant_id: str) -> str | None:
return _cached_token
use_microsoft_opentelemetry(enable_a365=True, a365_token_resolver=my_token_resolver)
@AGENT_APP.activity("message", auth_handlers=["AGENTIC"])
async def on_message(context: TurnContext, _state: TurnState):
global _cached_token
_cached_token = await AGENT_APP.auth.exchange_token(
context,
scopes=get_observability_authentication_scope(),
auth_handler_id="AGENTIC",
)
Agent Framework -sovellusten agentic-token-välimuisti
Agent Framework -sovelluksissa, jotka käyttävät OBO-todennusta, jakelu rekisteröi IExporterTokenCache<AgenticTokenStruct> automaattisesti DI:n kautta, jos et määritä omaa TokenResolveria. Agenttisi kutsuu RegisterObservability() suorituksenaikaisesti toimittaakseen tunnistetiedot, ja välimuisti hoitaa tunnusten hankinnan ja päivityksen.
Muistiinpano
Tämä lähestymistapa tukee vain OBO-tunnistautumistyönkulkuja. S2S-tunnistautumisessa käytä manuaalista token-resolveria sen sijaan.
from microsoft.opentelemetry import use_microsoft_opentelemetry
from microsoft.opentelemetry.a365.hosting.token_cache_helpers import AgenticTokenCache, AgenticTokenStruct
from microsoft.opentelemetry.a365.runtime import get_observability_authentication_scope
token_cache = AgenticTokenCache()
_cached_tokens: dict[tuple[str, str], str | None] = {}
# Keep the sync resolver side-effect free; refresh the cache in the async request handler.
def sync_token_resolver(agent_id: str, tenant_id: str) -> str | None:
return _cached_tokens.get((agent_id, tenant_id))
use_microsoft_opentelemetry(enable_a365=True, a365_token_resolver=sync_token_resolver)
@AGENT_APP.activity("message", auth_handlers=["AGENTIC"])
async def on_message(context: TurnContext, _state: TurnState):
agent_id = context.activity.recipient.id
tenant_id = context.activity.recipient.tenant_id
token_cache.register_observability(
agent_id=agent_id,
tenant_id=tenant_id,
token_generator=AgenticTokenStruct(
authorization=AGENT_APP.auth,
turn_context=context,
),
observability_scopes=get_observability_authentication_scope(),
)
_cached_tokens[(agent_id, tenant_id)] = await token_cache.get_observability_token(
agent_id, tenant_id,
)
Tallenna validointiattribuutit
Jotta tallennuksen validointi onnistuisi, agenttisi on toteutettava InvokeAgentScope, InferenceScope ja ExecuteToolScope. Jokainen vaikutusalue vastaa span-operaatiota kanonisessa rakenteessa:
| SDK-laajuus | Spanin operaatio | Yleinen viitekoodi |
|---|---|---|
InvokeAgentScope |
invoke_agent |
IA |
ExecuteToolScope |
execute_tool |
ET |
InferenceScope |
chat |
CH |
OutputScope |
output_messages |
OM |
Kaikki vaikutusaluekohtaiset vaadittujen ja valinnaisten attribuuttien listat – mukaan lukien attribuuttikohtaiset semantiikat, arvonvalintasuositukset ja tiedot siitä, mitkä attribuutit ovat haettavissa Microsoft Defenderin advanced hunting -toiminnolla – löytyvät kohdasta Agent 365:n havainnointiattribuutin viite.
Koskee -sarake tunnistaa, mihin alueeseen kukin attribuutti kuuluu, ja Pakollinen-sarake erottaa pakolliset (M) valinnaisista (O) attribuuteista.
Havainnointeja sisältävien agenttien testaus
Kun havaittavuus on otettu käyttöön, varmista että telemetriaa kerätään:
- Siirry kohteeseen
https://admin.cloud.microsoft/#/agents/all. - Valitse agenttisi ja valitse sitten Toiminta.
- Varmista, että istunnot ja työkalukutsut näkyvät.
Esimerkkisovellukset ja edistyneet asetukset
Löydät toimivia esimerkkejä ja edistyneitä asetuksia kunkin kielen GitHub-repositorioista:
Vianmääritys
Tässä osiossa kuvataan yleisiä ongelmia Microsoft OpenTelemetry Distron toteutuksessa ja käytössä Agent 365:n kanssa.
| Ongelma | Description |
|---|---|
| Havainnointidata ei näy | Telemetria ei ole näkyvissä, koska Agent 365 -vientitoiminto ei ole käytössä, määritys on puutteellinen tai tokenin resoluutio epäonnistuu. |
| Puuttuva vuokraaja-ID tai agentti-ID – spanit ohitetaan | Spanit suodatetaan pois ennen vientiä, kun vaadittavat vuokraaja- tai agentti-identiteetti-attribuutit puuttuvat. |
| Token-resoluutiovirhe – vienti jätetty väliin tai ei valtuutusta | Vienti jätetään väliin tai hylätään, kun token resolver ei palauta tokenia tai tapahtuu virheitä tokenin hankinnan aikana. |
| HTTP 401 Ei sallittu | Pyynnöt saapuvat palveluun, mutta todennus epäonnistuu, koska token on virheellinen, vanhentunut tai väärälle yleisölle. |
| HTTP 403 Käyttö estetty | Valtuutus epäonnistuu, koska vuokraajalla ei ole lisenssiä tai havainnointioikeudet puuttuvat. |
| HTTP 403 Estetty – agentti-ID ei vastaa | Palvelu hylkää viennin, jos pyynnön agentti-ID ei täsmää token-valtuutetun agentin identiteetin kanssa. |
| HTTP 429- tai 5xx-virheet – tilapäiset virheet | Tilapäinen rajoitus tai taustajärjestelmän epävakaus keskeyttää viennin ja saattaa edellyttää uudelleenyrityksiä tai eräasetusten säätämistä. |
| Viennin aikakatkaisu | Vientitoiminnot ylittävät aikakatkaisurajat verkon viiveiden tai päätepisteen hitauden vuoksi. |
| Vienti onnistuu, mutta telemetriaa ei näy Defenderissä tai Purviewissa | Datan vastaanotto onnistuu, mutta näkyvyys viivästyy tai estyy alavirran edellytysten ja skeemavaatimusten vuoksi. |
Vinkki
Agent 365:n vianmääritysopas sisältää yleisluontoisia vianmääritykseen liittyviä suosituksia, parhaita käytäntöjä sekä linkkejä vianmääritykseen liittyvään sisältöön Agent 365:n kehityksen elinkaaren kaikissa vaiheissa.
Havainnointidata ei näy
Oireet:
- Agentti on käynnissä
- Telemetria puuttuu hallintokeskuksesta
- Agentin toimintaa ei näy
Juurisyy:
- Agent 365:n vienti ei ole otettu käyttöön
- Määritysvirheet
- Token resolverin ongelmat
Ratkaisut: Kokeile seuraavia vaiheita ongelman ratkaisemiseksi:
Tarkista, että Agent 365 -vienti on käytössä
Agent 365 exportteri täytyy ottaa käyttöön erikseen. Jos et määritä sitä, distro saattaa siirtyä käyttämään konsoliexporteria tai olla viemättä mitään. Ota se käyttöön koodissa:
from microsoft.opentelemetry import use_microsoft_opentelemetry use_microsoft_opentelemetry( enable_a365=True, a365_enable_observability_exporter=True, a365_token_resolver=my_token_resolver, )Tai aseta ympäristömuuttuja:
export ENABLE_A365_OBSERVABILITY_EXPORTER=trueMuistiinpano
ENABLE_A365_OBSERVABILITY_EXPORTERon toissijainen kytkin, joka aktivoituu vain, kunenable_a365=Trueon asetettu koodissa. Voit myös ohjata sitäa365_enable_observability_exporter-avainsana-argumentilla.
Tarkista token-ratkaisijan konfiguraatio
Exportteri vaatii kelvollisen token-ratkaisijan, joka palauttaa Bearer-tokenin jokaista vientipyyntöä kohden. Jos token-ratkaisijaa ei ole tai se palauttaa
null, vienti jätetään huomiotta ilman ilmoitusta.Ota konsolivienti käyttöön ja tarkista telemetria paikallisesti
Lisää konsoli-exportteri varmistaaksesi, että telemetriaa generoidaan ennen kuin se saavuttaa Agent 365:n päätepisteen.
Ota käyttöön yksityiskohtainen lokiin kirjaaminen
Tarkista lokit vientivirheiden varalta
Käytä
az webapp log tail-komentoa hakeaksesi lokeista havaittavuuteen liittyviä virheitä:az webapp log tail --name <your-app-name> --resource-group <your-resource-group> | Select-String "observability"
Puuttuva vuokraaja-ID tai agentti-ID — spanit sivuutetaan
Oireet: Järjestelmä pudottaa huomaamattomasti spanit eikä koskaan vie niitä. Joillakin alustoilla kirjataan ohitettujen spanien määrä tai viesti, kuten No spans with tenant/agent identity found. Toiset pudottavat ne ilman kirjaamista.
Ratkaisu:
- Ennen vientiä distro jakaa spanit vuokralaisen ja agentin identiteetin mukaan. Spanit, joilla ei ole vuokralaisen tunnusta tai agentin tunnusta, pudotetaan eikä niitä koskaan lähetetä palveluun.
- Varmista, että
BaggageBuilderon asetettu vuokralaisen ja agentin tunnuksella ennen spanien luomista. Nämä arvot siirtyvät OpenTelemetry-kontekstin mukana ja liitetään kaikkiin baggage-kontekstin sisällä luotuihin span-objekteihin. Katso alustakohtaista API:a kohdasta Baggage attributes. - Jos käytät Baggage Middlewarea tai Turn-kontekstiapua hosting-integraatiopaketista, varmista, että aktiviteetilla
TurnContexton kelvollinen vastaanottaja agentin tunnisteella.
Token-resoluutiovirhe — vienti ohitettu tai valtuuttamaton
Oireet: Token resolver palauttaa null tai heittää virheen. Alustasta riippuen vienti joko ohitetaan kokonaan tai epäonnistuu HTTP 401 -virheellä.
Ratkaisu:
- Token resolver vaaditaan. Jos se puuttuu, exportteri antaa virheilmoituksen käynnistyksessä. Varmista, että token-ratkaisija on käytössä ja palauttaa kelvollisen Bearer-tokenin.
- Varmista, että oikea tenant ID ja agentti-ID välitetään
BaggageBuilder:lle, koska nämä arvot välitetään token resolverille. - Azure-isännöidyille agenteille varmista, että Managed Identityllä on tarvittavat API-oikeudet havaittavuuden vastuualuetta varten.
- Agent Framework -hosting-pakettia käyttävissä .NET-sovelluksissa tokenien vaihto hoidetaan automaattisesti DI:n kautta. Mikäli tokeneita puuttuu, varmista että
Microsoft.Agents.A365.Observability.Hostingon asennettu ja rekisteröity.
HTTP 401 Ei sallittu
Oireet: Vienti epäonnistuu HTTP 401 -virheen vuoksi. Vientiohjelma ei tee uudelleenyritystä tämän virheen sattuessa.
Ratkaisu:
- Varmista, että tokenin audience vastaa observability endpointin scopea.
- Tarkista, ettei token resolver palauta edustajakäyttäjä-tokenia, väärälle audience-arvolle tarkoitettua tokenia tai vanhentunutta tokenia.
HTTP 403 Käyttö estetty
Oireet: Vienti epäonnistuu HTTP 403 -virheen vuoksi. Vientiohjelma ei tee uudelleenyritystä tämän virheen sattuessa.
Juurisyy: HTTP 403 -virhe voi johtua useista eri syistä. Tarkista seuraavat ratkaisut järjestyksessä.
Ratkaisu:
Puuttuva lisenssi — Varmista, että vuokraajallasi on jokin seuraavista lisensseistä määritettynä Microsoft 365 -hallintakeskuksessa:
- Test - Microsoft 365 E7
- Microsoft 365 E7
- Microsoft Agent 365 Frontier
Puuttuva
Agent365.Observability.OtelWrite-lupa: Myönnä lupa identiteetillesi (Managed Identity tai sovelluksen rekisteröinti). Ilman sitä telemetrian vienti epäonnistuu HTTP 403 -virheellä.
Myönnä oikeus
Käytä jompaakumpaa näistä vaihtoehdoista:
Agent 365 CLI
Vaatii Global Administrator -käyttäjätilin. Suorita agenttiprojektihakemistosta, joka sisältää
a365.config.json, tai käytä--agent-name.a365 setup permissions botTai ilman konfiguraatiotiedostoa:
a365 setup permissions bot --agent-name "<agent-name>"Entra-portaali
Konfiguraatiotiedostoja ei tarvita; vaatii Global Administratorin pääsyn blueprint-sovelluksen rekisteröintiin.
- Siirry Entra-portaali>Sovellusten rekisteröinnit> -osioon ja valitse Blueprint-sovelluksesi.
- Siirry API-oikeudet>Lisää käyttöoikeus>Organisaation käytössä olevat API:t> etsi
9b975845-388f-4429-889e-eab1ef63949c. - Valitse Delegoidut oikeudet>, tarkista
Agent365.Observability.OtelWrite>Lisää käyttöoikeudet. - Toista vaiheet 2–3, tällä kertaa valitse Sovelluksen käyttöoikeudet>, valitse
Agent365.Observability.OtelWrite>Lisää käyttöoikeudet. - Klikkaa Myönnä ylläpitäjän suostumus ja vahvista.
Sekä
Agent365.Observability.OtelWrite(Delegoitu) ettäAgent365.Observability.OtelWrite(Sovellus) näyttävätGrantedtilan.
HTTP 403 Kielletty — agentin ID ei täsmää
Oireet: Vienti epäonnistuu HTTP 403 -virheellä ja palvelinviestillä, joka muistuttaa 403 Forbidden ja sisältää agent-ID-mismatch epäonnistumisia Agent 365:n jälkien päätepisteiden kutsumisessa.
Syy: Tämä virhe tapahtuu, kun käytät blueprintin asiakas-ID:täagentin instanssin asiakas-ID:n sijasta, kun asetat agentin tiedot. Agentin ID eksportin URL:ssa ei täsmää tokenin hyväksymän identiteetin kanssa, joten traces-päätepiste hylkää pyynnön.
Ratkaisu:
- Varmista, että tenant ID on lisätty Agent 365:n sallittujen vuokraajien listalle.
- Aseta agentin tiedot agentin instanssin asiakas-ID :llä (ei blueprint-asiakas-ID:llä).
- Tarkista generoitu vienti-URL – se kirjataan, jos otat loggerin käyttöön. Vahvista, että agentti-ID URL-osoitteessa vastaa agentin instanssin client ID:tä.
- Ota diagnostiikkalokit käyttöön SDK-kohtaisesti, katso Paikallinen validointi.
HTTP 429- tai 5xx-virheet – tilapäiset virheet
Oireet: Vienti epäonnistuu ohimenevällä HTTP-tilakoodilla, kuten 429 tai 5xx.
Ratkaisu:
- Nämä virheet ovat yleensä ohimeneviä ja ratkeavat itsestään. Python- ja JavaScript-distrot yrittävät automaattisesti uudelleen HTTP 408-, 429- ja 5xx-tilakoodeilla. .NET-distro ei yritä uudelleen automaattisesti.
- Jos virheet jatkuvat, tarkista palvelun tilannepaneeli.
- Harkitse vientitiheyden vähentämistä lisäämällä aikataulutettua viivettä erien välillä tai kasvattamalla maksimivientierän kokoa. Pythonille ja JavaScriptille käytä
exporterOptionsissa taia365_*:ssa dokumentoituja parametreja GitHub-repositorioissa. .NET-sovelluksissa käytäo.Agent365.Exporter.ScheduledDelayMillisecondsjao.Agent365.Exporter.MaxExportBatchSize.
Viennin aikakatkaisu
Oireet: Vientiyritykset menevät aikakatkaisuun.
Ratkaisu:
Tarkista verkkoyhteys observability-endpointiin.
HTTP-pyyntöjen oletusaikakatkaisu on 30 sekuntia kaikilla alustoilla. Jos aikakatkaisuja esiintyy toistuvasti, lisää timeout-arvoa exporter-asetuksissa:
use_microsoft_opentelemetry( enable_a365=True, a365_token_resolver=my_token_resolver, # No direct timeout kwarg — set via environment variable or exporterOptions if supported )Katso Python-säilöstä kaikki
a365_*-vaihtoehdot.
Vienti onnistuu, mutta telemetriaa ei näy Defenderissä tai Purviewissa
Oireet: Lokitiedostot osoittavat onnistuneen viennin (HTTP 200), mutta telemetria ei ole näkyvissä Microsoft Defenderissä tai Microsoft Purview'ssa.
Ratkaisu:
- Varmista, että täytät vientilokien tarkastelun edellytykset:
- Microsoft Purview: Auditointi on otettava käyttöön organisaatiossasi. Katso Ota auditointi käyttöön tai poista käytöstä.
-
Microsoft Defender: Edistynyt metsästys täytyy konfiguroida, jotta tauluun
CloudAppEventspääsee käsiksi. Katso CloudAppEvents-taulukko edistyneen metsästyksen skeemassa.
- Telemetrian päivittyminen voi kestää useita minuutteja onnistuneen viennin jälkeen. Odota ennen kuin tutkit asiaa tarkemmin.
- Varmista, että spanit sisältävät päteviä
microsoft.tenant.idjagen_ai.agent.idattribuutteja. Puuttuvat identiteettiattribuutit aiheuttavat spanien poistamisen palvelinpuolelta, vaikka HTTP-vienti palauttaisi 200.
Liittyvä sisältö
- Agent 365:n havaittavuuskäsitteet – Tietotyönkulku, identiteettimallit, todennus, laajuudet ja rajat, jotka koskevat kaikkia integraatiopolkuja.
- Agent 365:n havaittavuusattribuuttiviite – Kanoninen span-attribuuttikaavio, johon jokaisen Agent 365:n vastaanottaman haaran on vastattava.