Megosztás a következőn keresztül:


Függőségek nyomon követése az Application Insightsban

Figyelemfelhívás

Javasoljuk az Azure Monitor OpenTelemetry Distro használatát az új alkalmazások vagy ügyfelek számára az Azure Monitor Application Insights használatához. Az Azure Monitor OpenTelemetry Distro az Application Insights SDK-hoz hasonló funkciókat és élményt nyújt. Az Application Insights SDK-ból a .NET, a Node.js és a Python áttelepítési útmutatóival migrálható, de még dolgozunk néhány további funkció hozzáadásán a visszamenőleges kompatibilitás érdekében.

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 Application Insights a függőségi hívások időtartamát méri, és azt, hogy 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

A .NET-hez és a .NET Core-hoz készült Application Insights SDK-k egy telemetriai modullal DependencyTrackingTelemetryModule, amely automatikusan gyűjti a függőségeket. Ez a függőséggyű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.ApplicationInsights.DependencyCollector NuGet csomagként lesz szállítva, és automatikusan el lesz állítva, amikor a NuGet-csomagot vagy a Microsoft.ApplicationInsights.Web Microsoft.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 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 az Application Insights nem rögzíti automatikusan 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 Insights függőségi diagramjaiban, küldje el a következővel TrackDependency:


    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 DependencyTrackingTelemetryModule ApplicationInsights.config hivatkozását ASP.NET alkalmazásokhoz. Az ASP.NET Core-alkalmazások esetében kövesse az Application Insights ASP.NET Core-alkalmazásokra vonatkozó utasításait.

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

Weblapok esetén az Application Insights 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 Application Insights 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 Insights Agent PowerShell-modult a rendszerállapot-kezelő motor telepítéséhez és az IIS újraindításához.
Azure felhőalapú szolgáltatások Adjon hozzá egy indítási feladatot a StatusMonitor telepítéséhez.
Az alkalmazást buildeléskor fel kell venni az ApplicationInsights SDK-ba, 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 lapot, és válassza felül a 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, megjelenik a függőség időtartam-eloszlásának grafikonja.

Képernyőkép a Függőségek lap megnyitásáról a függőségek nevének kiválasztásához a diagramon.

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.

Képernyőkép egy minta kiválasztásáról a végpontok közötti tranzakció részleteinek megtekintéséhez.

Élő webhely profilja

A .NET Profiler http-hívásokat követ 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 oldali Hibák lapot, majd a felül található Függőségek lapot.

Képernyőkép a sikertelen kérelmek diagramjának kiválasztásáról.

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 False (Hamis) értékre van success állítva. A modul DependencyTrackingTelemetryModule nem jelent ExceptionTelemetry. A függőség teljes adatmodelljének leírását az Application Insights telemetriai adatmodellje 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.

Az Application Insights függőségkövetése tartalmazza a naplózási választörzseket?

Az Application Insights függőségkövetése nem tartalmazza a 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 Application Insights 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 formázása

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 Application Insights alkalmazástérképen és a Tranzakciódiagnosztikai nézetekben jelennek meg . Ha a függőség nem szerepel a listán, 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 a következő 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 Application Insights 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