Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Microsoft OpenTelemetry Distro, aracı ve aracı olmayan uygulamalardan izleri, ölçümleri ve günlükleri toplamak için tek bir ekleme deneyimi sağlayan birleşik bir gözlemlenebilirlik dağıtımıdır. Microsoft Agent 365, Microsoft Atölye, Azure İzleyici ve OpenTelemetry Protokolü (OTLP) ile uyumlu herhangi bir arka uç için gözlemlenebilirliği destekler. .NET, Node.js ve Python'u destekleyen distro, birden fazla gözlemlenebilirlik yığını arasında parçalanmış kurulumu tek bir içe aktarma ve bir yapılandırma çağrısı ile değiştirir.
Temel avantajlar
Microsoft OpenTelemetry Distro şu avantajları sağlar:
- Tek paket, tek API: Birden fazla dışarı aktarıcı ve enstrümantasyon paketini tek bir bağımlılıkla değiştirin.
- Çok arka uç desteği: Telemetriyi aynı anda Azure İzleyici, Datadog, Grafana veya New Relic gibi herhangi bir OpenTelemetry Protokolü (OTLP) ile uyumlu uç noktaya ve Microsoft Agent 365'e gönderin.
- Yerleşik enstrümantasyonlar: Ek yapılandırma olmadan HTTP, veritabanları, Azure SDK, Azure İşlevleri ve daha fazlası için otomatik enstrümantasyon kullanın.
- Standartlara dayalı: Endüstri standardı gözlemlenebilirlik çerçevesi olan OpenTelemetry üzerine kurulu.
- Minimal ortak kod: Uygulama giriş noktanıza tek bir içe aktarma ve tek bir işlev çağrısı ekleyin.
Yükleme ve yapılandırma
Bu rehber, Microsoft OpenTelemetry Distro ile uygulamanıza gözlemlenebilirlik eklemeyi gösterir. Distro, yerleşik enstrümantasyonlarla izleri, ölçümleri ve günlükleri otomatik olarak toplar ve telemetriyi Azure İzleyici, herhangi bir OpenTelemetry Protokolü (OTLP) uç noktası veya Microsoft Agent 365'e aktarır.
Kitaplığı yükleme
Microsoft OpenTelemetry Distro ile başlamak için, dilinizin paket yöneticisini kullanarak geliştirme platformunuz için uygun kitaplığı yükleyin.
Konfigürasyon
Agent 365 dışarıyı aktarıcı bağlantı dizesi kullanmaz. Uç noktasını kiracıya dayalı olarak otomatik olarak keşfeder. Agent 365'e dışarı aktarmayı etkinleştirmek için dışarıyı aktarıcı hedefini ayarlayın ve belirli bir aracı kimliği ve kiracı kimliği için bir erişim belirteci döndüren bir belirteç çözümleyicisi sağlayın.
İzlenebilirliği etkinleştirmek için use_microsoft_opentelemetry() öğesini çağırın.
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
),
)
Özel belirteç çözümlemesi için (varsayılan belirteç çözümleyicisi yerine), El ile belirteç çözümleyicisi bölümüne bakın.
İsteğe bağlı a365_* kwarg'larını use_microsoft_opentelemetry()'ye geçirerek dışarı aktarıcı davranışını özelleştirebilirsiniz.
| Parametre | Açıklama | Varsayılan |
|---|---|---|
a365_use_s2s_endpoint |
True olduğunda, hizmetten hizmete uç nokta yolunu kullanır. |
False |
a365_max_queue_size |
Toplu işlemci için maksimum kuyruk boyutu. | 2048 |
a365_scheduled_delay_ms |
Dışarı aktarma toplu işleri arasındaki gecikme (milisaniye cinsinden). | 5000 |
a365_exporter_timeout_ms |
Dışarı aktarma işlemi için zaman aşımı (milisaniye cinsinden). | 30000 |
a365_max_export_batch_size |
Dışarı aktarma işlemleri için maksimum toplu boyut. | 512 |
Bağlamı yayma
Dağıtılmış Agent 365 işlemleri genelinde gözlemlenebilirliği korumak için bağlamı yayın. Bağlamı aracılarınız ve hizmetleriniz arasında yayıldığında, izler, günlükler ve ölçümlerin tüm istek yaşam döngüsü genelinde doğru şekilde ilişkilendirilmesini sağlarsınız. Bu ilişkilendirme, eksiksiz ve etkili bir Microsoft Agent 365 izleme deneyimi için gereklidir.
Bagaj öznitelikleri
BaggageBuilder kullanarak bir istekteki tüm aralıklar arasında akan bağlamsal bilgileri ayarlayın.
SDK, tüm boş olmayan bagaj girdilerini yeni başlatılan aralıklara kopyalayan bir SpanProcessor uygular ve mevcut özniteliklerin üzerine yazmaz.
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
BaggageBuilder öğesini TurnContext öğesinden otomatik olarak doldurmak için microsoft-opentelemetry paketindeki populate yardımcısını kullanın. Bu yardımcı, etkinlikten arayanı, aracıyı, kiracıyı, kanalı ve konuşma ayrıntılarını otomatik olarak ayıklar.
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
Bagaj ara yazılımı
Aracınız barındırma tümleştirme paketini kullanıyorsa, gelen her istek için bagajı otomatik olarak doldurmak üzere bagaj ara yazılımını kaydedin. Bu adım, her etkinlik işleyicisinde BaggageBuilder öğesini el ile çağırma gereksinimini ortadan kaldırır.
Python'da, bagaj ara yazılımını doğrudan bağdaştırıcıya değil ObservabilityHostingManager.configure() aracılığıyla kaydedin.
from microsoft.opentelemetry.a365.hosting import ObservabilityHostingManager, ObservabilityHostingOptions
options = ObservabilityHostingOptions(enable_baggage=True)
ObservabilityHostingManager.configure(adapter.middleware_set, options)
Ara yazılım, orijinal isteğin zaten ayarladığı bagajın üzerine yazılmasını önlemek için zaman uyumsuz yanıtlar (ContinueConversation olayları) için bagaj kurulumunu atlar.
Verilerin üretimde akış halinde olduğunu doğrulayın
Aracı telemetrisi verilerini Microsoft Purview veya Microsoft Defender'da görüntülemek için aşağıdaki gereksinimlerin karşılandığından emin olun:
- Microsoft Purview: Kuruluşunuz için denetim açık olması gerekir. Yönergeler için bkz. Denetimi açma veya kapatma.
-
Microsoft Defender:
CloudAppEventstablosuna erişmek için gelişmiş aramaya ilişkin konfigürasyon yapılması gerekir. Ayrıntılar için bkz. Gelişmiş arama şemasında CloudAppEvents tablosu.
Otomatik izleme
Microsoft OpenTelemetry Distro, standart OpenTelemetry işlem hatlarını Microsoft tarafından seçilen enstrümantasyonla birleştirir. Distro, dile ve yapılandırmaya bağlı olarak uygulama telemetrisi, altyapı telemetrisi ve aracı veya üretken AI telemetrisi toplayabilir.
| Kategori | Neleri kapsar |
|---|---|
| Sinyal ardışık düzenleri | İzler, ölçümler ve günlükler. |
| Kaynak algılama | Desteklenen hizmet, ana bilgisayar, bulut ve Azure çalışma zamanı bağlamı. |
| Altyapı izleme | Desteklenen HTTP, ASP.NET Core, Azure SDK, veritabanı istemcileri ve günlüğe kaydetme çerçeveleri. |
| Üretici AI araçlandırması | OpenAI, Azure OpenAI, Semantik Çekirdek, LangChain, OpenAI Aracılar SDK'sı ve desteklendiği durumlarda Agent Framework. |
| El ile aracı kapsamları | Desteklenen aracı çağırma, araç yürütme, çıkarım ve çıkış telemetrisi. |
| Dışa aktarıcılar ve işlemciler | Azure İzleyici, Microsoft Agent 365, OTLP, konsol çıkışı, span işlemcileri, günlük işlemcileri ve metrik okuyucuları. |
İzleme kapsamı
| Language | Yaygın uygulama araçlandırması | Yaygın aracı ve üretici AI araçlandırması |
|---|---|---|
| Python | OpenTelemetry kaynakları, işlemcileri, okuyucuları, günlüğe kaydetme, metrikler ve izler. | Semantik Çekirdek, OpenAI Aracılar SDK'sı, Agent Framework, LangChain, Microsoft Agent 365 bagajı ve Microsoft Agent 365 kapsamları. |
| Node.js | HTTP, Azure SDK, Azure İşlevleri, MongoDB, MySQL, PostgreSQL, Redis, Bunyan ve Winston. | OpenAI Aracılar SDK'sı, LangChain, Microsoft Agent 365 bagajı ve Microsoft Agent 365 kapsamları. |
| .NET | ASP.NET Core, HttpClient, SQL Client, Azure SDK, kaynak algılaması, metrikler ve günlükler. | Semantik Çekirdek, OpenAI ve Azure OpenAI, Agent Framework, Microsoft Agent 365 bagajı ve Microsoft Agent 365 kapsamları. |
Otomatik araçlandırma, desteklenen kitaplık ve çerçeveler tarafından yayılan telemetri sinyallerini dinler. Manuel enstrümantasyon, bir uygulamanın aracı'ya özel işlemleri (çağırma, araç yürütme, çıkarım veya zaman uyumsuz çıktı gibi) tanımlaması gerektiğinde kullanılır.
Uygulamanız yerleşik enstrümantasyonlar tarafından kapsanmayan telemetri yayınladığında özel OpenTelemetry kaynakları, ölçerler, işlemciler veya okuyucular ekleyin.
Önemli
Otomatik enstrümantasyon yalnızca standart OpenTelemetry özniteliklerini doldurur. Agent 365'in gerektirdiği tüm öznitelikleri içermez. Microsoft'a özel öznitelikleri BaggageBuilder aracılığıyla eklemeniz gerekir. Hangi özniteliklerin gerekli olduğunu görmek için bkz. Depo doğrulama öznitelikleri.
Yerleşik enstrümantasyon kitaplıkları
Oto-enstrümantasyon, desteklenen çerçeveler tarafından yayımlanan telemetriyi dinler ve Distro'nun OpenTelemetry ardışık düzeni aracılığıyla iletir. Aracı senaryoları için, enstrümante edilmiş çerçeve alanları oluşturmadan önce kiracı kimliği ve aracı kimliği gibi bagaj ayarlayın.
| Çerçeve | Python | Node.js | .NET |
|---|---|---|---|
| Semantik Çekirdek | Desteklenir | Desteklenmez | Desteklenir |
| OpenAI ve OpenAI Aracılar SDK'sı | Desteklenir | Desteklenir | Desteklenir |
| Agent Framework | Desteklenir | Desteklenmez | Desteklenir |
| LangChain | Desteklenir | Desteklenir | Listede yok |
Semantik Çekirdek
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},
},
)
Manuel izleme
Otomatik izleme, aracı işlemini yeterli ayrıntıyla tanımlamadığında manuel izleme kullanın. Manuel kapsamlar, bir uygulamanın yaygın aracı etkinliklerini diller arasında tutarlı bir şekilde tanımlamasına olanak tanır.
| Kapsam | Kullanılacağı senaryo |
|---|---|
InvokeAgentScope |
Bir aracı çağrısının başlangıcı ve tamamlanması. |
ExecuteToolScope |
Bir aracı tarafından yapılan araç çağrısı. |
InferenceScope |
Bir AI modeli çıkarım işlemi. |
OutputScope |
Kaynak kapsamı zaten tamamlandıktan sonra kaydedilmesi gereken çıktı. |
İlgili telemetri verilerinin ilişkilendirilebilmesi için, bir istekteki kapsamlar arasında aynı istek ve aracı kimlik değerlerini yeniden kullanın.
Aracı çağırma
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."])
Araç yürütme
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)
Çıkarım
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"])
Çıktı
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
Ürün belgeleri, bu kapsamlar için ürüne özgü doğrulama gereksinimlerini tanımlamalıdır.
Yerel doğrulama
Yerel doğrulama, uygulamanın ürüne özgü bir hedef doğrulanmadan önce telemetri ürettiğini onaylar. İzlemeler, ölçümler ve günlüklerin oluşturulduğunu kontrol etmek için konsol çıkışını veya yerel bir OTLP uç noktasını kullanın.
Yerel OTLP uç noktası ile doğrulama yapın
Dağıtımı, telemetriyi yerel bir toplayıcıya veya başka bir OTLP uyumlu uç noktaya göndermek için yapılandırın.
export OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4317
from microsoft.opentelemetry import use_microsoft_opentelemetry
use_microsoft_opentelemetry()
Yerel çıkış ile doğrulama yapın
Telemetriyi uzak bir hedefe göndermeden önce enstrümantasyonu doğrulamak istediğinizde yerel çıkışı kullanın.
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.
HTTP istekleri, OpenAI veya Azure OpenAI çağrıları, aracı çağırma kapsamları, araç yürütme kapsamları veya çıkarım kapsamları gibi beklenen kaynaklardan yayınlar için yerel çıkışı gözden geçirin. Hedefe özgü doğrulama, söz konusu hedef için ürün belgesinde yer almalıdır.
Kimlik doğrulamayı el ile ayarlama
Agent 365 dışarı aktarıcısını kullandığınızda, bir kimlik doğrulama belirteci sağlamak için bir mekanizma sunmalısınız. Belirteç çözümleyicisi, etkin bagaj bağlamından aracı kimliği ve kiracı kimliği kullanarak dışarı aktarma toplu işinin başına ait olarak çalışır. Distro iki yaklaşımı destekler.
İpucu
Microsoft 365 Aracıları SDK'sı ile aracılar oluşturuyorsanız, OBO ve S2S belirteç edinimini hem agentic hem de non-agentic aracılar için yapılandırma hakkında adım adım yönergeler için Agent SDK için Gözlemlenebilirlik Kimlik Doğrulaması Kurulumu konusunu inceleyin.
El ile belirteç çözümleyicisi
Agent Framework ardışık düzeninin dışında belirteç edindiğinizde, Agent Framework olmayan uygulamalar oluşturduğunuzda veya hizmet-hizmet (S2S) kimlik doğrulaması (istemci kimlik bilgileri akışı) kullandığınızda el ile çözümleyici kullanın. Aracılar, örneğin Microsoft Kimlik Doğrulama Kitaplığı (MSAL) veya diğer belirteç edinme yöntemini kullanarak kendileri bir belirteç oluşturabilir, ancak belirtecin doğru gözlemlenebilirlik kapsamına sahip olduğundan emin olması gerekir (api://9b975845-388f-4429-889e-eab1ef63949c/Agent365.Observability.OtelWrite).
Not
Hizmet-hizmet (S2S) kimlik doğrulaması için bu el ile belirteç çözümleyici yaklaşımını kullanmanız gerekir. aracı belirteç önbelleği yalnızca adına (OBO) kimlik doğrulama akışlarını destekler.
Aşağıdaki örnekler OBO (adına) belirteç çözümleyici desenini gösterir — aracı, aracı kimlik doğrulama işleyicisi aracılığıyla bir kullanıcı belirteci edinir ve bunu gözlemlenebilirlik kapsamlı bir belirteçle değiştirir. S2S (hizmet-hizmet) örnekleri ve OBO ve S2S kimlik doğrulamasının karşılaştırması için bkz. Aracı SDK'sı için Gözlemlenebilirlik Kimlik Doğrulama Kurulumu.
Çözümleyici eşzamanlı olmalıdır. Zaman uyumsuz etkinlik işleyicinizde (veya MSAL aracılığıyla) belirteci edinin ve çözümleyici için önbelleğe alın.
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 uygulamalarıyla aracı temelli belirteç önbelleği
Adına (OBO) kimlik doğrulaması kullanan Agent Framework uygulamaları için, özel bir TokenResolver ayarlamadığınızda, dağıtım otomatik olarak IExporterTokenCache<AgenticTokenStruct> öğesini DI aracılığıyla kaydeder. Aracınız çalışma zamanında kimlik bilgilerini sağlamak için RegisterObservability() çağırır ve önbellek belirteci edinme ve yenilemeyi işler.
Not
Bu yaklaşım yalnızca adına (OBO) kimlik doğrulama akışlarını destekler. Hizmet-hizmet (S2S) kimlik doğrulaması için el ile belirteç çözümleyicisini kullanın.
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,
)
Doğrulama özniteliklerini depolayın
Başarılı depo doğrulaması için aracınız InvokeAgentScope, InferenceScope ve ExecuteToolScope uygulamalıdır. Her kapsam, kurallı şemada bir yayılma işlemine karşılık gelir:
| SDK kapsamı | Span işlemi | Evrensel başvuru kodu |
|---|---|---|
InvokeAgentScope |
invoke_agent |
IA |
ExecuteToolScope |
execute_tool |
ET |
InferenceScope |
chat |
CH |
OutputScope |
output_messages |
OM |
Kapsamlı gerekli ve isteğe bağlı öznitelik listeleri (öznitelik semantiği, değer seçme rehberi ve Microsoft Defender gelişmiş avcılıkta sorgulanabilen öznitelikler dahil) için bkz. Agent 365 gözlemlenebilirlik öznitelik başvurusu.
Uygulanan sütunu her özniteliğin hangi kapsama ait olduğunu tanımlar ve Gerekli sütunu zorunlu (M) öznitelikleri isteğe bağlı (O) özniteliklerden ayırır.
Aracınızı gözlemlenebilirlikle test edin
Gözlemlenebilirliği uyguladıktan sonra, telemetrinin yakalandığını doğrulayın:
-
https://admin.cloud.microsoft/#/agents/allöğesine gidin. - Aracınızı seçin ve ardından Etkinlik seçeneğini seçin.
- Oturumların ve araç çağrılarının göründüğünü doğrulayın.
Örnek uygulamalar ve gelişmiş yapılandırma
Çalışan örnekler ve gelişmiş yapılandırma seçenekleri için, her bir dil için GitHub depolarına bakın:
Sorun giderme
Bu bölüm, Microsoft OpenTelemetry Distro'nun Agent 365 ile uygulanması ve kullanılması sırasında karşılaşılan yaygın sorunları açıklamaktadır.
| Sorun | Açıklama |
|---|---|
| Gözlemlenebilirlik verileri görünmüyor | Agent 365 dışarı aktarma özelliği etkinleştirilmediğinden, kurulum tamamlanmadığından veya belirteç çözümü başarısız olduğundan hiçbir telemetri görünmüyor. |
| Kiracı kimliği veya aracı kimliği eksik - yayılmalar atlandı | Gerekli kiracı veya aracı kimlik öznitelikleri eksik olduğunda yayılmalar dışarı aktarılmadan önce filtrelenir. |
| Belirteç çözümü başarısızlığı - dışarı aktarma atlandı veya yetkisiz | Belirteç çözümleyici hiçbir belirteç döndürmediğinde veya belirteç alımı sırasında hata oluştuğunda dışarı aktarma atlanır veya reddedilir. |
| HTTP 401 Yetkisiz | İstekler hizmete ulaşır ancak belirteç geçersiz, süresi dolmuş veya yanlış hedef kitle için olduğundan kimlik doğrulaması başarısız olur. |
| HTTP 403 Yasak | Eksik kiracı lisanslaması veya eksik gözlemlenebilirlik yazma izinleri nedeniyle yetkilendirme başarısız olur. |
| HTTP 403 Yasak - Aracı Kimliği uyuşmazlığı | Hizmet, istekteki aracı kimliği belirteçle yetkilendirilmiş aracı kimliğiyle eşleşmediğinde dışa aktarımı reddeder. |
| HTTP 429 veya 5xx hataları - Geçici hatalar | Geçici azaltma veya arka uç kararsızlığı dışa aktarımını kesintiye uğratır ve yeniden denemeler veya toplu işlem ayarlaması gerektirebilir. |
| Dışa aktarma zaman aşımı | Dışa aktarım işlemleri ağ gecikmeleri veya uç nokta yanıt gecikmesi nedeniyle zaman aşımı sınırlarını aşar. |
| Dışa aktarım başarılı olur ancak telemetri Defender veya Purview'da görünmez | Veri alımı başarılı olur ancak görünürlük aşağı akış önkoşulları ve şema gereksinimleri tarafından geciktirilir veya engellenir. |
İpucu
Agent 365 Sorun Giderme Kılavuzu yüksek seviyeli sorun giderme önerileri, en iyi uygulamalar ve Agent 365 geliştirme yaşam döngüsünün her aşamasına yönelik sorun giderme içeriğine bağlantılar sunar.
Gözlemlenebilirlik verileri görünmüyor
Belirtiler:
- Aracı çalışıyor
- Yönetim merkezinde telemetri yok
- Aracı etkinliğini göremiyorsunuz
Temel neden:
- Agent 365 dışa aktarımı etkin değil
- Yapılandırma hataları
- Belirteç çözümleyici sorunları
Çözümler: Sorunu çözmek için aşağıdaki adımları deneyin:
Agent 365 dışa aktarmanın etkinleştirildiğini doğrulayın
Agent 365 dışa aktarıcısını açıkça etkinleştirmeniz gerekir. Bunu ayarlamadığınızda, dağıtım bir konsol dışa aktarıcısına geri dönebilir veya hiçbir şey dışa aktarmayabilir. Bunu kodda etkinleştirin:
from microsoft.opentelemetry import use_microsoft_opentelemetry use_microsoft_opentelemetry( enable_a365=True, a365_enable_observability_exporter=True, a365_token_resolver=my_token_resolver, )Veya ortam değişkenini ayarlayın:
export ENABLE_A365_OBSERVABILITY_EXPORTER=trueNot
ENABLE_A365_OBSERVABILITY_EXPORTER, yalnızcaenable_a365=Truekodda ayarlandığında yürürlüğe giren ikincil bir geçiştir. Bunua365_enable_observability_exporterkwarg aracılığıyla da kontrol edebilirsiniz.
Belirteç çözümleyici yapılandırmasını kontrol edin
Dışa aktarıcı, her dışa aktarma isteği için bir Bearer belirteci döndüren geçerli bir belirteç çözümleyici gerektirir. Belirteç çözümleyici eksikse veya
nulldöndürürse, dışa aktarma sessizce atlanır.Konsol dışa aktarmanı etkinleştirin ve telemetryi yerel olarak kontrol edin
Telemetrinin Agent 365 uç noktasına ulaşmadan önce oluşturulduğunu doğrulamak için bir konsol dışa aktarıcısı ekleyin:
Ayrıntılı günlüğü etkinleştirin
Dışa aktarma hataları için günlükleri denetleyin
az webapp log tailkomutunu kullanarak gözlemlenebilirlik ile ilgili hataları bulmak için günlükleri arayın:az webapp log tail --name <your-app-name> --resource-group <your-resource-group> | Select-String "observability"
Kiracı kimliği veya aracı kimliği eksik — yayılımlar atlandı
Belirtiler: Sistem yayılımları sessizce bırakır ve bunları hiçbir zaman dışa aktarmaz. Bazı platformlar atlanan yayılımların sayısını veya No spans with tenant/agent identity found gibi bir iletiyi günlüğe kaydeder. Diğerleri bunları günlüğe kaydetmeden bırakır.
Çözüm:
- Dışa aktarmadan önce dağıtım, yayılımları kiracı ve aracı kimliğine göre böler. Kiracı kimliği veya aracı kimliğinden birini eksik olan yayılımlar bırakılır ve hiçbir zaman hizmete gönderilmez.
-
BaggageBuilderöğesinin yayılımlar oluşturmadan önce kiracı kimliği ve aracı kimliği ile ayarlandığından emin olun. Bu değerler OpenTelemetry bağlamı aracılığıyla yayılır ve bagaj kapsamı içinde oluşturulan tüm yayılımlara eklenir. Platform'a özgü API için bkz. Bagaj öznitelikleri. - Barındırma tümleştirme paketinden bagaj ara yazılımı veya bağlam yardımcı etkinliğini kullanıyorsanız,
TurnContextetkinliğinin aracı kimliğine sahip geçerli bir alıcısı olduğunu doğrulayın.
Belirteç çözümleme başarısızlığı — dışa aktarma atlandı veya yetkisiz
Belirtiler: Belirteç çözümleyici null döndürür veya bir hata oluşturur. Platforma bağlı olarak, dışa aktarma işlemi tamamen atlanır veya HTTP 401 hatası ile başarısız olur.
Çözüm:
- Belirteç çözümleyici gereklidir. Eksikse, dışa aktarıcı başlangıçta bir hata oluşturur. Belirteç çözümleyicisinin sağlandığını ve geçerli bir Bearer belirteci döndürdüğünü doğrulayın.
- Doğru kiracı kimliği ve aracı kimliğinin
BaggageBuilderöğesine geçildiğinden emin olun, çünkü bu değerler belirteç çözümleyicisine iletilir. - Azure'da barındırılan aracılar için, Yönetilen Kimliğin gözlemlenebilirlik kapsamı için gerekli API izinlerine sahip olduğunu doğrulayın.
- .NET uygulamaları Agent Framework barındırma paketi kullanıyorsa, belirteç değişimi bağımlılık enjeksiyonu aracılığıyla otomatik olarak işlenir. Belirteçler eksikse,
Microsoft.Agents.A365.Observability.Hostingöğesinin yüklendiğini ve kaydedildiğini doğrulayın.
HTTP 401 Yetkisiz
Belirtiler: Dışa aktarma işlemi HTTP 401 hatası ile başarısız olur. Dışa aktarıcı bu hatayı yeniden denenmez.
Çözüm:
- Belirteç izleyicisinin gözlemlenebilirlik uç noktası kapsamı ile eşleştiğini doğrulayın.
- Belirteç çözümleyicisinin temsilci kullanıcı belirteci, yanlış izleyici için bir belirteç veya süresi dolmuş bir belirteç döndürmediğini kontrol edin.
HTTP 403 Yasak
Belirtiler: Dışa aktarma işlemi HTTP 403 hatası ile başarısız olur. Dışa aktarıcı bu hatayı yeniden denenmez.
Temel neden: HTTP 403 hatası farklı nedenlere sahip olabilir. Sırasıyla aşağıdaki çözümleri kontrol edin.
Çözüm:
Eksik lisans — Kiracınızda Microsoft 365 yönetim merkezi içinde aşağıdaki lisanslardan birinin atandığını doğrulayın:
- Test - Microsoft 365 E7
- Microsoft 365 E7
- Microsoft Agent 365 Frontier
Agent365.Observability.OtelWriteizni eksik — İzni kimliğinize (Yönetilen Kimlik veya uygulama kaydı) verin. Bunu yapmazsanız telemetri dışa aktarması HTTP 403 hatasıyla başarısız olur.
İzni ver
Aşağıdaki seçeneklerden birini kullanın:
Agent 365 CLI
Bir Global Administrator hesabı gerektirir; aracı proje dizininden
a365.config.jsoniçeren dizinde çalıştırın ya da--agent-namekullanın.a365 setup permissions botAlternatif olarak, yapılandırma dosyası olmadan:
a365 setup permissions bot --agent-name "<agent-name>"Entra Portalı
Yapılandırma dosyası gerekli değildir; Blueprint uygulama kaydına Global Administrator erişimi gerektirir.
- Entra portalına>Uygulama kayıtlarına> gidin ve Blueprint uygulamanızı seçin.
-
API izinleri>İzin ekle>Kuruluşumun kullandığı API'ler> öğesine gidin ve
9b975845-388f-4429-889e-eab1ef63949carayın. -
Temsilci izinleri> seçin,
Agent365.Observability.OtelWrite> işaretleyin ve İzin ekle öğesine tıklayın. - 2–3. adımları yineleyin, bu sefer Uygulama izinleri> seçin,
Agent365.Observability.OtelWrite> işaretleyin ve İzin ekle öğesine tıklayın. - Yönetici onayı ver öğesine tıklayın ve onaylayın.
Hem
Agent365.Observability.OtelWrite(Temsilci) hem deAgent365.Observability.OtelWrite(Uygulama)Granteddurumunu göster.
HTTP 403 Yasak — Aracı Kimliği uyuşmazlığı
Belirtiler: HTTP 403 hatası ile dışa aktarma başarısız olur ve 403 Forbidden ile agent-ID-mismatch hatasına benzer bir sunucu iletisi gösterilir. Agent 365 izlemeleri uç noktalarını çağırırken bu hata oluşur.
Temel neden: Bu hata, aracı ayrıntılarını ayarlarken aracı örneği istemci kimliği yerine şema istemci kimliği kullandığınızda oluşur. Dışa aktarma URL'sindeki aracı kimliği belirteç tarafından yetkilendirilen kimlikle eşleşmediğinden, izlemeleri uç noktası isteği reddeder.
Çözüm:
- Kiracı kimliğinin Agent 365 izin verilen kiracı listesine eklenip eklenmediğini doğrulayın.
- Aracı ayrıntılarını aracı örneği istemci kimliği ile ayarlayın (şema istemci kimliği değil).
- Oluşturulan dışa aktarma URL'sini doğrulayın - logger'ınızı etkinleştirirseniz günlüğe kaydedilir. URL'deki aracı kimliğinin aracı örneği istemci kimliğiyle eşleştiğini doğrulayın.
- SDK başına tanılama günlüğünü etkinleştirmek için Yerel doğrulama bölümüne bakın.
HTTP 429 veya 5xx hataları - Geçici hatalar
Belirtiler: Dışa aktarma, 429 veya 5xx gibi geçici bir HTTP durum koduyla başarısız olur.
Çözüm:
- Bu hatalar genellikle geçicidir ve kendi kendilerine çözülür. Python ve JavaScript dağıtımları HTTP 408, 429 ve 5xx durum kodlarında otomatik olarak yeniden denemeyi yapar. .NET dağıtımı otomatik olarak yeniden denemez.
- Hatalar devam ederse, hizmet sağlığı panosunu kontrol edin.
- Toplu işler arasında zamanlanan gecikmeyi artırarak veya en fazla dışa aktarma toplu iş boyutunu artırarak dışa aktarma sıklığını azaltmayı düşünün. Python ve JavaScript için,
exporterOptionsveyaa365_*parametrelerini kullanın. Bu parametreler GitHub depoları içinde belgelenmiştir. .NET içino.Agent365.Exporter.ScheduledDelayMillisecondsveo.Agent365.Exporter.MaxExportBatchSizekullanın.
Dışa aktarma zaman aşımı
Belirtiler: Dışa aktarma denemeleri zaman aşımına uğrar.
Çözüm:
Gözlemlenebilirlik uç noktasına ağ bağlantısını kontrol edin.
Varsayılan HTTP istek zaman aşımı tüm platformlarda 30 saniyedir. Zaman aşımları sık sık meydana gelirse, dışa aktarıcı seçeneklerinizde zaman aşımı değerini artırın:
use_microsoft_opentelemetry( enable_a365=True, a365_token_resolver=my_token_resolver, # No direct timeout kwarg — set via environment variable or exporterOptions if supported )Tüm Python deposu seçeneklerinin tam listesi için bkz.
a365_*.
Dışa aktarma başarılı olur ancak telemetri, Defender veya Purview'da görünmez
Belirtiler: Günlükler başarılı bir dışa aktarmayı (HTTP 200) gösterir, ancak telemetri Microsoft Defender veya Microsoft Purview'da görünmez.
Çözüm:
- Dışa aktarılan günlükleri görüntülemeye yönelik ön koşulları karşıladığınızı doğrulayın:
- Microsoft Purview: Kuruluşunuz için denetim açık olması gerekir. Bkz. Denetimi açma veya kapatma.
-
Microsoft Defender:
CloudAppEventstablosuna erişmek için gelişmiş aramaya ilişkin konfigürasyon yapılması gerekir. Bkz. Gelişmiş arama şemasında CloudAppEvents tablosu.
- Telemetri, başarılı bir dışa aktarmanın ardından doldurulması birkaç dakika sürebilir. Daha fazla araştırma yapmadan önce bekleyin.
- Aralıkların geçerli
microsoft.tenant.idvegen_ai.agent.idöznitelikleri içerdiğini doğrulayın. Eksik kimlik öznitelikleri, HTTP dışa aktarması 200 döndürse bile aralıkların sunucu tarafında bırakılmasına neden olur.
İlgili içerik
- Agent 365 gözlemlenebilirlik kavramları - Her tümleştirme yolu için geçerli olan veri akışı, kimlik modelleri, kimlik doğrulaması, kapsamlar ve sınırlar.
- Agent 365 gözlemlenebilirlik öznitelik başvurusu - Agent 365 tarafından alınan her aralığın uyması gereken kanonik aralık özniteliği şeması.