Afhankelijkheden bijhouden in Azure-toepassing InsightsDependency Tracking in Azure Application Insights

Een afhankelijkheid is een extern onderdeel dat door uw app wordt aangeroepen.A dependency is an external component that is called by your app. Het is doorgaans een service met de naam HTTP, een Data Base of een bestands systeem.It's typically a service called using HTTP, or a database, or a file system. Application Insights meet de duur van afhankelijkheids aanroepen, of het nu niet lukt, samen met aanvullende informatie, zoals de naam van de afhankelijkheid, enzovoort.Application Insights measures the duration of dependency calls, whether its failing or not, along with additional information like name of dependency and so on. U kunt specifieke afhankelijkheids aanroepen onderzoeken en deze correleren aan aanvragen en uitzonde ringen.You can investigate specific dependency calls, and correlate them to requests and exceptions.

Automatisch bijgehouden afhankelijkhedenAutomatically tracked dependencies

Application Insights Sdk's voor .NET en .NET core worden geleverd met DependencyTrackingTelemetryModule dat een telemetrie-module is die automatisch afhankelijkheden verzamelt.Application Insights SDKs for .NET and .NET Core ships with DependencyTrackingTelemetryModule which is a Telemetry Module that automatically collects dependencies. Deze afhankelijkheids verzameling wordt automatisch ingeschakeld voor ASP.net -en ASP.net core -toepassingen, wanneer deze zijn geconfigureerd volgens de gekoppelde officiële docs. DependencyTrackingTelemetryModule wordt verzonden als Dit NuGet-pakket en wordt automatisch gebracht wanneer een van de NuGet-pakketten Microsoft.ApplicationInsights.Web of Microsoft.ApplicationInsights.AspNetCore gebruikt.This dependency collection is enabled automatically for ASP.NET and ASP.NET Core applications, when configured as per the linked official docs. DependencyTrackingTelemetryModule is shipped as this NuGet package, and is brought automatically when using either of the NuGet packages Microsoft.ApplicationInsights.Web or Microsoft.ApplicationInsights.AspNetCore.

DependencyTrackingTelemetryModule worden momenteel de volgende afhankelijkheden automatisch bijgehouden:DependencyTrackingTelemetryModule currently tracks the following dependencies automatically:

AfhankelijkhedenDependencies DetailsDetails
Http/httpsHttp/Https Lokale of externe http/https-aanroepenLocal or Remote http/https calls
WCF-aanroepenWCF calls Wordt alleen automatisch bijgehouden als op http gebaseerde bindingen worden gebruikt.Only tracked automatically if Http-based bindings are used.
SQLSQL Aanroepen met SqlClient.Calls made with SqlClient. Zie dit voor het vastleggen van SQL-query's.See this for capturing SQL query.
Azure Storage (BLOB, tabel, wachtrij)Azure storage (Blob, Table, Queue ) Aanroepen van Azure Storage-client.Calls made with Azure Storage Client.
EventHub-client-SDKEventHub Client SDK Versie 1.1.0 en hoger.Version 1.1.0 and above.
ServiceBus-client-SDKServiceBus Client SDK Versie 3.0.0 en hoger.Version 3.0.0 and above.
Azure Cosmos DBAzure Cosmos DB Wordt alleen automatisch bijgehouden als HTTP/HTTPS wordt gebruikt.Only tracked automatically if HTTP/HTTPS is used. De TCP-modus wordt niet vastgelegd door Application Insights.TCP mode won't be captured by Application Insights.

Als u een afhankelijkheid mist of een andere SDK gebruikt, moet u ervoor zorgen dat deze is opgenomen in de lijst met automatisch verzamelde afhankelijkheden.If you're missing a dependency, or using a different SDK make sure it's in the list of auto-collected dependencies. Als de afhankelijkheid niet automatisch wordt verzameld, kunt u deze nog steeds hand matig bijhouden met een aanroep voor het bijhouden van afhankelijkheden.If the dependency isn't auto-collected, you can still track it manually with a track dependency call.

Automatische tracking van afhankelijkheden instellen in console-appsSetup automatic dependency tracking in Console Apps

Als u de afhankelijkheden van .NET/.NET core-console-apps automatisch wilt bijhouden, installeert u het Nuget-pakket Microsoft.ApplicationInsights.DependencyCollector en initialiseert u DependencyTrackingTelemetryModule als volgt:To automatically track dependencies from .NET/.NET Core console apps, install the Nuget package Microsoft.ApplicationInsights.DependencyCollector, and initialize DependencyTrackingTelemetryModule as follows:

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

Hoe werkt automatische afhankelijkheid controleren?How automatic dependency monitoring works?

Afhankelijkheden worden automatisch verzameld met behulp van een van de volgende technieken:Dependencies are automatically collected by using one of the following techniques:

  • Het gebruik van byte code instrumentatie rondom Select-methoden.Using byte code instrumentation around select methods. (InstrumentationEngine van StatusMonitor of extensie van Azure-web-app)(InstrumentationEngine either from StatusMonitor or Azure Web App Extension)
  • Call backs van Event sourceEventSource callbacks
  • DiagnosticSource-retour aanroepen (in de nieuwste Sdk's voor .NET/.NET core)DiagnosticSource callbacks (in the latest .NET/.NET Core SDKs)

Afhankelijkheden hand matig bijhoudenManually tracking dependencies

Hier volgen enkele voor beelden van afhankelijkheden die niet automatisch worden verzameld, en waarvoor hand matige tracering is vereist.The following are some examples of dependencies, which aren't automatically collected, and hence require manual tracking.

  • Azure Cosmos DB wordt alleen automatisch bijgehouden als http/https wordt gebruikt.Azure Cosmos DB is tracked automatically only if HTTP/HTTPS is used. De TCP-modus wordt niet vastgelegd door Application Insights.TCP mode won't be captured by Application Insights.
  • RedisRedis

Voor de afhankelijkheden die niet automatisch door SDK worden verzameld, kunt u ze hand matig bijhouden met behulp van de TrackDependency-API die wordt gebruikt door de standaard modules voor automatisch verzamelen.For those dependencies not automatically collected by SDK, you can track them manually using the TrackDependency API that is used by the standard auto collection modules.

Als u bijvoorbeeld uw code opbouwt met een assembly die u niet zelf hebt geschreven, kunt u alle aanroepen ernaar door lopen om erachter te komen welke bijdrage het biedt aan uw reactie tijden.For example, if you build your code with an assembly that you didn't write yourself, you could time all the calls to it, to find out what contribution it makes to your response times. Als u wilt dat deze gegevens worden weer gegeven in de afhankelijkheids grafieken in Application Insights, verzendt u deze met behulp van TrackDependency.To have this data displayed in the dependency charts in Application Insights, send it using 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);
    }

@No__t_0 biedt ook uitbreidings methoden StartOperation en StopOperation die kunnen worden gebruikt voor het hand matig bijhouden van afhankelijkheden, zoals hier wordt weer gegevenAlternatively, TelemetryClient provides extension methods StartOperation and StopOperation which can be used to manually track dependencies, as shown here

Als u de standaard tracerings module voor afhankelijkheden wilt uitschakelen, verwijdert u de verwijzing naar DependencyTrackingTelemetryModule in ApplicationInsights. config voor ASP.NET-toepassingen.If you want to switch off the standard dependency tracking module, remove the reference to DependencyTrackingTelemetryModule in ApplicationInsights.config for ASP.NET applications. Volg de instructies invoor ASP.net core toepassingen.For ASP.NET Core applications, follow instructions here.

AJAX-aanroepen bijhouden vanaf webpagina'sTracking AJAX calls from Web Pages

Voor webpagina's worden Application Insights java script SDK automatisch AJAX-aanroepen verzameld als afhankelijkheden.For web pages, Application Insights JavaScript SDK automatically collects AJAX calls as dependencies.

Geavanceerde SQL-tracking voor het verkrijgen van een volledige SQL-queryAdvanced SQL tracking to get full SQL Query

Voor SQL-aanroepen wordt de naam van de server en data base altijd verzameld en opgeslagen als de naam van de verzamelde DependencyTelemetry.For SQL calls, the name of the server and database is always collected and stored as name of the collected DependencyTelemetry. Er is een extra veld met de naam ' gegevens ', dat de volledige SQL-query tekst kan bevatten.There's an additional field called 'data', which can contain the full SQL query text.

Voor ASP.NET Core toepassingen is er geen extra stap vereist voor het ophalen van de volledige SQL-query.For ASP.NET Core applications, there's no additional step required to get the full SQL Query.

Voor ASP.NET-toepassingen wordt volledige SQL-query verzameld met behulp van byte code Instrumentation, waarvoor instrumentatie-engine vereist is.For ASP.NET applications, full SQL query is collected with the help of byte code instrumentation, which requires instrumentation engine. Aanvullende,, zoals hieronder beschreven, specifieke platformspecifieke stappen zijn vereist.Additional platform-specific steps, as described below, are required.

PlatformPlatform Er zijn een of meer stappen nodig om een volledige SQL-query te verkrijgenStep(s) Needed to get full SQL Query
Azure Web AppAzure Web App Open in het configuratie scherm van uw web-app de blade Application Insights en Schakel SQL-opdrachten in onder .netIn your web app control panel, open the Application Insights blade and enable SQL Commands under .NET
IIS-server (Azure VM, on-premises, enzovoort)IIS Server (Azure VM, on-prem, and so on.) Gebruik de Status Monitor Power shell-module om de instrumentatie-engine te installeren en IIS opnieuw te starten.Use the Status Monitor PowerShell Module to install the Instrumentation Engine and restart IIS.
Azure Cloud ServiceAzure Cloud Service Opstart taak toevoegen om StatusMonitor te installerenAdd startup task to install StatusMonitor
Uw app moet worden uitgevoerd tot ApplicationInsights SDK tijdens het bouwen door NuGet-pakketten te installeren voor ASP.net -of ASP.net core-toepassingenYour app should be onboarded to ApplicationInsights SDK at build time by installing NuGet packages for ASP.NET or ASP.NET Core applications
IIS ExpressIIS Express Niet ondersteundNot supported

In de bovenstaande gevallen wordt de juiste methode voor het valideren van de instrumentatie-engine correct geïnstalleerd door te controleren of de SDK-versie van verzamelde DependencyTelemetry ' rddp ' is.In the above cases, the correct way of validating that instrumentation engine is correctly installed is by validating that the SDK version of collected DependencyTelemetry is 'rddp'. ' rdddsd ' of ' rddf ' geeft aan dat afhankelijkheden worden verzameld via DiagnosticSource of event source-retour aanroepen, en daarom wordt volledige SQL-query niet vastgelegd.'rdddsd' or 'rddf' indicates dependencies are collected via DiagnosticSource or EventSource callbacks, and hence full SQL query won't be captured.

Waar u de afhankelijkheids gegevens kunt vindenWhere to find dependency data

  • Toepassings toewijzing visualeert afhankelijkheden tussen uw app en naburige onderdelen.Application Map visualizes dependencies between your app and neighboring components.
  • In transactie diagnostiek worden Unified, gecorreleerde Server gegevens weer gegeven.Transaction Diagnostics shows unified, correlated server data.
  • Op het tabblad browsers worden Ajax-aanroepen weer gegeven in de browser van uw gebruikers.Browsers tab shows AJAX calls from your users' browsers.
  • Klik van trage of mislukte aanvragen om de afhankelijkheids aanroepen te controleren.Click through from slow or failed requests to check their dependency calls.
  • Analyses kunnen worden gebruikt voor het opvragen van afhankelijkheids gegevens.Analytics can be used to query dependency data.

Langzame aanvragen diagnosticerenDiagnose slow requests

Elke aanvraag gebeurtenis is gekoppeld aan de afhankelijkheids aanroepen, uitzonde ringen en andere gebeurtenissen die worden bijgehouden terwijl uw app de aanvraag verwerkt.Each request event is associated with the dependency calls, exceptions, and other events that are tracked while your app is processing the request. Als sommige aanvragen niet goed worden uitgevoerd, kunt u nagaan of het gaat om een trage reactie van een afhankelijkheid.So if some requests are doing badly, you can find out whether it's because of slow responses from a dependency.

Traceren op basis van aanvragen naar afhankelijkhedenTracing from requests to dependencies

Open het tabblad prestaties en navigeer naar het tabblad afhankelijkheden boven naast bewerkingen.Open the Performance tab and navigate to the Dependencies tab at the top next to operations.

Klik onder algemeen op een afhankelijkheids naam .Click on a Dependency Name under overall. Nadat u een afhankelijkheid hebt geselecteerd, wordt aan de rechter kant een grafiek weer gegeven met de verdeling van de duur van de afhankelijkheid.After you select a dependency a graph of that dependency's distribution of durations will show up on the right.

Klik op het tabblad prestaties op het tabblad afhankelijkheid aan de bovenkant en vervolgens op de naam van de afhankelijkheid in de grafiek

Klik op de knop met blauwe steek proeven aan de rechter kant en klik vervolgens op een voor beeld om de end-to-end-transactie details te bekijken.Click on the blue Samples button on the bottom right and then on a sample to see the end-to-end transaction details.

Klik op een voor beeld om de details van de end-to-end-trans actie te bekijken

Uw live site profilerenProfile your live site

Geen idee waar de tijd overgaat?No idea where the time goes? De Application Insights Profiler traceert http-aanroepen naar uw live-site en toont u de functies in uw code die de langste tijd hebben geduurd.The Application Insights profiler traces HTTP calls to your live site and shows you the functions in your code that took the longest time.

Mislukte aanvragenFailed requests

Mislukte aanvragen kunnen ook worden gekoppeld aan mislukte aanroepen van afhankelijkheden.Failed requests might also be associated with failed calls to dependencies.

Ga naar het tabblad fouten aan de linkerkant en klik vervolgens op het tabblad afhankelijkheden bovenaan.We can go to the Failures tab on the left and then click on the dependencies tab at the top.

Klik op de grafiek mislukte aanvragen

Hier ziet u het aantal mislukte afhankelijkheden.Here you will be able to see the failed dependency count. Als u meer informatie wilt over een mislukt voorval, klikt u op de naam van een afhankelijkheid in de onderste tabel.To get more details about a failed occurrence trying clicking on a dependency name in the bottom table. U kunt op de knop met blauwe afhankelijkheden rechtsonder aan de rechter kant klikken om de end-to-end-transactie gegevens op te halen.You can click on the blue Dependencies button at the bottom right to get the end-to-end transaction details.

Logboeken (Analytics)Logs (Analytics)

U kunt afhankelijkheden volgen in de Kusto-query taal.You can track dependencies in the Kusto query language. Hier volgen enkele voorbeelden.Here are some examples.

  • Alle mislukte afhankelijkheids aanroepen zoeken:Find any failed dependency calls:

    dependencies | where success != "True" | take 10
  • AJAX-aanroepen zoeken:Find AJAX calls:

    dependencies | where client_Type == "Browser" | take 10
  • Afhankelijkheids aanroepen zoeken die zijn gekoppeld aan aanvragen:Find dependency calls associated with requests:

    dependencies
    | where timestamp > ago(1d) and  client_Type != "Browser"
    | join (requests | where timestamp > ago(1d))
      on operation_Id  
  • AJAX-aanroepen zoeken die zijn gekoppeld aan pagina weergaven:Find AJAX calls associated with page views:

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

Veelgestelde vragenFrequently asked questions

Hoe werkt het automatisch rapport van een afhankelijkheids verzamelaar bij het aanroepen van afhankelijkheden niet?How does automatic dependency collector report failed calls to dependencies?

  • Voor mislukte afhankelijkheids aanroepen is het veld geslaagd ingesteld op ONWAAR.Failed dependency calls will have 'success' field set to False. DependencyTrackingTelemetryModule rapporteert ExceptionTelemetry niet.DependencyTrackingTelemetryModule does not report ExceptionTelemetry. Het volledige gegevens model voor afhankelijkheid wordt hierbeschreven.The full data model for dependency is described here.

Open-Source-SDKOpen-source SDK

Net als elke Application Insights SDK is de module afhankelijkheids verzameling ook open-source.Like every Application Insights SDK, dependency collection module is also open-source. Lees en bijdragen aan de code of Meld problemen bij de officiële github-opslag plaats.Read and contribute to the code, or report issues at the official GitHub repo.

Volgende stappenNext steps