Azure 애플리케이션 Insights에서 종속성 추적Dependency Tracking in Azure Application Insights

종속성 은 응용 프로그램에서 호출 하는 외부 구성 요소입니다.A dependency is an external component that is called by your application. 일반적으로 HTTP, 데이터베이스 또는 파일 시스템을 사용하여 호출되는 서비스입니다.It's typically a service called using HTTP, or a database, or a file system. Application Insights 은 종속성 호출의 시간 (실패 여부와 상관 없이 종속성의 이름과 같은 추가 정보)을 측정 합니다.Application Insights measures the duration of dependency calls, whether its failing or not, along with additional information like name of dependency and so on. 특정 종속성 호출을 조사 하 고 요청 및 예외와의 상관 관계를 지정할 수 있습니다.You can investigate specific dependency calls, and correlate them to requests and exceptions.

자동으로 추적 되는 종속성Automatically tracked dependencies

.NET 및 .NET Core 용 Application Insights Sdk는 종속성 DependencyTrackingTelemetryModule 을 자동으로 수집 하는 원격 분석 모듈인과 함께 제공 됩니다.Application Insights SDKs for .NET and .NET Core ships with DependencyTrackingTelemetryModule which is a Telemetry Module that automatically collects dependencies. 이 종속성 컬렉션은 연결 된 공식 문서에 따라 구성 된 경우 ASP.NETASP.NET Core 응용 프로그램에 대해 자동으로 사용 하도록 설정 됩니다. DependencyTrackingTelemetryModule NuGet 패키지로 제공 되며 nuget 패키지 Microsoft.ApplicationInsights.Web 또는 Microsoft.ApplicationInsights.AspNetCore중 하나를 사용 하는 경우 자동으로 가져옵니다.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는 현재 다음 종속성을 자동으로 추적 합니다.DependencyTrackingTelemetryModule currently tracks the following dependencies automatically:

종속성Dependencies 세부 정보Details
Http/HttpsHttp/Https 로컬 또는 원격 http/https 호출Local or Remote http/https calls
WCF 호출WCF calls Http 기반 바인딩을 사용 하는 경우에만 자동으로 추적 됩니다.Only tracked automatically if Http-based bindings are used.
SQLSQL 를 사용 하 SqlClient여 호출 합니다.Calls made with SqlClient. SQL 쿼리 캡처는 항목을 참조 하세요.See this for capturing SQL query.
Azure storage (Blob, 테이블, 큐)Azure storage (Blob, Table, Queue ) Azure Storage 클라이언트를 사용 하 여 호출 합니다.Calls made with Azure Storage Client.
EventHub 클라이언트 SDKEventHub Client SDK 1.1.0 버전 이상.Version 1.1.0 and above.
ServiceBus 클라이언트 SDKServiceBus Client SDK 3.0.0 버전 이상.Version 3.0.0 and above.
Azure Cosmos DBAzure Cosmos DB HTTP/HTTPS를 사용 하는 경우에만 자동으로 추적 됩니다.Only tracked automatically if HTTP/HTTPS is used. Application Insights에서는 TCP 모드가 캡처되지 않습니다.TCP mode won't be captured by Application Insights.

종속성이 누락 되었거나 다른 SDK를 사용 하는 경우 자동 수집 된 종속성목록에 있는지 확인 합니다.If you're missing a dependency, or using a different SDK make sure it's in the list of auto-collected dependencies. 종속성이 자동으로 수집 되지 않으면 track 종속성 호출을 사용 하 여 수동으로 추적할 수 있습니다.If the dependency isn't auto-collected, you can still track it manually with a track dependency call.

콘솔 앱에서 자동 종속성 추적 설정Setup automatic dependency tracking in Console Apps

.NET 콘솔 앱에서 종속성을 자동으로 추적 하려면 Nuget 패키지 Microsoft.ApplicationInsights.DependencyCollector를 설치 하 고 DependencyTrackingTelemetryModule 다음과 같이 초기화 합니다.To automatically track dependencies from .NET console apps, install the Nuget package Microsoft.ApplicationInsights.DependencyCollector, and initialize DependencyTrackingTelemetryModule as follows:

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

.NET Core 콘솔 앱의 경우 TelemetryConfiguration가 사용 되지 않습니다.For .NET Core console apps TelemetryConfiguration.Active is obsolete. Worker 서비스 설명서ASP.NET Core 모니터링 설명서 의 지침을 참조 하세요.Refer to the guidance in the worker service documentation and the ASP.NET Core monitoring documentation

자동 종속성 모니터링은 어떻게 작동 하나요?How automatic dependency monitoring works?

종속성은 다음 방법 중 하나를 사용 하 여 자동으로 수집 됩니다.Dependencies are automatically collected by using one of the following techniques:

  • Select 메서드 주위의 바이트 코드 계측을 사용 합니다.Using byte code instrumentation around select methods. (InstrumentationEngine에서 StatusMonitor 또는 Azure 웹 앱 확장)(InstrumentationEngine either from StatusMonitor or Azure Web App Extension)
  • EventSource 콜백EventSource callbacks
  • DiagnosticSource 콜백 (최신 .NET/.NET Core Sdk)DiagnosticSource callbacks (in the latest .NET/.NET Core SDKs)

수동으로 종속성 추적Manually tracking dependencies

다음은 자동으로 수집 되지 않으므로 수동 추적이 필요한 종속성의 몇 가지 예입니다.The following are some examples of dependencies, which aren't automatically collected, and hence require manual tracking.

  • Azure Cosmos DB는 HTTP/HTTPS를 사용하는 경우에만 자동으로 추적됩니다.Azure Cosmos DB is tracked automatically only if HTTP/HTTPS is used. Application Insights에서는 TCP 모드가 캡처되지 않습니다.TCP mode won't be captured by Application Insights.
  • RedisRedis

SDK에서 자동으로 수집 되지 않는 종속성의 경우 표준 자동 컬렉션 모듈에서 사용 되는 지 수 종속성 API 를 사용 하 여 수동으로 추적할 수 있습니다.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.

예를 들면, 사용자가 직접 작성하지 않은 어셈블리 코드를 작성하는 경우, 응답 시간 기여도를 알아보기 위해 모든 호출의 시간을 잴 수 있습니다.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. Application Insights에서 종속성 차트에 표시되는 이 데이터를 가지려면, 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);
    }

또는는 TelemetryClient 다음과 같이 종속성 StartOperationStopOperation 수동으로 추적 하는 데 사용할 수 있는 확장 메서드를 here 제공 합니다.Alternatively, TelemetryClient provides extension methods StartOperation and StopOperation which can be used to manually track dependencies, as shown here

표준 종속성 추적 모듈을 해제 하려면 ASP.NET 응용 프로그램에 대 한 DependencyTrackingTelemetryModule의 참조를 제거 합니다.If you want to switch off the standard dependency tracking module, remove the reference to DependencyTrackingTelemetryModule in ApplicationInsights.config for ASP.NET applications. ASP.NET Core 응용 프로그램의 경우 여기에 있는 지침을 따르세요.For ASP.NET Core applications, follow instructions here.

웹 페이지에서 AJAX 호출 추적Tracking AJAX calls from Web Pages

웹 페이지의 경우 JavaScript SDK Application Insights AJAX 호출을 종속성으로 자동 수집 합니다.For web pages, Application Insights JavaScript SDK automatically collects AJAX calls as dependencies.

전체 SQL 쿼리를 가져오기 위한 고급 SQL 추적Advanced SQL tracking to get full SQL Query

SQL 호출의 경우 서버 및 데이터베이스의 이름은 항상 수집 되 고 수집 DependencyTelemetry된의 이름으로 저장 됩니다.For SQL calls, the name of the server and database is always collected and stored as name of the collected DependencyTelemetry. 전체 SQL 쿼리 텍스트를 포함할 수 있는 ' data ' 라는 추가 필드가 있습니다.There's an additional field called 'data', which can contain the full SQL query text.

ASP.NET Core 응용 프로그램의 경우 전체 SQL 쿼리를 가져오는 데 필요한 추가 단계가 없습니다.For ASP.NET Core applications, there's no additional step required to get the full SQL Query.

ASP.NET 응용 프로그램의 경우 전체 SQL 쿼리가 바이트 코드 계측의 도움을 사용 하 여 수집 됩니다. 여기에는 계측 엔진이 나 System.web 라이브러리 대신 Microsoft. sqlclient NuGet 패키지를 사용 해야 합니다.For ASP.NET applications, full SQL query is collected with the help of byte code instrumentation, which requires instrumentation engine or by using the Microsoft.Data.SqlClient NuGet package instead of the System.Data.SqlClient library. 아래에 설명 된 대로 추가 플랫폼별 단계가 필요 합니다.Additional platform-specific steps, as described below, are required.

플랫폼Platform 전체 SQL 쿼리를 가져오는 데 필요한 단계Step(s) Needed to get full SQL Query
Azure 웹앱Azure Web App 웹 앱 제어판에서 Application Insights 블레이드를 열고 .NET에서 SQL 명령을 사용 하도록 설정 합니다.In your web app control panel, open the Application Insights blade and enable SQL Commands under .NET
IIS 서버 (Azure VM, 온-프레미스 등)IIS Server (Azure VM, on-prem, and so on.) Microsoft. SqlClient NuGet 패키지를 사용 하거나 상태 모니터 PowerShell 모듈을 사용 하 여 계측 엔진을 설치 하 고 IIS를 다시 시작 합니다.Either use the Microsoft.Data.SqlClient NuGet package or use the Status Monitor PowerShell Module to install the Instrumentation Engine and restart IIS.
Azure 클라우드 서비스Azure Cloud Service StatusMonitor를 설치 하기 위한 시작 작업 추가Add startup task to install StatusMonitor
응용 프로그램은 ASP.NET 또는 ASP.NET Core 응용 프로그램 에 대 한 NuGet 패키지를 설치 하 여 빌드 시에 applicationinsights SDK로 등록 됩니다.Your 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 Microsoft. SqlClient NuGet 패키지를 사용 합니다.Use the Microsoft.Data.SqlClient NuGet package

위의 경우, 계측 엔진의 유효성을 검사 하는 올바른 방법은 수집 DependencyTelemetry 된의 SDK 버전이 ' rddp ' 인지 확인 하는 것입니다.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 ' 또는 ' rddf '은 종속성이 DiagnosticSource 또는 EventSource 콜백을 통해 수집 되므로 전체 SQL 쿼리가 캡처되지 않습니다.'rdddsd' or 'rddf' indicates dependencies are collected via DiagnosticSource or EventSource callbacks, and hence full SQL query won't be captured.

종속성 데이터를 찾을 수 있는 위치Where to find dependency data

  • 애플리케이션 맵은 앱과 인접 구성 요소 간의 종속성을 시각화합니다.Application Map visualizes dependencies between your app and neighboring components.
  • 트랜잭션 진단은 상관 관계가 지정 된 통합 서버 데이터를 표시 합니다.Transaction Diagnostics shows unified, correlated server data.
  • 브라우저 탭 은 사용자 브라우저의 AJAX 호출을 보여 줍니다.Browsers tab shows AJAX calls from your users' browsers.
  • 느리거나 실패한 요청 클릭: 해당 종속성 호출을 확인합니다.Click through from slow or failed requests to check their dependency calls.
  • 분석: 종속성 데이터를 쿼리하는 데 사용됩니다.Analytics can be used to query dependency data.

느린 요청 진단Diagnose slow requests

각 요청 이벤트는 응용 프로그램에서 요청을 처리 하는 동안 추적 되는 종속성 호출, 예외 및 기타 이벤트와 연결 됩니다.Each request event is associated with the dependency calls, exceptions, and other events that are tracked while your app is processing the request. 따라서 일부 요청이 잘못 수행 되는 경우 종속성의 응답 속도가 느려지는 지 여부를 확인할 수 있습니다.So if some requests are doing badly, you can find out whether it's because of slow responses from a dependency.

요청에서 종속성까지 추적Tracing from requests to dependencies

성능 탭을 열고 작업 옆의 위쪽에 있는 종속성 탭으로 이동 합니다.Open the Performance tab and navigate to the Dependencies tab at the top next to operations.

전체 아래에서 종속성 이름을 클릭 합니다.Click on a Dependency Name under overall. 종속성을 선택한 후에는 해당 종속성의 기간 분포 그래프가 오른쪽에 표시 됩니다.After you select a dependency a graph of that dependency's distribution of durations will show up on the right.

성능 탭의 위쪽에서 종속성 탭을 클릭 하 고 차트에서 종속성 이름을 클릭 합니다.

오른쪽 아래에 있는 파란색 샘플 단추를 클릭 하 고 샘플에서 종단 간 트랜잭션 세부 정보를 확인 합니다.Click on the blue Samples button on the bottom right and then on a sample to see the end-to-end transaction details.

샘플을 클릭 하 여 종단 간 트랜잭션 세부 정보를 확인 합니다.

라이브 사이트 프로파일링Profile your live site

시간에 따른 위치를 알 수 없나요?No idea where the time goes? Application Insights 프로파일러 는 라이브 사이트에 대 한 HTTP 호출을 추적 하 고 가장 긴 시간을 걸린 코드의 함수를 보여 줍니다.The Application Insights profiler traces HTTP calls to your live site and shows you the functions in your code that took the longest time.

실패한 요청Failed requests

실패한 요청은 종속성에 대한 실패한 호출과 연관이 있을 수도 있습니다.Failed requests might also be associated with failed calls to dependencies.

왼쪽의 오류 탭으로 이동한 다음 위쪽의 종속성 탭을 클릭할 수 있습니다.We can go to the Failures tab on the left and then click on the dependencies tab at the top.

실패한 요청 차트 클릭

여기에서 실패 한 종속성 수를 확인할 수 있습니다.Here you will be able to see the failed dependency count. 실패 한 발생에 대 한 자세한 정보를 보려면 아래쪽 테이블에서 종속성 이름을 클릭 합니다.To get more details about a failed occurrence trying clicking on a dependency name in the bottom table. 오른쪽 아래에 있는 파란색 종속성 단추를 클릭 하 여 종단 간 트랜잭션 세부 정보를 가져올 수 있습니다.You can click on the blue Dependencies button at the bottom right to get the end-to-end transaction details.

로그(분석)Logs (Analytics)

Kusto 쿼리 언어에서 종속성을 추적할 수 있습니다.You can track dependencies in the Kusto query language. 다음은 몇 가지 예제입니다.Here are some examples.

  • 실패한 종속성 호출을 찾습니다.Find any failed dependency calls:

    dependencies | where success != "True" | take 10
  • AJAX 호출을 찾습니다.Find AJAX calls:

    dependencies | where client_Type == "Browser" | take 10
  • 요청과 연관된 종속성 호출을 찾습니다.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 호출을 찾습니다.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

질문과 대답Frequently asked questions

자동 종속성 수집기에서 종속성에 대 한 실패 한 호출을 보고 하는 방법How does automatic dependency collector report failed calls to dependencies?

  • 실패 한 종속성 호출의 ' 성공 ' 필드는 False로 설정 됩니다.Failed dependency calls will have 'success' field set to False. DependencyTrackingTelemetryModule보고 ExceptionTelemetry하지 않습니다.DependencyTrackingTelemetryModule does not report ExceptionTelemetry. 종속성에 대 한 전체 데이터 모델은 여기에 설명 되어 있습니다.The full data model for dependency is described here.

오픈 소스 SDKOpen-source SDK

모든 Application Insights SDK와 마찬가지로 종속성 컬렉션 모듈도 오픈 소스 이기도 합니다.Like every Application Insights SDK, dependency collection module is also open-source. 공식 GitHub리포지토리에서 코드를 읽고 참여 하거나 문제를 보고 합니다.Read and contribute to the code, or report issues at the official GitHub repo.

다음 단계Next steps