Jaa


Microsoft Dataversen telemetriatapahtumat

Tietovirta sisältää tällä hetkellä suorituskykytietoja, jotka liittyvät Dataverse-ohjelmointirajapinnan saapuviin kutsuihin, Dataverse-laajennuksen suorituskutsuihin ja Dataverse SDK -kutsuihin. Siinä on tietoja myös laajennuksen ja Dataverse SDK -toimintojen virheistä.

Dataverse-ohjelmointirajapinnan saapuvat kutsut

Dataverse-ohjelmointirajapintaan tehdään seuraavia kutsuja. Niitä voidaan tehdä esimerkiksi Unified Interfacesta (UCI), vanhasta verkkosovelluksesta ja SDK:ta käyttävistä mukautetuista asiakasohjelmista. Kutsut sijaitsevat Application Insightsin pyynnöt-taulukossa, jossa on seuraavat kentät:

  • Nimi: Pyynnön tyyppi. Pyyntöluokkia on kaksi:

    • Verkko-ohjelmointirajapintapyyntö: Pyyntö siihen OData v4 -päätepisteeseen, jota Unified Interface ja modernit asiakasohjelmat yleisesti käyttävät. Tämä pyyntö muunnetaan kummallekin yhteiseksi toiminnoksi. Verkkoasiakasohjelma on paketoija, jonka avulla RESTful-ohjelmointimalli on mahdollinen. Tietojen vastaanottamisen jälkeen, kaikki on kuitenkin samanlaista palvelimessa. Kun vastaus palautetaan, se muunnetaan JSON-muotoon, jos pyyntö tuli verkko-ohjelmointirajapinnasta.
    • Organisaation palvelupyyntö: pyyntö SDK-asiakasohjelmien tai vanhan verkkoasiakasohjelman käyttämään organisaation API-päätepisteeseen.
  • Kesto: aika, joka palvelimelta kului pyyntöön vastaamiseen.

  • Url: URL-osoite, johon kutsu lähetettiin.

  • CustomDimensions:

    • UserAgent: Application Insights täyttää automaattisesti käyttäjäagenttikentän arvoksi PC, sillä nämä lokit lähetetään palvelinkeskuksen palvelimesta. Application Insights ei salli käyttäjäagenttikentän korvaamista. Joskus käyttäjäagenttikenttää ei ole käytettävissä täyttämistä varten. Käyttäjäagenttia, josta kutsu lähetettiin, voidaan tarkastella seuraavalla kyselyllä:

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

      Application Insights CustomDimensions UserAgent

  • Operation_Name: näkymissä näytettävän toiminnon luettavissa oleva nimi, kuten kokonaisvaltainen tapahtumanäkymä.

Dataverse-laajennuksen suorituslokit

Nämä tietyssä toiminnossa suoritettavien mukautettujen laajennusten sijaitsevat riippuvuus-taulukossa. Seuraavassa on esimerkkikysely:

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

Application Insightsin Dataverse-laajennuksen suorituslokit

  • Nimi/kohde: suoritettavan laajennuksen täydellinen tyyppinimi.
  • Kesto: aika, jonka laajennuksen suorittaminen kesti.
  • CustomDimensions:
    • Syvyys: suorituksen tämän hetkinen syvyys kutsupinossa.
    • EntityName: laajennuksen käyttämän entiteetin nimi.
    • IsolationType: Arvo, joka ilmaisee, suoritetaanko laajennus eristysympäristössä:
      • 1: Ei ole
      • 2: Eristysympäristö
      • 3: Ulkoinen
    • PluginName: laajennuksen käyttäjäystävällinen nimi.
    • PluginType: suoritettavan laajennustyypin nimi.
    • PluginVersion: Julkaistun laajennuksen versio. Tarkoituksena on, että näitä tietoja voidaan käyttää versiopäivitysten vianmäärityksessä.
    • Vaihe: Yhdistää seuraaviin arvoihin:
      • Esivahvistaminen = 10
      • Esitoiminto = 20
      • PreOperationBeforeExternalPlugins = 15
      • PreOperationAfterExternalPlugins = 25
      • MainOperation = 30
      • PostOperationBeforeExternalPlugins = 35
      • PostOperationAfterExternalPlugins = 45
      • Jälkitoiminto = 40
      • PostOperationDeprecated = 50
    • StepName: SDK-viestin käsittelyvaiheen nimi. Tämä nimi luodaan yleensä laajennusten rekisteröintityökalussa käyttämällä PluginName- ja PluginType-tietoja sekä toiminnon nimeä. Esimerkki: ErrorMessageTest.ThrowException: Tilin luonti.

Laajennuskoodin telemetria

Laajennuskoodin sisäisen toiminnan hahmottaminen on mahdollista sisällyttämällä laajennuksen sisäisen mukautetun telemetrian kirjoittamalla laajennuskoodin Microsoft.Xrm.Sdk.PluginTelemetry.ILogger-liittymässä telemetriatiedot suoraan Application Insights -resurssiin. Lisätietoja: Telemetrian kirjoittamine nApplication Insights -resurssiin ILoggerin avulla (esiversio)

Dataversen SDK-lokit

Nämä lokit koskevat saapuvan pyynnön osana käynnistyviä SDK-toimintoja. Ne kirjataan lokiin Application Insightsin riippuvuus-taulukossa, sillä niitä seurataan suoritettavan pyynnön riippuvuuksina. Niiden tunnisteena on tyyppinimi ja niiden alussa on SDK. Seuraavassa on esimerkkikysely:

dependencies
| where type startswith "SDK"
| take 10

Application Insights -kyselyn SDK

  • Tyyppi: Kyselyn käynnistämä SDK-tyyppi. Esimerkkejä: Nouda, RetrieveMultiple, FetchXmlToQueryExpression ja WhoAmI.
  • Nimi/kohde: SDK-toiminnon kohteena olevan entiteetin nimi.
  • CustomDimensions:
    • ClientType: Sen asiakasohjelman tyyppi, josta kutsu saapuu. Mahdollisia arvoja ovat esimerkiksi Web, UCIClient ja OutlookFull.
    • EntityId: käytettävän entiteetin yksilöivä tunniste.
    • EntityName: käytettävän entiteetin nimi.

Poikkeukset

Application Insightsissa on näkyvissä laajennuksia ja SDK-toimintoja koskevia virheitä. Virheet-paneeli perustuu Application Insightsin poikkeukset-taulukkoon. Näiden virheiden tiedot vastaavat laajennuksen ja SDK-kutsujen muita tapahtumia kokonaisvaltaisessa näkymässä. Kaikki käytettävissä olevat tiedot lisätään mahdollisuuksien mukaan sarakkeisiin ja customDimensions-kenttään, jos täsmällistä sarakevastinetta ei ole.

Kaikkia poikkeukset-taulukon kenttiä ei kuitenkaan ole täytetty. Tämä johtuu siitä, että kentät voidaan määrittää vain, jos lApplication Insightsin SDK lähettää lokit lähteestä. Tämä ominaisuus kerää ympäristön telemetrian ja lähettää sen sitten Application Insightsiin Application Insights -rakenteen mukaisesti.

Application Insightsin poikkeustaulukko

exceptions
| take 10

Tämä kysely palauttaa kaikki määritteen tiedot poikkeus-taulukosta.

  • problemId/type: poikkeuksen tyyppi.
  • outerMessage: poikkeuksen sanoma.
  • customDimensions:
    • clientType: Sen asiakasohjelman tyyppi, josta kutsu saapuu. Mahdollisia arvoja ovat esimerkiksi Web, UCIClient ja OutlookFull.
    • exceptionSource: laajennus tai kohta, jossa poikkeus esiintyi.
    • entityName: käytettävän entiteetin nimi.
    • pluginName: sen laajennuksen nimi, jossa poikkeus esiintyi.

Application Insightsin poikkeustaulukon määritteen tiedot

Jos käyttäjä ilmoittaa virheestä, käyttäjätunnusta (Microsoft Entra ID -tunnus) voidaan käyttää tulkitsemaan poikkeus-taulukon tietoja.

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

Entiteetin tunnus ja entiteetin nimi on käytettävissä riippuvuus-taulukon customDimensions-kentässä.

dependencies
| where type == "SDK Retrieve"

Application Insightsin SDK:n noutokysely

Usein kysyttyjä kysymyksiä

Esimerkiksi seuraavia Dataversen telemetritapahtumia koskevia kysymyksiä kysytään usein.

Miten selvitetään, heikensikö laajennuksen päivitys suorituskykyä?

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

Laajennuksen nimeen pitäisi sisältyä myös mukautettujen laajennusten versio.

Mikä oli ohjelmointirajapinnan suorituskyky ennen ilmoitettua ongelmaa tiettynä vuorokaudenaikana tai tietyssä sijainnissa? Heikentyikö ohjelmointirajapinta vähitellen vai äkillisesti?

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

Application Insightsin ohjelmointirajapinnan suorituskyvyn aikakaavio

Tässä kaaviossa voidaan tarkastella ohjelmointirajapinnan päätepisteen suorituskykyä tietyllä aikavälillä ja verrata sitä tehtyjen pyyntöjen määrään.

Lisäksi voidaan määrittää hälytys, joka perustuu tietyn ohjelmointirajapinnan suorituskykyyn Application Insightsissa.

Onko tietyn ajankohdan tai tietyn käyttäjän virheisiin mahdollista porautua, mikä auttaisi hahmottamaan kutsupinon?

Virheet-paneelin saa yleiskuvan virheistä tiettynä ajankohtana. Tämän jälkeen voidaan tarkentaa tiettyyn virheeseen ohjelmointirajapintakutsun tai riippuvuustyypin perusteella ja tarkastella kokonaisvaltaista näkymää.

Application Insightsin virheen tiedot

Onko mukautettujen koontinäyttöjen luonti mahdollista?

Kyllä. Mukautettuja koontinäyttöjä voi luoda Application Insightsin avulla.

Onko ruuhka-aikana tapahtuvan laajennuksen suorituskyvyn (vasteaika) ja virheprosentin selvittäminen mahdollista?

Kyllä. Seuraava esimerkkikysely auttaa hahmottamaan, miten laajennukset toimivat.

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

Laajennuksen käytön suorituskyky

Sisältääkö tämä telemetria käytön rajoittamisen?

Kyllä. Tällä hetkellä annetaan 429 virheen perustiedot.

Onko suorituspolkujen hahmottaminen mahdollista? Hidastavatko laajennuksen tekevät kutsut laajennusta?

Kyllä. Kaikkia kullekin pyynnölle suoritettuja sanomia ja laajennuksia voidaan tarkastella.

Kaikkien sanomien ja laajennuksen suorituksen kesto kirjataan lokiin. Jos jonkin laajennuksen suorittaminen kestää muita kauemmin, kyseinen laajennus on tunnistettavissa. Jos laajennus tekee vastakutsun Dataverseen, kyseisen kutsun kesto kirjataan lokiin. Lisää laajennusta koskevia tietoja suunnitellaan tulevaan käyttöönottoon.

Kaikki laajennuksen tekemät lähtevät kutsut kirjataan automaattisesti lokiin riippuvuutena.

Kokonaisvaltainen tapahtuma

Voiko tietyn pyynnön telemetriaa tarkastella?

Dataversen palauttamien kaikkien pyyntöjen otsikkovastauksia on x-ms-service-requestId. Tämän requestId-määritteen avulla tehdä kyselyjä kaikessa telemetriassa.

union *
| where operation_ParentId contains <requestId>