Aracılığıyla paylaş


Microsoft Dataverse için telemetri olayları

Veri akışı şu anda Dataverse API'si gelen çağrıları, Dataverse eklenti yürütme çağrıları ve Dataverse SDK çağrıları ile ilgili performans verileri sunmaktadır. Eklenti ve Dataverse SDK işlemlerindeki hatalar için de veri sağlar.

Dataverse API gelen çağrıları

Bunlar Dataverse API'ına yapılan çağrılardır. Bunlar Birleşik Arabirim (UCI), eski web istemcisi, SDK kullanılan özel istemciler vb. olabilir. Bunlar, aşağıdaki alanlara sahip Application Insights'ın istek tablosunda bulunabilir.

  • Ad: İsteğin türü. Bunlar iki kategoriye ayrılır:

    • Web API İsteği: Birleşik Arabirim ve modern istemciler tarafından yaygın olarak kullanılan OData v4 uç noktasına yönelik bir istek. Bu istek, ikisi için ortak olan bir işleme dönüştürülür. Web API'sı, RESTful programlama modelini etkinleştirmek için kullanılan bir "sarmalayıcıdır" ancak veriler alındıktan sonra sunucu içinde her şey aynı olur. Yanıt alındığında, istek Web API'sından geldiyse JSON'a dönüştürülür.
    • Kuruluş Hizmeti İsteği: SDK istemcileri veya eski web istemcisi tarafından kullanılan Kuruluş API'si uç noktasına yönelik bir istek.
  • Süre: Sunucunun isteğe yanıt vermesi için geçen süre.

  • URL: Çağrının yapıldığı URL.

  • Özel Boyutlar:

    • UserAgent: Application Insights Bu günlükler bir veri merkezindeki bir sunucudan gönderilirken kullanıcı aracısı alanını PC ile otomatik olarak doldurur. Application Insights, kullanıcı aracısı alanının geçersiz kılınmasına izin vermez. Bazen kullanıcı aracısı alanı doldurulamaz. Çağrının yapıldığı kullanıcı aracısı aşağıdaki sorgu kullanılarak görüntülenebilir:

      requests
      | summarize count() by tostring(customDimensions.userAgent)
      

      Application Insights CustomDimensions UserAgent.

  • Operation_Name: Uçtan uca işlem görünümü gibi görünümlerde görüntülenecek işlemin okunabilir adı.

Dataverse eklenti yürütme günlükleri

Belirli bir işlem için çalıştırılan özel eklentiler için bu günlükler bağımlılık tablosunda bulunur. Aşağıdaki örnek bir sorgudur:

dependencies
| where type == "Plugin"
| take 100

Application Insights Dataverse eklentisi yürütme günlükleri.

  • Ad/Hedef: Yürütülmekte olan eklentinin tam tür adı.
  • Süre: Eklentinin yürütülmesi için geçen süre.
  • Özel Boyutlar:
    • Derinlik: Çağrı yığınındaki yürütmenin geçerli Derinliği .
    • EntityName: Eklenti tarafından işlem yapılan varlığın adı.
    • IsolationType: Eklentinin korumalı alanda yürütülüp yürütülmediğini belirten bir değer :
      • 1: Hiçbiri
      • 2: Korumalı Alan
      • 3: Harici
    • PluginName: Eklentinin kullanıcı dostu adı.
    • PluginType: Yürütülmekte olan eklenti türünün adı.
    • PluginVersion: Yayımlanan eklentinin sürümü. Buradaki amaç, sürüm güncelleştirmeleriyle ilgili sorunları gidermek için bu bilgileri kullanabilmektir.
    • Sahne Alanı: Aşağıdaki değerlerle eşleşir:
      • PreValidation = 10
      • PreOperation = 20
      • PreOperationBeforeExternalPlugins = 15
      • PreOperationAfterExternalPlugins = 25
      • MainOperation = 30
      • PostOperationBeforeExternalPlugins = 35
      • PostOperationAfterExternalPlugins = 45
      • PostOperation = 40
      • PostOperationDeprecated = 50
    • StepName: SDK İleti İşleme Adımı'nın adı. Bu, genellikle Eklenti Kayıt aracı tarafından PluginName, PluginType ve işlemin adı (örneğin ErrorMessageTest.ThrowException: Hesabın oluşturulması) hakkındaki bilgiler kullanılarak oluşturulur.

Eklenti kodunuz içinde telemetri

Eklenti kodunuzda neler olduğunu anlamak için, kullanarak Microsoft eklentinizin içinden özel telemetri ekleyebilirsiniz. Xrm.Sdk.PluginTelemetry.ILogger Telemetri verilerini doğrudan kaynağınıza yazmak için eklenti kodunuzdaki arabirim . Application Insights Daha fazla bilgi: Telemetriyi ILogger (Önizleme) kullanarak Application Insights kaynağınıza yazma

Dataverse SDK günlükleri

Bunlar, gelen bir isteğin parçası olarak tetiklenen SDK işlemlerine ait günlüklerdir. Bunlar Application Insights'daki bağımlılık tablosuna kaydedilir, çünkü yürütülecek isteğin bağımlılıkları olarak izlenirler. Bunlar, SDK ile başlayan tür adıyla tanımlanır. Aşağıdaki örnek bir sorgudur:

dependencies
| where type startswith "SDK"
| take 10

Application Insights sorgu SDK'si.

  • Tür: Tetiklenen SDK isteğinin türü. Örnekler, Retrieve, RetrieveMultiple, FetchXmlToQueryExpression ve WhoAmI'dir.
  • Ad/Hedef: Bu, SDK işlemi tarafından hedeflenen varlığın adıdır.
  • Özel Boyutlar:
    • ClientType: Çağrının geldiği istemcinin türü. Bazı olası değerler Web, UCIClient ve OutlookFull'dur.
    • EntityId: Kullanılan varlığın benzersiz tanımlayıcısı.
    • EntityName: Kullanılan varlığın adı.

Özel durumlar

Application Insights'da eklenti ve SDK işlemlerinde hata ayrıntılarını görürsünüz. Application Insights'daki özel durumlar tablosu, Hatalar panelini destekler. Bu hata ayrıntıları, uçtan uca görünümdeki eklenti ve SDK çağrılarındaki kalan olaylar ile bağıntılıdır. Tam sütun eşleşmesi olmadığında kullanılabilir tüm bilgiler mümkünse sütunlara ve customDimensions'a eklenir.

Özel durumlar tablosundaki bazı alanların doldurulmadığına dikkat edin. Bunun nedeni, bu alanların yalnızca Application Insights SDK'sinin kaynaktan alınan günlükleri yaymasında kullanılması durumunda ayarlanabilmesidir. Bu özellik platform telemetrisini toplar ve Application Insights şemasına göre Application Insights'a gönderir.

Application Insights özel durumlar tablosu.

exceptions
| take 10

Bu sorgu özel durum tablosundaki öznitelik ayrıntılarının tümünü verir.

  • problemId/type: Özel durum türü.
  • outerMessage: Özel durum iletisi.
  • customDimensions:
    • clientType: Çağrının geldiği istemcinin türü. Bazı olası değerler Web, UCIClient ve OutlookFull'dur.
    • exceptionSource: Özel durumun oluşturulduğu eklenti veya nokta.
    • entityName: Kullanılmakta olan varlığın adı.
    • pluginName: İstisnanın oluşturulduğu eklentinin adı.

Application Insights özel durumlar tablosu öznitelik ayrıntıları.

Bir kullanıcı bir hata bildirirse istisna tablosundaki ayrıntıları analamak için kullanıcı kimliği (Microsoft Entra ID kimliği) kullanabilirsiniz.

exceptions
| where user_Id == '12345678-68cd-4e73-908f-126342b36315'

Varlık kimliği ve varlık adı, bağımlılık tablosundaki customDimensions'da kullanılabilir.

dependencies
| where type == "SDK Retrieve"

Application Insights SDK alma sorgusu.

Sık Sorulan Sorular (SSS)

Aşağıdakiler, Dataverse telemetri olaylarıyla ilgili bazı sıkça sorulan sorulardır.

Eklenti yükseltmenin performans azalmasına neden olup olmadığını nasıl belirleyebilirim?

dependencies
| where ['type'] == "Plugin"
| where name startswith "[InsertYourPluginName]"
| summarize avg(duration) by name

Eklenti adı aynı zamanda özel eklentilerin sürümünü de içermelidir.

Günün saatine veya konuma göre API, bildirilen bir sorundan önce nasıl performans gösteriyordu? API bozulması, aşamalı veya ani mi?

requests
| where url == "https://<URLHere>"
| summarize avg(duration), count() by bin(timestamp, 1h)
| render timechart 

Application Insights API performansı zaman çizelgesi.

Bu grafikte, yapılan isteklerin sayısına göre bir süre boyunca API uç nokta performansını görebiliriz.

Ayrıca, Application Insights'da burada belirli bir API'nın performansına göre bir uyarı da ayarlayabilirsiniz.

Belirli zamanlarda veya belirli kullanıcıların çağrı yığınını anlamalarını sağlamak için hata veya arızaların detayına gidebilir miyim?

Hatalar paneline bakıldığında belirli bir zaman diliminde bulunan hataların genel bakışı görülür. Daha sonra, uç uca görünümü görmek için API çağrısı veya bağımlılık türüne dayalı olarak belirli bir hataya kadar daraltabilirsiniz.

Application Insights hata ayrıntıları.

Özel panolar oluşturabilir miyim?

Evet. Application Insights ile özel panolar oluşturabilirsiniz.

En yüksek kullanım sırasında eklenti kullanımı performansını (yanıt süresi) ve hata oranlarını belirleyebilir miyim?

Evet. Eklentilerinizin nasıl performans gösterdiğini anlamak için aşağıdaki örnek sorguya bakın.

dependencies
| where ['type'] == "Plugin"
| where name == "[Plugin name here]"
| summarize avg(duration) by bin(timestamp, 1h)
| render timechart

Eklenti kullanımı performansı.

Bu telemetride azaltma söz konusu olacak mı?

Evet. Temel 429 hata ayrıntıları şu anda sunulmaktadır.

Yürütme yollarını anlayabilir miyim? Eklentinin yaptığı çağrılar eklentiyi yavaşlatıyor mu?

Evet. Herhangi bir istek için yürütülen tüm iletileri ve eklentileri görüntüleyebilirsiniz.

Tüm ileti ve eklenti yürütmesinin süresi günlüğe kaydedilir. Herhangi bir eklenti daha fazla zaman alıyorsa bu eklentiyi belirleyebilirsiniz. Eklenti, Dataverse'e geri arama işlemi yapıyorsa bu aramanın süresi günlüğe kaydedilir. Eklentiler hakkında daha fazla bilgi gelecekte dağıtılacak şekilde planlanmıştır.

Eklenti tarafından yapılan herhangi bir giden çağrı otomatik olarak bağımlılık biçiminde kaydedilir.

Uçtan uca işlem.

Belirli bir isteğin telemetrisini görüntüleyebilir miyim?

Dataverse tüm isteklere verdiği üst bilgi yanıtında x-ms-service-dequestId'yi verir. Bu requestId'yi kullanarak telemetrinin tümü için sorgulama yapabilirsiniz.

union *
| where operation_ParentId contains <requestId>