Sledování závislostí v Application Insights

Poznámka:

Následující dokumentace spoléhá na klasické rozhraní API Application Insights. Dlouhodobým plánem application Insights je shromažďovat data pomocí OpenTelemetry. Další informace najdete v tématu Povolení OpenTelemetry služby Azure Monitor pro aplikace .NET, Node.js, Python a Java a náš plán OpenTelemetry. Pokyny k migraci jsou k dispozici pro .NET, Node.js a Python.

Závislost je komponenta, která je volána vaší aplikací. Obvykle se jedná o službu, která se volá pomocí protokolu HTTP, databáze nebo systému souborů. Application Insights měří dobu trvání volání závislostí a to, jestli selhává nebo ne, spolu s informacemi, jako je název závislosti. Můžete prozkoumat konkrétní volání závislostí a korelovat je s požadavky a výjimkami.

Automaticky sledované závislosti

Sady Application Insights SDK pro .NET a .NET Core se dodávají s modulem DependencyTrackingTelemetryModuletelemetrie, který automaticky shromažďuje závislosti. Tato kolekce závislostí se povolí automaticky pro aplikace ASP.NET a ASP.NET Core , když je nakonfigurovaná podle propojených oficiálních dokumentů. DependencyTrackingTelemetryModule Modul se dodává jako balíček NuGet Microsoft.ApplicationInsights.DependencyCollector . Při použití Microsoft.ApplicationInsights.Web balíčku NuGet nebo Microsoft.ApplicationInsights.AspNetCore balíčku NuGet se automaticky přenese.

DependencyTrackingTelemetryModule V současné době sleduje následující závislosti automaticky:

Závislosti Detaily
HTTP/HTTPS Místní nebo vzdálené volání HTTP/HTTPS.
Volání WCF Automaticky sledováno pouze v případě, že se používají vazby založené na protokolu HTTP.
SQL Hovory s .SqlClient Úplný dotaz SQL pro zachytávání dotazů SQL najdete v části Pokročilé sledování SQL.
Azure Blob Storage, Table Storage nebo Queue Storage Volání provedená pomocí klienta služby Azure Storage
Klientská sada SDK služby Azure Event Hubs Použijte nejnovější balíček: https://nuget.org/packages/Azure.Messaging.EventHubs.
Klientská sada SDK služby Azure Service Bus Použijte nejnovější balíček: https://nuget.org/packages/Azure.Messaging.ServiceBus.
Azure Cosmos DB Sleduje se automaticky, pokud se používá HTTP/HTTPS. Trasování operací v přímém režimu s protokolem TCP se také zachytí automaticky pomocí balíčku >preview = 3.33.0-preview. Další podrobnosti najdete v dokumentaci.

Pokud chybí závislost nebo používáte jinou sadu SDK, ujistěte se, že je v seznamu automatickycollectovaných závislostí. Pokud závislost není automatickycollectována, můžete ji sledovat ručně pomocí volání sledování závislostí.

Nastavení automatického sledování závislostí v konzolových aplikacích

Pokud chcete automaticky sledovat závislosti z konzolových aplikací .NET, nainstalujte balíček Microsoft.ApplicationInsights.DependencyCollector NuGet a inicializujte DependencyTrackingTelemetryModule:

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

Pro konzolové aplikace TelemetryConfiguration.Active .NET Core je zastaralé. Přečtěte si pokyny v dokumentaci ke službě Worker a dokumentaci k monitorování ASP.NET Core.

Jak funguje automatické monitorování závislostí?

Závislosti se automaticky shromažďují pomocí některé z následujících technik:

  • Použití instrumentace bajtového kódu kolem výběrových metod. Použijte InstrumentationEngine rozšíření Web Apps služby StatusMonitor Aplikace Azure nebo z Aplikace Azure.
  • EventSource Zpětných volání.
  • DiagnosticSource zpětné volání v nejnovějších sadách .NET nebo .NET Core SDK.

Ruční sledování závislostí

Následující příklady závislostí, které se neshromažďuje automaticky, vyžadují ruční sledování:

  • Azure Cosmos DB se sleduje automaticky jenom v případě, že se používá HTTP/HTTPS . Režim TCP se automaticky nezachytí službou Application Insights pro verze sady SDK starší než 2.22.0-Beta1.
  • Redis

U těchto závislostí, které sada SDK automaticky neshromažďuje, je můžete sledovat ručně pomocí rozhraní API trackDependency, které používá standardní moduly autocollection.

Příklad

Pokud kód sestavíte sestavením, které jste sami nenapsali, můžete všechna volání do něj zavolat. Tento scénář vám umožní zjistit, jaký příspěvek přispívá k době odezvy.

Pokud chcete, aby se tato data zobrazovala v grafech závislostí v Application Insights, odešlete je pomocí 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);
    }

Alternativně TelemetryClient poskytuje rozšiřující metody StartOperation a StopOperation, které lze použít k ručnímu sledování závislostí, jak je znázorněno ve sledování odchozích závislostí.

Pokud chcete vypnout standardní modul sledování závislostí, odeberte odkaz na DependencyTrackingTelemetryModule applicationInsights.config pro ASP.NET aplikace. V případě aplikací ASP.NET Core postupujte podle pokynů v Application Insights pro aplikace ASP.NET Core.

Sledování volání AJAX z webových stránek

U webových stránek sada Application Insights JavaScript SDK automaticky shromažďuje volání AJAX jako závislosti.

Pokročilé sledování SQL pro získání úplného dotazu SQL

Poznámka:

Azure Functions vyžaduje samostatná nastavení pro povolení shromažďování textu SQL. Další informace najdete v tématu Povolení shromažďování dotazů SQL.

Pro volání SQL se název serveru a databáze vždy shromažďuje a ukládá jako název shromážděného DependencyTelemetry. Další pole označované jako data může obsahovat celý text dotazu SQL.

U aplikací ASP.NET Core se teď vyžaduje, abyste se přihlásili ke kolekci SQL Text pomocí:

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

Pro ASP.NET aplikace se shromažďuje úplný text dotazu SQL pomocí instrumentace bajtů, který vyžaduje použití instrumentačního modulu nebo pomocí balíčku NuGet Microsoft.Data.SqlClient namísto knihovny System.Data.SqlClient. Kroky specifické pro platformu pro povolení úplné kolekce dotazů SQL jsou popsány v následující tabulce.

Platforma Kroky potřebné k získání úplného dotazu SQL
Web Apps ve službě Aplikace Azure V ovládacích panelech webové aplikace otevřete podokno Application Insights a povolte příkazy SQL v .NET.
Server SLUŽBY IIS (Virtuální počítače Azure, místní atd.) Buď použijte balíček NuGet Microsoft.Data.SqlClient , nebo použijte modul PowerShellu agenta Application Insights k instalaci instrumentačního modulu a restartování služby IIS.
Azure Cloud Services Přidejte spouštěcí úlohu pro instalaci StatusMonitor.
Aplikace by se měla připojit k sadě ApplicationInsights SDK v době sestavení instalací balíčků NuGet pro aplikace ASP.NET nebo ASP.NET Core.
IIS Express Použijte balíček NuGet Microsoft.Data.SqlClient.
Webové úlohy ve službě Aplikace Azure Service Použijte balíček NuGet Microsoft.Data.SqlClient.

Kromě předchozích kroků specifických pro platformu musíte také explicitně vyjádřit výslovný souhlas s povolením shromažďování příkazů SQL úpravou souboru následujícím kódem applicationInsights.config :

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

V předchozích případech je správný způsob ověření, že instrumentační modul je správně nainstalován, ověřením, že je shromážděná DependencyTelemetry rddpverze sady SDK . Použití nebo rddf označení závislostí se shromažďuje prostřednictvím DiagnosticSource zpětného rdddsd volání nebo EventSource zpětné volání, takže se celý dotaz SQL nezachytí.

Kde najít data závislostí

  • Mapa aplikací vizualizuje závislosti mezi vaší aplikací a sousedními komponentami.
  • Diagnostika transakcí zobrazuje sjednocená data serveru, která korelují.
  • Karta Prohlížeče zobrazuje volání AJAX z prohlížečů uživatelů.
  • Vyberte z pomalých nebo neúspěšných požadavků a zkontrolujte jejich volání závislostí.
  • Analýzy se dají použít k dotazování dat závislostí.

Diagnostika pomalých požadavků

Každá událost požadavku je přidružená k voláním závislostí, výjimkám a dalším událostem sledovaným při zpracování požadavku. Takže pokud některé požadavky dělají špatně, můžete zjistit, jestli je to kvůli pomalým odpovědím z závislosti.

Trasování z požadavků na závislosti

Na levé straně vyberte kartu Výkon a v horní části vyberte kartu Závislosti.

V části Overall (Celkový) vyberte název závislosti. Po výběru závislosti se napravo zobrazí graf rozdělení doby trvání dané závislosti.

Snímek obrazovky znázorňující otevřenou kartu Závislosti pro výběr názvu závislosti v grafu

Vyberte tlačítko Ukázky v pravém dolním rohu. Pak vyberte ukázku, abyste viděli podrobnosti o celé transakci.

Snímek obrazovky znázorňující výběr ukázky pro zobrazení podrobností o celé transakci

Profilování živého webu

Profiler Application Insights sleduje volání HTTP na váš živý web a zobrazuje funkce v kódu, které trvaly nejdelší dobu.

Neúspěšné požadavky

Neúspěšné požadavky můžou být přidružené také k neúspěšným voláním závislostí.

Vyberte kartu Selhání na levé straně a pak v horní části vyberte kartu Závislosti.

Snímek obrazovky znázorňující výběr grafu neúspěšných požadavků

Tady uvidíte počet neúspěšných závislostí. Pokud chcete získat další informace o neúspěšném výskytu, vyberte v dolní tabulce název závislosti. Výběrem tlačítka Závislosti v pravém dolním rohu zobrazíte podrobnosti o celé transakci.

Protokoly (Analytics)

Závislosti můžete sledovat v dotazovacím jazyce Kusto. Zde je uvedeno několik příkladů.

  • Vyhledejte všechna neúspěšná volání závislostí:

    
        dependencies | where success != "True" | take 10
    
  • Vyhledání volání AJAX:

    
        dependencies | where client_Type == "Browser" | take 10
    
  • Vyhledání volání závislostí přidružených k žádostem:

    
        dependencies
        | where timestamp > ago(1d) and  client_Type != "Browser"
        | join (requests | where timestamp > ago(1d))
          on operation_Id  
    
  • Vyhledání volání AJAX přidružených k zobrazením stránek:

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

Nejčastější dotazy

Tato část obsahuje odpovědi na běžné otázky.

Jak sestava automatického kolektoru závislostí selhala volání závislostí?

Neúspěšná volání závislostí budou mít success pole nastavené na False. Modul DependencyTrackingTelemetryModule nehlásí ExceptionTelemetry. Úplný datový model závislostí je popsaný v datovém modelu telemetrie Application Insights.

Návody vypočítat latenci příjmu dat pro telemetrii závislostí?

Použijte tento kód:

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

Návody určit čas zahájení volání závislosti?

V zobrazení timestamp dotazu Log Analytics představuje okamžik, kdy bylo zahájeno volání TrackDependency(), ke kterému dojde okamžitě po přijetí odpovědi volání závislostí. K výpočtu času zahájení volání závislosti byste vzali timestamp a odečetli zaznamenané duration volání závislosti.

Zahrnuje sledování závislostí ve službě Application Insights tělo odezvy protokolování?

Sledování závislostí ve službě Application Insights nezahrnuje těla odezvy protokolování, protože by vygenerovala příliš mnoho telemetrie pro většinu aplikací.

Opensourcová sada SDK

Stejně jako každá sada Application Insights SDK je modul kolekce závislostí také opensourcový. Přečtěte si kód nebo nahlaste problémy v oficiálním úložišti GitHubu a přispějte k ho.

Automatické shromažďování závislostí

Níže je aktuálně podporovaný seznam volání závislostí, která se automaticky detekují jako závislosti, aniž by bylo nutné provádět další úpravy kódu vaší aplikace. Tyto závislosti jsou vizualizovány v zobrazení mapy aplikace Application Insights a diagnostiky transakcí. Pokud vaše závislost není v seznamu níže, můžete ji stále sledovat ručně pomocí volání sledování závislostí.

.NET

Architektury aplikací Verze
webové formuláře ASP.NET 4.5+
ASP.NET MVC 4+
ASP.NET WebAPI 4.5+
ASP.NET Core 1.1+
Komunikační knihovny
HttpClient 4.5 nebo novější, .NET Core 1.1 nebo novější
SqlClient .NET Core 1.0+, NuGet 4.3.0
Microsoft.Data.SqlClient 1.1.0 – nejnovější stabilní verze (Viz poznámka níže.)
Klientská sada SDK služby Event Hubs 1.1.0
Klientská sada SDK služby ServiceBus 7.0.0
Klienti úložiště
ADO.NET 4.5+

Poznámka:

Existuje známý problém se staršími verzemi Microsoft.Data.SqlClient. Pokud chcete tento problém zmírnit, doporučujeme použít verzi 1.1.0 nebo novější. Entity Framework Core nemusí nutně dodávat nejnovější stabilní verzi Microsoft.Data.SqlClient, proto doporučujeme potvrdit, že používáte alespoň 1.1.0, abyste se tomuto problému vyhnuli.

Java

Podívejte se na seznam automaticky shromažďovaných závislostí v Javě application Insights.

Node.js

Tady se udržuje seznam nejnovějších aktuálně podporovaných modulů.

JavaScript

Komunikační knihovny Verze
XMLHttpRequest Všechny

Další kroky