Függőségek nyomon követése az Application Insightsban
Feljegyzés
Az alábbi dokumentáció a klasszikus Application Insights API-ra támaszkodik. Az Application Insights hosszú távú terve, hogy adatokat gyűjtsön az OpenTelemetry használatával. További információ: Az Azure Monitor OpenTelemetria engedélyezése .NET-, Node.js-, Python- és Java-alkalmazásokhoz , valamint az OpenTelemetria ütemterve. A migrálási útmutató a .NET, a Node.js és a Python esetében érhető el.
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é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.ApplicationInsights.DependencyCollector NuGet csomagként lesz szállítva. Ez automatikusan megtörténik, ha 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 SqlClient indí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 az Application Insights nem rögzíti automatikusan a korábbi
2.22.0-Beta1
SDK-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 StopOperation
a 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 DependencyTelemetry
né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 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.
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.
Élő webhely profilja
Az Application Insights profilkészítője 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 oldalon a Hibák lapot, majd a felül található Függőségek lapot.
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 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 tartalmaz naplózási választörzseket, mivel túl sok telemetriát hozna létre a legtöbb alkalmazáshoz.
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 ö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 Application Insights alkalmazástérképen és a Tranzakciódiagnosztikai nézetekben jelennek meg . 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 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
- Kivételek
- Felhasználói és lapadatok
- Elérhetőség
- Egyéni függőségkövetés beállítása Java-hoz.
- Egyéni függőségkövetés beállítása az OpenCensus Pythonhoz.
- Egyéni függőségi telemetria írása
- Az Application Insights-típusok és adatmodellek adatmodellje .
- Tekintse meg az Application Insights által támogatott platformokat .