다음을 통해 공유


Application Insights를 사용하여 오류, 성능 및 트랜잭션 조사

Application Insights는 애플리케이션에서 원격 분석을 수집하여 오류를 진단하고 느린 트랜잭션을 조사하는 데 도움을 줍니다. 여기에는 다음 네 가지 필수 도구가 포함되어 있습니다.

  • 오류 - 오류, 예외 및 오류를 추적하여 빠른 문제 해결 및 향상된 안정성에 대한 명확한 인사이트를 제공합니다.

  • 성능 - 응답 시간 및 작업 수를 표시하여 애플리케이션 병목 상태를 빠르게 식별하고 해결하는 데 도움이 됩니다.

  • 트랜잭션 검색 - 사용자가 페이지 보기, 예외 및 사용자 지정 이벤트와 같은 개별 원격 분석 항목을 찾아 검사할 수 있습니다.

  • 트랜잭션 진단 - 엔드 투 엔드 트랜잭션 세부 정보에 대한 포괄적인 인사이트를 통해 구성 요소의 문제를 신속하게 식별하는 데 도움이 됩니다.

이러한 도구는 함께 웹 애플리케이션의 지속적인 상태와 효율성을 보장합니다. 이를 사용하여 사용자에게 가장 큰 영향을 줄 수 있는 문제 또는 향상된 기능을 정확히 파악할 수 있습니다.

Application Insights의 실패 보기로 이동하려면 개요 창에서 실패한 요청 그래프를 선택하거나 리소스 메뉴의 조사 범주 아래에서 실패를 선택합니다.

Application Insights에서 '실패' 보기에 도달하는 방법을 보여 주는 스크린샷

애플리케이션 맵에서 리소스를 선택하고 분류 섹션에서 오류 조사를 선택하여 오류 보기로 이동할 수 있습니다.

비고

다른 세 가지 환경을 통해 트랜잭션 진단 에 액세스할 수 있습니다. 자세한 내용은 원격 분석 조사를 참조하세요.

개요

ko-KR: 실패 보기에는 애플리케이션에 대해 수집된 모든 실패한 작업 목록을 보여 주며, 각 작업을 자세히 살펴볼 수 있는 옵션이 있습니다. 해당 빈도와 영향을 받는 사용자 수를 볼 수 있으므로 가장 큰 영향을 받는 문제에 집중할 수 있습니다.

Application Insights의 '실패' 보기를 보여 주는 스크린샷

비고

Azure Monitor OpenTelemetry Distro 또는 JavaScript SDK에서 보낸 기본 원격 분석 외에도 원격 분석(예: 사용자 지정 이벤트)을 추가하고 수정할 수 있습니다.

자세한 내용은 .NET, Java, Node.js및 Python 애플리케이션에 대한 Azure Monitor OpenTelemetry 추가 및 수정을 참조하세요.

원격 분석 필터링

기본 필터

모든 환경을 사용하면 시간 범위별로 원격 분석을 필터링할 수 있습니다. 또한 각 환경에는 고유한 기본 필터가 함께 제공됩니다.

역할 필터 메뉴에서 볼 서비스(클라우드 역할 이름) 또는 머신/컨테이너(클라우드 역할 인스턴스)를 선택할 수 있습니다. 이렇게 하면 애플리케이션의 특정 부분 내에서 문제 또는 성능 추세를 격리할 수 있습니다.

클라우드 역할 이름클라우드 역할 인스턴스를 설정하는 방법을 알아보려면 Azure Monitor OpenTelemetry 구성을 참조하세요.

필터 추가

해당 속성 값에서 이벤트를 필터링할 수 있습니다. 사용 가능한 속성은 선택한 이벤트 또는 원격 분석 유형에 따라 달라집니다. 필터를 추가하려면 다음을 수행합니다.

  1. 필터 아이콘 을 선택하여 필터를 추가합니다.

    필터 알약

  2. 왼쪽 드롭다운 목록에서 속성을 선택합니다.

  3. 가운데 드롭다운 목록에서 다음 연산자 중 하나를 선택합니다: =, !=, contains, 또는 not contains.

  4. 오른쪽 드롭다운 목록에서 필터링할 모든 속성 값을 선택합니다.

    비고

    필터 값의 오른쪽에 있는 수는 현재 필터링된 집합에서 발생한 수를 보여줍니다.

  5. 다른 필터를 추가하려면 필터 아이콘 을 다시 선택합니다.

검색 원격 분석

검색을 사용하여 특정 작업을 검색 하여 작업 목록 위의 항목을 필터링할 수 있습니다.

'검색' 필드를 보여 주는 스크린샷.

분석 데이터 사용

Application Insights에서 수집된 모든 데이터는 조사 중인 예외를 생성한 요청을 분석하는 풍부한 쿼리 언어를 제공하는 Log Analytics에 저장됩니다.

팁 (조언)

Log Analytics의 단순 모드는 로그 데이터를 분석하고 시각화하기 위한 직관적인 지점 및 클릭 인터페이스를 제공합니다.

  1. 성능, 오류 또는 트랜잭션 검색 보기에서 위쪽 탐색 모음 의 로그에서 보기를 선택하고 드롭다운 메뉴에서 쿼리를 선택합니다.

    '로그에서 보기' 단추가 강조 표시된 위쪽 작업 모음의 스크린샷

  2. 그러면 로그 보기로 이동하여 쿼리를 추가로 수정하거나 사이드바에서 다른 쿼리를 선택할 수 있습니다.

    '로그' 보기를 보여 주는 스크린샷.

원격 분석 조사

오류 또는 예외의 근본 원인을 조사하려면 종속성 및 예외 세부 정보를 포함하는 자세한 엔드 투 엔드 트랜잭션 세부 정보 보기에 대해 문제가 있는 작업을 자세히 살펴볼 수 있습니다.

  1. 상위 3개 응답 코드, 상위 3개예외 유형 및 해당 작업에 대한 상위 3개 실패 종속성을 보려면 작업을 선택합니다.

  2. 세부 분석에서 필터링된 결과 수가 표시된 버튼을 선택하여 샘플 작업 목록을 확인합니다.

  3. 샘플 작업을 선택하여 엔드 투 엔드 트랜잭션 세부 정보 보기를 엽니다.

    '실패' 보기와 '드릴링' 단추가 강조 표시된 스크린샷.

    비고

    제안된 샘플은 샘플링이 각 구성 요소에 적용되었어도 모든 구성 요소에서 관련된 텔레메트리 데이터를 포함합니다.

클라이언트 쪽 성능 및 오류 분석

Application Insights를 사용하여 웹 페이지를 계측하는 경우 페이지 보기, 브라우저 작업 및 종속성에 대한 가시성을 얻을 수 있습니다. 이 브라우저 데이터를 수집하려면 웹 페이지에 스크립트를 추가해야 합니다.

  1. 스크립트를 추가한 후 성능 또는 실패 보기에서 브라우저 토글을 선택하여 페이지 보기 및 관련 성능 메트릭에 액세스할 수 있습니다 .

    위쪽 작업 표시줄 아래에서 '서버/브라우저' 토글을 강조 표시하는 스크린샷.

    이 보기는 브라우저의 관점에서 애플리케이션의 다양한 원격 분석에 대한 시각적 요약을 제공합니다.

  2. 브라우저 작업의 경우 엔드 투 엔드 트랜잭션 세부 정보 보기에는 브라우저 유형 및 해당 위치를 포함하여 페이지를 요청하는 클라이언트의 페이지 보기 속성 이 표시됩니다. 이 정보는 특정 유형의 클라이언트와 관련된 성능 문제가 있는지 여부를 확인하는 데 도움이 될 수 있습니다.

    '페이지 보기 속성' 섹션이 강조 표시된 '엔드 투 엔드 트랜잭션 세부 정보' 보기를 보여 주는 스크린샷.

비고

서버 성능을 위해 수집된 데이터와 마찬가지로 Application Insights는 로그를 사용하여 모든 클라이언트 데이터를 심층 분석에 사용할 수 있도록 합니다.

트랜잭션 진단 환경

엔드 투 엔드 트랜잭션 세부 정보 보기라고도 하는 트랜잭션 진단 환경은 해당 기간 및 응답 코드가 있는 모든 이벤트를 나열하는 트랜잭션의 Gantt 차트를 보여 줍니다.

이 진단 환경은 모든 Application Insights 모니터링 구성 요소에서 서버 쪽 원격 분석의 상관 관계를 단일 보기로 자동으로 연결하고 여러 리소스를 지원합니다. Application Insights는 기본 관계를 감지하여 트랜잭션 속도 저하 또는 실패가 발생하는 애플리케이션 구성 요소, 종속성 또는 예외를 쉽게 진단할 수 있도록 합니다.

특정 이벤트를 선택하면 기본 명령 또는 호출 스택과 같은 추가 정보를 포함하여 해당 속성이 표시됩니다.

이 보기에는 네 가지 주요 부분이 있습니다.

결과 목록이 강조 표시된 트랜잭션 보기를 보여 주는 스크린샷.

이 접을 수 있는 창에는 필터 조건을 충족하는 다른 결과가 표시됩니다. 임의 결과를 선택하여 이전 세 개 섹션의 각 세부 정보를 업데이트합니다. 샘플링이 모든 샘플에 적용되는 경우에도 모든 구성 요소에서 사용 가능한 세부 정보가 있을 가능성이 가장 큰 샘플을 찾으려 노력합니다. 이 샘플은 제안 사항으로 표시됩니다.

.NET 프로파일러 및 스냅샷 디버거

.NET Profiler 또는 스냅샷 디버거 는 성능 및 실패 문제에 대한 코드 수준 진단을 지원합니다. 이 환경을 사용하면 단일 선택 항목으로 모든 구성 요소에서 .NET Profiler 추적 또는 스냅샷을 볼 수 있습니다.

Profiler 추적

.NET 프로파일러를 사용하면 작업에 대해 실행된 실제 코드와 각 단계에 필요한 시간을 보여 줌으로써 코드 수준 진단을 더 자세히 파악할 수 있습니다. Profiler가 주기적으로 실행되므로 일부 작업에는 추적이 없을 수 있습니다. 시간이 지남에 따라 더 많은 작업에 기록이 있어야 합니다.

  1. .NET Profiler를 시작하려면 성능 보기에서 작업을 선택한 다음 Profiler 추적으로 이동합니다.

    '프로파일러 추적' 단추가 강조 표시된 '성능' 보기의 스크린샷

    또는 엔드 투 엔드 트랜잭션 세부 정보 보기에서 수행할 수 있습니다.

    '프로파일러 추적' 단추가 강조 표시된 '엔드 투 엔드 트랜잭션 세부 정보' 보기를 보여 주는 스크린샷.

  2. 추적은 전체 작업 중에 근본 원인을 진단할 수 있도록 각 작업에 대한 개별 이벤트를 보여 줍니다. 기간이 가장 긴 상위 예제 중 하나를 선택합니다.

  3. 이벤트 해석에 대한 설명서의 성능 팁 (이 예제의 CPU 시간)에서 링크를 선택합니다.

  4. 추가 분석을 위해 추적 다운로드 를 선택하여 추적을 다운로드합니다. PerfView를 사용하여 이 데이터를 볼 수 있습니다.

    .NET Profiler를 보여 주는 스크린샷

    비고

    핫 경로 는 기본적으로 선택됩니다. 조사 중인 문제에 영향을 주는 이벤트의 특정 경로를 강조 표시하며, 이벤트 이름 옆에 있는 불꽃 아이콘으로 표시됩니다.

.NET Profiler가 작동하지 않는 경우 문의하세요 serviceprofilerhelp@microsoft.com.

스냅샷 디버그

예외의 코드 수준 디버그 정보를 보려면 다음을 수행합니다.

  1. Gantt 차트에서 예외를 선택한 다음 디버그 스냅샷을 엽니다.

    '디버그 스냅샷 열기' 단추가 강조 표시된 '엔드투엔드 트랜잭션 세부 정보' 보기를 보여주는 스크린샷.

  2. 스냅샷 디버거 는 호출 스택을 표시하며 각 호출 스택 프레임에서 변수를 검사할 수 있습니다. 메서드를 선택하면 요청 시 모든 지역 변수의 값을 볼 수 있습니다.

  3. 그 후 스냅샷을 다운로드하고 Visual Studio에서 열어 소스 코드를 디버그할 수 있습니다.

    '스냅샷 다운로드' 단추가 강조 표시된 스냅샷 디버거를 보여 주는 스크린샷

스냅샷 디버거를 작동시킬 수 없는 경우 snapshothelp@microsoft.com에 문의하세요.

작업 항목 만들기

Application Insights를 Azure DevOps 또는 GitHub와 같은 추적 시스템에 연결하는 경우 Application Insights에서 직접 원격 분석 항목의 세부 정보를 사용하여 작업 항목을 만들 수 있습니다.

비고

이 단계를 처음 수행하면 Azure DevOps 조직 및 프로젝트에 대한 링크를 구성하라는 메시지가 표시됩니다.

  1. 엔드 투 엔드 트랜잭션 세부 정보 보기로 이동하여 이벤트를 선택합니다.

  2. 세부 정보 섹션에서 작업 항목 만들기를 선택하고 새 템플릿을 만들거나 기존 템플릿을 선택합니다.

    '작업 항목 만들기' 단추가 강조 표시된 '엔드 투 엔드 트랜잭션 세부 정보' 보기를 보여 주는 스크린샷.

  3. 새 작업 항목 창이 열리고 이미 채워진 예외에 대한 세부 정보가 표시됩니다. 저장하기 전에 추가 정보를 추가할 수 있습니다.

자주 묻는 질문

이 섹션에서는 일반적인 질문에 대한 답변을 제공합니다.

트랜잭션 검색

구성 요소란?

구성 요소는 분산 또는 마이크로 서비스 애플리케이션의 독립적으로 배포 가능한 부분입니다. 개발자 및 운영 팀은 이러한 애플리케이션 구성 요소에서 생성된 원격 분석에 대한 코드 수준의 가시성 또는 액세스 권한을 갖습니다.

  • 구성 요소는 팀이나 조직이 액세스할 수 없는 SQL, 이벤트 허브 등의 “관찰된” 외부 종속성(코드 또는 원격 분석)과 다릅니다.
  • 구성 요소는 원하는 수의 서버, 역할 또는 컨테이너 인스턴스에서 실행됩니다.
  • 구독이 서로 다른 경우에도 구성 요소는 별도의 Application Insights 계측 키일 수 있습니다. 구성 요소는 단일 Application Insights 계측 키에 보고하는 여러 가지 역할일 수도 있습니다. 새 환경에서는 설정 방법에 관계없이 모든 구성 요소에 대한 세부 정보를 보여 줍니다.

얼마나 많은 데이터가 보존되는가?

제한 요약을 참조하세요.


서버 요청에서 POST 데이터를 보려면 어떻게 해야 하나요?

POST 데이터를 자동으로 기록하지는 않지만 TrackTrace 또는 로그 호출을 사용할 수 있습니다. 메시지 매개 변수에 게시 데이터를 넣습니다. 속성을 필터링할 수 있는 동일한 방법으로 메시지에서 필터링할 수는 없지만 크기 제안은 더 깁니다.


Azure Function Search에서 결과를 반환하지 않는 이유는 무엇인가요?

Azure Functions는 URL 쿼리 문자열을 기록하지 않습니다.

트랜잭션 진단

차트에 단일 구성 요소가 표시되고 다른 구성 요소가 세부 정보 없이 외부 종속성으로만 표시되는 이유는 무엇인가요?

잠재적 원인은 다음과 같습니다.

  • 다른 구성 요소가 Application Insights를 통해 계측됩니까?
  • 최신의 안정적인 Application Insights SDK를 사용하고 있습니까?
  • 이러한 구성 요소가 별도의 Application Insights 리소스인 경우 액세스 권한이 있는지 확인합니다. 액세스 권한이 있고 구성 요소가 최신 Application Insights SDK를 통해 계측되는 경우 오른쪽 위에 있는 피드백 채널을 통해 알려 주세요.

종속성에 대해 중복 행이 표시됩니다. 이 동작이 필요한가요?

현재 아웃바운드 종속성 호출은 인바운드 요청과는 별도로 표시됩니다. 일반적으로 두 호출은 네트워크 왕복으로 인해 기간 값만 다를 뿐 동일하게 보입니다. 기간 막대의 선행 아이콘과 고유한 스타일은 구분하는 데 도움이 됩니다. 이러한 데이터 표시가 혼란스러운가요? 의견을 보내주세요!


서로 다른 구성 요소 인스턴스의 시계 편차는 어떻게 되나요?

타임라인은 트랜잭션 차트의 클록 스큐에 맞게 조정됩니다. 세부 정보 창이나 Log Analytics를 사용하여 정확한 타임스탬프를 볼 수 있습니다.


새 환경에 관련 항목 쿼리가 대부분 누락된 이유는 무엇인가요?

이 동작은 의도된 것입니다. 모든 구성 요소에서 관련된 모든 항목은 이미 위쪽 및 아래쪽 섹션의 왼쪽에서 사용할 수 있습니다. 새 환경에는 왼쪽에서 다루지 않는 두 개의 관련 항목, 즉 이 이벤트 전후 5분의 모든 원격 분석 및 사용자 타임라인이 있습니다.


Application Insights JavaScript SDK를 사용할 때 트랜잭션당 더 적은 이벤트를 볼 수 있는 방법이 있나요?

트랜잭션 진단 환경은 작업 ID를 공유하는 단일 작업의 모든 원격 분석을 보여 줍니다. 기본적으로 JavaScript용 Application Insights SDK는 고유한 각 페이지 보기당 새 작업을 만듭니다. SPA(단일 페이지 애플리케이션)에서는 단일 페이지 보기 이벤트만 생성되며, 모든 원격 분석에 동일한 작업 ID가 사용됩니다. 따라서 많은 이벤트가 동일한 작업과 상호 연관될 수 있습니다.

이 시나리오에서는 자동 경로 추적을 사용하여 SPA에서 탐색을 위한 새 작업을 자동으로 만들 수 있습니다. URL 경로가 업데이트될 때마다(논리적 페이지 보기 발생) 페이지 보기가 생성되도록 enableAutoRouteTracking을 켜야 합니다. 작업 ID를 수동으로 새로 고치려면 appInsights.properties.context.telemetryTrace.traceID = Microsoft.ApplicationInsights.Telemetry.Util.generateW3CId()를 호출합니다. PageView 이벤트를 수동으로 트리거하면 작업 ID도 다시 설정됩니다.


트랜잭션 세부 정보 기간이 상위 요청 기간까지 추가되지 않는 이유는 무엇인가요?

Gantt 차트에 설명되지 않은 시간은 추적된 종속성이 적용되지 않는 시간입니다. 이 문제는 외부 호출이 자동으로 또는 수동으로 계측되지 않았기 때문에 발생할 수 있습니다. 또한 소요된 시간이 외부 호출이 아닌 처리 중이었기 때문에 발생할 수 있습니다.

모든 호출이 계측된 경우 처리 중이 소요 시간의 근본 원인일 수 있습니다. 프로세스를 진단하는 데 유용한 도구는 .NET Profiler입니다.


Azure Portal에서 Application Insights를 탐색하는 동안 "데이터 검색 오류" 메시지가 표시되면 어떻게 하나요?

이 오류는 브라우저가 필요한 API를 호출할 수 없거나 API가 실패 응답을 반환했음을 나타냅니다. 동작 문제를 해결하려면 브라우저 InPrivate 창을 열고 실행 중인 브라우저 확장을 사용하지 않도록 설정한 다음, 포털 동작을 재현할 수 있는지 확인합니다. 포털 오류가 계속 발생하면 다른 브라우저나 다른 머신으로 테스트를 시도하고 API 호출이 실패한 클라이언트 머신에서 DNS 또는 기타 네트워크 관련 문제를 조사합니다. 포털 오류가 계속되고 추가로 조사해야 하는 경우 예기치 않은 포털 동작을 재현하는 동안 브라우저 네트워크 추적을 수집 한 다음 Azure Portal에서 지원 사례를 엽니다.

다음 단계