Függőségek nyomon követése az Alkalmazás Elemzések

Feljegyzés

Az alábbi dokumentáció az Alkalmazás Elemzések klasszikus API-ra támaszkodik. Az Alkalmazás Elemzések hosszú távú terve az Adatok gyűjtése Az OpenTelemetria használatával. További információ: Az Azure Monitor OpenTelemetria engedélyezése .NET-, Node.js-, Python- és Java-alkalmazásokhoz.

A függőség egy olyan összetevő, amelyet az alkalmazás hív meg. Ez általában http, adatbázis vagy fájlrendszer használatával hívott szolgáltatás. Az alkalmazás Elemzések méri a függőségi hívások időtartamát, és azt, hogy az sikertelen-e vagy sem, valamint az olyan információkat, mint a függőség neve. Megvizsgálhat bizonyos függőségi hívásokat, és összevetheti őket a kérésekkel és kivételekkel.

Automatikusan nyomon követett függőségek

Az alkalmazás Elemzések .NET-hez és .NET Core-hoz készült SDK-kkalDependencyTrackingTelemetryModule, amely egy telemetriai modul, amely automatikusan gyűjti a függőségeket. Ez a függőségi gyűjtemény automatikusan engedélyezve van ASP.NET és ASP.NET Core-alkalmazásokhoz, ha a csatolt hivatalos dokumentumoknak megfelelően van konfigurálva. A modul DependencyTrackingTelemetryModule a Microsoft.Application Elemzések néven érhető el. DependencyCollector NuGet-csomag. Ez automatikusan megtörténik, ha a NuGet-csomagot vagy a Microsoft.ApplicationInsights.WebMicrosoft.ApplicationInsights.AspNetCore NuGet-csomagot használja.

DependencyTrackingTelemetryModule Jelenleg a következő függőségeket követi nyomon automatikusan:

Függőségek Részletek
HTTP/HTTPS Helyi vagy távoli HTTP/HTTPS-hívások.
WCF-hívások Csak HTTP-alapú kötések használata esetén lesz automatikusan nyomon követve.
SQL A .-val SqlClientindított hívások. Az SQL-lekérdezések rögzítésére szolgáló teljes SQL-lekérdezés lekéréséhez tekintse meg a Speciális SQL-nyomkövetés című szakaszt.
Azure Blob Storage, Table Storage vagy Queue Storage Az Azure Storage-ügyféllel indított hívások.
Azure Event Hubs ügyféloldali SDK Használja a legújabb csomagot: https://nuget.org/packages/Azure.Messaging.EventHubs.
Azure Service Bus-ügyfél SDK Használja a legújabb csomagot: https://nuget.org/packages/Azure.Messaging.ServiceBus.
Azure Cosmos DB HTTP/HTTPS használata esetén a rendszer automatikusan nyomon követi. A TCP-vel történő közvetlen módban végzett műveletek nyomkövetése is automatikusan rögzítésre kerül az előnézeti csomag >= 3.33.0-előnézet használatával. További részletekért tekintse meg a dokumentációt.

Ha hiányzik egy függőség, vagy egy másik SDK-t használ, győződjön meg arról, hogy szerepel az automatikusancolt függőségek listájában. Ha a függőség nincs automatikusan felvéve, manuálisan is nyomon követheti a függőségi hívás nyomon követésével.

Automatikus függőségkövetés beállítása konzolalkalmazásokban

A .NET-konzolalkalmazásoktól származó függőségek automatikus nyomon követéséhez telepítse a NuGet-csomagot Microsoft.ApplicationInsights.DependencyCollector , és inicializálja a következőt DependencyTrackingTelemetryModule:

    DependencyTrackingTelemetryModule depModule = new DependencyTrackingTelemetryModule();
    depModule.Initialize(TelemetryConfiguration.Active);

A .NET Core-konzolalkalmazások TelemetryConfiguration.Active elavultak. Tekintse meg a Worker szolgáltatás dokumentációjában és a ASP.NET Core monitorozási dokumentációjában található útmutatást.

Hogyan működik az automatikus függőségfigyelés?

A függőségek automatikusan összegyűjthetők az alábbi technikák egyikével:

  • Bájtkód-rendszerezés használata a kiválasztott metódusok köré. Használjon InstrumentationEngine Azure-alkalmazás Service Web Apps-bővítménytStatusMonitor.
  • EventSource Visszahívások.
  • DiagnosticSource visszahívások a legújabb .NET- vagy .NET Core SDK-kban.

Függőségek manuális nyomon követése

A következő, nem automatikusan gyűjtött függőségekre vonatkozó példák manuális nyomkövetést igényelnek:

  • Az Azure Cosmos DB csak HTTP/HTTPS használata esetén lesz automatikusan nyomon követve. A TCP-módot nem rögzíti automatikusan az Alkalmazás Elemzések a korábbi 2.22.0-Beta1SDK-verziókhoz.
  • Redis

Az SDK által nem automatikusan gyűjtött függőségek esetében manuálisan is nyomon követheti őket a standard autocollection-modulok által használt TrackDependency API használatával.

Példa

Ha olyan szerelvénysel hozza létre a kódot, amelyet nem saját maga írt, időtúllépést okozhat az összes hívás. Ez a forgatókönyv lehetővé teszi, hogy megtudja, milyen mértékben járul hozzá a válaszidőkhöz.

Ha meg szeretné jeleníteni ezeket az adatokat az Application Elemzések függőségi diagramjaiban, küldje el a következővelTrackDependency:


    var startTime = DateTime.UtcNow;
    var timer = System.Diagnostics.Stopwatch.StartNew();
    try
    {
        // making dependency call
        success = dependency.Call();
    }
    finally
    {
        timer.Stop();
        telemetryClient.TrackDependency("myDependencyType", "myDependencyCall", "myDependencyData",  startTime, timer.Elapsed, success);
    }

Alternatív megoldásként megadja a bővítménymetelyeket, TelemetryClient és StopOperationa kimenő függőségek nyomon követésében látható függőségek manuális nyomon követésére használható.StartOperation

Ha ki szeretné kapcsolni a standard függőségkövetési modult, távolítsa el az DependencyTrackingTelemetryModuleApplication Elemzések.config hivatkozását ASP.NET alkalmazásokhoz. Az ASP.NET Core-alkalmazások esetében kövesse az Alkalmazás Elemzések ASP.NET Core-alkalmazásokra vonatkozó utasításait.

AJAX-hívások nyomon követése weblapokról

Weblapok esetén az alkalmazás Elemzések JavaScript SDK automatikusan függőségként gyűjti az AJAX-hívásokat.

Speciális SQL-nyomkövetés a teljes SQL-lekérdezés lekéréséhez

Feljegyzés

Az Azure Functions külön beállításokat igényel az SQL-szöveggyűjtemény engedélyezéséhez. További információ: SQL-lekérdezésgyűjtemény engedélyezése.

SQL-hívások esetén a rendszer mindig a kiszolgáló és az adatbázis nevét gyűjti és tárolja az összegyűjtött DependencyTelemetrynévként. Egy másik mező, az úgynevezett adatok a teljes SQL-lekérdezésszöveget tartalmazhatják.

Az ASP.NET Core-alkalmazások esetében most a következő használatával kell csatlakoznia az SQL Text-gyűjteményhez:

services.ConfigureTelemetryModule<DependencyTrackingTelemetryModule>((module, o) => { module. EnableSqlCommandTextInstrumentation = true; });

ASP.NET alkalmazások esetén a rendszer a teljes SQL-lekérdezési szöveget bájtkód-rendszerezés segítségével gyűjti össze, amelyhez a rendszerállapot-kezelő motor vagy a System.Data.SqlClient-kódtár helyett a Microsoft.Data.SqlClient NuGet-csomag használata szükséges. A teljes SQL Query-gyűjtemény engedélyezésének platformspecifikus lépéseit az alábbi táblázat ismerteti.

Platform A teljes SQL-lekérdezés lekéréséhez szükséges lépések
Web Apps a Azure-alkalmazás Szolgáltatásban A webalkalmazás vezérlőpultján nyissa meg az Alkalmazás Elemzések panelt, és engedélyezze az SQL-parancsokat a .NET alatt.
IIS-kiszolgáló (Azure Virtual Machines, helyszíni stb.) Használja a Microsoft.Data.SqlClient NuGet-csomagot, vagy használja az Application Elemzések Agent PowerShell-modult a rendszerállapot-kezelő motor telepítéséhez és az IIS újraindításához.
Azure Cloud Services Adjon hozzá egy indítási feladatot a StatusMonitor telepítéséhez.
Az alkalmazást az alkalmazásba kell előkészíteni Elemzések az SDK-ba buildeléskor, ha nuGet-csomagokat telepít ASP.NET vagy ASP.NET Core-alkalmazásokhoz.
IIS Express Használja a Microsoft.Data.SqlClient NuGet-csomagot.
WebJobs a Azure-alkalmazás szolgáltatásban Használja a Microsoft.Data.SqlClient NuGet-csomagot.

Az előző platformspecifikus lépések mellett explicit módon engedélyeznie kell az SQL-parancsgyűjtést is a applicationInsights.config fájl alábbi kóddal történő módosításával:

<TelemetryModules>
  <Add Type="Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.AI.DependencyCollector">
    <EnableSqlCommandTextInstrumentation>true</EnableSqlCommandTextInstrumentation>
  </Add>

Az előző esetekben a rendszerállapot-kezelő motor megfelelő telepítésének helyes ellenőrzésének megfelelő módja annak ellenőrzése, hogy az összegyűjtött DependencyTelemetry SDK-verzió az rddp. rdddsd A függőségek használatát vagy rddf jelzését a rendszer visszahívásokkal DiagnosticSource vagy EventSource visszahívásokkal gyűjti össze, így a teljes SQL-lekérdezés nem lesz rögzítve.

A függőségi adatok megkeresésének helye

  • Az Alkalmazástérkép az alkalmazás és a szomszédos összetevők közötti függőségeket jeleníti meg.
  • A tranzakciódiagnosztika egységes, korrelált kiszolgálóadatokat jelenít meg.
  • A Böngészők lapon a felhasználók böngészőiből érkező AJAX-hívások láthatók.
  • Válasszon a lassú vagy sikertelen kérelmek közül a függőségi hívások ellenőrzéséhez.
  • Az elemzés a függőségi adatok lekérdezésére használható.

Lassú kérések diagnosztizálása

Minden kérésesemény a kérelem feldolgozása során nyomon követett függőségi hívásokhoz, kivételekhez és egyéb eseményekhez van társítva. Ha tehát egyes kérések rosszul haladnak, megtudhatja, hogy a függőségből érkező lassú válaszok miatt van-e.

Nyomkövetés kérésekből függőségekbe

Válassza a bal oldali Teljesítmény fület, majd a felül található Függőségek lapot.

Válasszon ki egy függőségnevet az Általános csoportban. Miután kiválasztott egy függőséget, a jobb oldalon megjelenik a függőség időtartam-eloszlásának grafikonja.

Screenshot that shows the Dependencies tab open to select a Dependency Name in the chart.

Válassza a minták gombot a jobb alsó sarokban. Ezután válasszon ki egy mintát a végpontok közötti tranzakció részleteinek megtekintéséhez.

Screenshot that shows selecting a sample to see the end-to-end transaction details.

Élő webhely profilja

Az alkalmazás Elemzések profilkészítő http-hívásokat követ nyomon az élő webhelyre, és megjeleníti a kód azon funkcióit, amelyek a leghosszabb ideig tartottak.

Sikertelen kérelmek

A sikertelen kérések függőségek sikertelen hívásaival is társíthatók.

Válassza a bal oldalon a Hibák lapot, majd a felül található Függőségek lapot.

Screenshot that shows selecting the failed requests chart.

Itt láthatja a sikertelen függőségek számát. Ha további információt szeretne kapni egy sikertelen előfordulásról, válassza ki a függőség nevét az alsó táblázatban. A végpontok közötti tranzakció részleteinek megtekintéséhez kattintson a jobb alsó sarokban található Függőségek gombra.

Naplók (elemzések)

A függőségeket a Kusto lekérdezési nyelvén követheti nyomon. Íme néhány példa.

  • Sikertelen függőségi hívások keresése:

    
        dependencies | where success != "True" | take 10
    
  • AJAX-hívások keresése:

    
        dependencies | where client_Type == "Browser" | take 10
    
  • A kérésekhez társított függőségi hívások megkeresése:

    
        dependencies
        | where timestamp > ago(1d) and  client_Type != "Browser"
        | join (requests | where timestamp > ago(1d))
          on operation_Id  
    
  • Keresse meg a lapmegtekintésekkel társított AJAX-hívásokat:

    
        dependencies
        | where timestamp > ago(1d) and  client_Type == "Browser"
        | join (browserTimings | where timestamp > ago(1d))
          on operation_Id
    

Gyakori kérdések

Ez a szakasz választ ad a gyakori kérdésekre.

Hogyan meghiúsult az automatikus függőséggyűjtő jelentés a függőségekre irányuló hívásokról?

A sikertelen függőségi hívások mezője success False (Hamis) értékű lesz. A modul DependencyTrackingTelemetryModule nem jelent ExceptionTelemetry. A függőség teljes adatmodelljének leírását az Alkalmazás Elemzések telemetriai adatmodell ismerteti.

Hogyan a függőségi telemetriai adatok betöltési késésének kiszámítása?

Használja a következő kódot:

dependencies
| extend E2EIngestionLatency = ingestion_time() - timestamp 
| extend TimeIngested = ingestion_time()

Hogyan határozza meg a függőségi hívás indításának időpontját?

A Log Analytics lekérdezési nézetben timestamp a TrackDependency() hívás indításának pillanatát jelöli, amely közvetlenül a függőségi hívás válaszának fogadása után következik be. A függőségi hívás indításának időpontjának kiszámításához vegye figyelembe timestamp és vonja ki a függőségi hívás rögzített duration értékét.

A függőségek nyomon követése az alkalmazásbeli Elemzések tartalmazza a naplózási választörzseket?

Az alkalmazás Elemzések függőségkövetése nem tartalmaz naplózási választörzseket, mivel túl sok telemetriát hozna létre a legtöbb alkalmazás számára.

Nyílt forráskódú SDK

Mint minden alkalmazás Elemzések SDK, a függőséggyűjtési modul is nyílt forráskód. Olvassa el és járuljon hozzá a kód- vagy jelentésproblémákhoz a hivatalos GitHub-adattárban.

Függőségek automatikus összegyűjtése

Az alábbiakban látható azoknak a függőségi hívásoknak a jelenleg támogatott listája, amelyeket a rendszer automatikusan függőségként észlel anélkül, hogy további módosítást kellene igényelnie az alkalmazás kódjához. Ezek a függőségek az alkalmazástérkép és a tranzakciódiagnosztikai nézetekben jelennek meg az Alkalmazás Elemzések. Ha a függőség nem szerepel az alábbi listában, akkor is nyomon követheti manuálisan a függőségi hívás nyomon követésével.

.NET

Alkalmazás-keretrendszerek Verziók
ASP.NET webűrek 4.5+
ASP.NET, MVC 4+
ASP.NET WebAPI 4.5+
ASP.NET Core 1.1+
Kommunikációs kódtárak
HttpClient 4.5+, .NET Core 1.1+
SqlClient .NET Core 1.0+, NuGet 4.3.0
Microsoft.Data.SqlClient 1.1.0 – legújabb stabil kiadás. (Lásd az alábbi megjegyzést.)
Event Hubs-ügyfél SDK 1.1.0
ServiceBus-ügyfél SDK 7.0.0
Storage-ügyfelek
ADO.NET 4.5+

Feljegyzés

A Microsoft.Data.SqlClient régebbi verzióival kapcsolatban ismert probléma merült fel. Javasoljuk, hogy a probléma megoldásához használja az 1.1.0-s vagy újabb verziót. Az Entity Framework Core nem feltétlenül tartalmazza a Microsoft.Data.SqlClient legújabb stabil kiadását, ezért javasoljuk, hogy a probléma elkerülése érdekében erősítse meg, hogy legalább 1.1.0-s verziót használ.

Java

Tekintse meg az alkalmazás Elemzések Java automatikusancolt függőségeinek listáját.

Node.js

A legújabb, jelenleg támogatott modulok listája itt található.

JavaScript

Kommunikációs kódtárak Verziók
XMLHttpRequest Mind

Következő lépések