다음을 통해 공유


Java 2.x용 Application Insights

주의

이 문서는 Application Insights Java 2.x에 적용되며 더 이상 권장되지 않습니다.

최신 버전에 대한 설명서는 Application Insights Java 3.x에서 찾을 수 있습니다.

이 문서에서는 Application Insights Java 2.x를 사용하는 방법을 알아봅니다. 이 문서는 다음을 수행하는 방법을 보여줍니다.

  • 시작 및 요청을 계측하고, 종속성을 추적하고, 성능 카운터를 수집하고, 성능 문제 및 예외를 진단하고, 사용자가 앱으로 수행하는 작업을 추적하는 코드를 작성하는 방법을 알아봅니다.
  • Application Insights 포털을 사용하여 추적 로그를 Application Insights에 보내고 탐색합니다.
  • Java 웹앱에서 종속성, catch된 예외 및 메서드 실행 시간을 모니터링합니다.
  • Java 웹앱에서 원격 분석을 필터링합니다.
  • 를 사용하여 collectdApplication Insights에서 Linux 시스템 성능 메트릭을 탐색합니다.
  • JVM(Java 가상 머신) 기반 애플리케이션 코드에 대한 메트릭을 측정합니다. 마이크로미터 애플리케이션 모니터링을 사용하여 즐겨 찾는 모니터링 시스템으로 데이터를 내보냅니다.

비고

2025년 3월 31일에 계측 키 수집에 대한 지원이 종료됩니다. 계측 키 수집은 계속 작동하지만 더 이상 기능에 대한 업데이트 또는 지원을 제공하지 않습니다. 새 기능을 활용하기 위해 연결 문자열로 전환합니다.

Java 웹 프로젝트에서 Application Insights 시작

이 섹션에서는 Application Insights SDK를 사용하여 요청을 계측하고, 종속성을 추적하고, 성능 카운터를 수집하고, 성능 문제 및 예외를 진단하고, 사용자가 앱으로 수행하는 작업을 추적하는 코드를 작성합니다.

Application Insights는 라이브 애플리케이션의 성능과 사용량을 이해하는 데 도움이 되는 웹 개발자를 위한 확장 가능한 분석 서비스입니다. Application Insights는 Linux, Unix 또는 Windows에서 실행되는 Java 앱을 지원합니다.

필수 조건

필요 항목:

  • 활성 구독이 있는 Azure 계정. 계정을 무료로 만들 수 있습니다.
  • 작동하는 Java 애플리케이션입니다.

Application Insights 계측 키 가져오기

  1. Azure Portal에 로그인합니다.

  2. Azure Portal에서 Application Insights 리소스를 만듭니다. 애플리케이션 유형을 Java 웹 애플리케이션으로 설정합니다.

  3. 새 리소스의 계측 키를 찾습니다. 이 키를 곧 코드 프로젝트에 붙여넣어야 합니다.

    계측 키가 강조 표시된 Azure Portal의 Application Insights 리소스에 대한 개요 창 스크린샷

프로젝트에 Java용 Application Insights SDK 추가

프로젝트 유형을 선택합니다.

프로젝트가 빌드에 Maven을 사용하도록 이미 설정된 경우 다음 코드를 pom.xml 파일에 병합합니다. 그런 다음 프로젝트 종속성을 새로 고쳐 바이너리를 다운로드합니다.

    <dependencies>
      <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>applicationinsights-web-auto</artifactId>
        <!-- or applicationinsights-web for manual web filter registration -->
        <!-- or applicationinsights-core for bare API -->
        <version>2.6.4</version>
      </dependency>
    </dependencies>

자주 묻는 질문

  • 구성 요소 -web-auto, -web, -core 간의 관계는 무엇인가요?

    • applicationinsights-web-auto 는 런타임에 Application Insights 서블릿 필터를 자동으로 등록하여 HTTP 서블릿 요청 수 및 응답 시간을 추적하는 메트릭을 제공합니다.
    • applicationinsights-web 또한 HTTP 서블릿 요청 수 및 응답 시간을 추적하는 메트릭을 제공합니다. 그러나 애플리케이션에서 Application Insights 서블렛 필터를 수동으로 등록해야 합니다.
    • applicationinsights-core 는 애플리케이션이 서블릿 기반이 아닌 경우 기본 API를 제공합니다.
  • SDK를 최신 버전으로 업데이트하려면 어떻게 해야 하나요?

    • 2020년 11월 현재 Java 애플리케이션을 모니터링하려면 Application Insights Java 3.x를 사용하는 것이 좋습니다. 시작하는 방법에 대한 자세한 내용은 Application Insights Java 3.x를 참조하세요.

ApplicationInsights.xml 파일 추가

프로젝트의 리소스 폴더에 ApplicationInsights.xml 추가하거나 프로젝트의 배포 클래스 경로에 추가되었는지 확인합니다. 다음 XML을 복사합니다.

계측 키를 Azure Portal에서 얻은 계측 키로 바꿉니다.

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings" schemaVersion="2014-05-30">

   <!-- The key from the portal: -->
   <InstrumentationKey>** Your instrumentation key **</InstrumentationKey>

   <!-- HTTP request component (not required for bare API) -->
   <TelemetryModules>
      <Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebRequestTrackingTelemetryModule"/>
      <Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebSessionTrackingTelemetryModule"/>
      <Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebUserTrackingTelemetryModule"/>
   </TelemetryModules>

   <!-- Events correlation (not required for bare API) -->
   <!-- These initializers add context data to each event -->
   <TelemetryInitializers>
      <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationIdTelemetryInitializer"/>
      <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationNameTelemetryInitializer"/>
      <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebSessionTelemetryInitializer"/>
      <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserTelemetryInitializer"/>
      <Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserAgentTelemetryInitializer"/>
   </TelemetryInitializers>

</ApplicationInsights>

필요에 따라 구성 파일은 애플리케이션에서 액세스할 수 있는 모든 위치에 있을 수 있습니다. 시스템 속성 -Dapplicationinsights.configurationDirectoryApplicationInsights.xml포함하는 디렉터리를 지정합니다. 예를 들어 E:\myconfigs\appinsights\ApplicationInsights.xml 있는 구성 파일은 속성 -Dapplicationinsights.configurationDirectory="E:\myconfigs\appinsights"으로 구성됩니다.

  • 계측 키는 원격 분석의 모든 항목과 함께 전송되며 Application Insights에 리소스에 표시하도록 지시합니다.
  • HTTP 요청 구성 요소는 선택 사항입니다. 요청 및 응답 시간에 대한 원격 분석을 포털에 자동으로 보냅니다.
  • 이벤트 상관 관계는 HTTP 요청 구성 요소에 추가됩니다. 서버에서 받은 각 요청에 식별자를 할당합니다. 그런 다음 이 식별자를 속성으로 원격 분석의 모든 항목에 속성 Operation.Id으로 추가합니다. 진단 검색에서 필터를 설정하여 각 요청과 연결된 원격 분석의 상관 관계를 지정할 수 있습니다.

계측 키를 설정하는 다른 방법

Application Insights SDK는 다음 순서로 키를 찾습니다.

  • 시스템 속성: -DAPPINSIGHTS_INSTRUMENTATIONKEY=your_ikey
  • 환경 변수: APPINSIGHTS_INSTRUMENTATIONKEY
  • 구성 파일: ApplicationInsights.xml

코드에서 설정할 수도 있습니다.

    String instrumentationKey = "00000000-0000-0000-0000-000000000000";

    if (instrumentationKey != null)
    {
        TelemetryConfiguration.getActive().setInstrumentationKey(instrumentationKey);
    }

에이전트 추가

Java 에이전트를 설치 하여 나가는 HTTP 호출, JDBC 쿼리, 애플리케이션 로깅 및 더 나은 작업 명명을 캡처합니다.

애플리케이션 실행

개발 컴퓨터에서 디버그 모드로 실행하거나 서버에 게시합니다.

Application Insights에서 원격 분석 보기

Azure Portal에서 Application Insights 리소스로 돌아갑니다.

HTTP 요청 데이터가 개요 창에 나타납니다. 없는 경우 몇 초 정도 기다린 다음 새로 고침을 선택합니다.

개요 샘플 데이터를 보여 주는 스크린샷.

메트릭에 대해 자세히 알아봅니다.

차트를 클릭하여 더 자세한 집계 메트릭을 확인합니다.

차트가 있는 Application Insights 실패 창을 보여 주는 스크린샷

인스턴스 데이터

특정 요청 유형을 클릭하여 개별 인스턴스를 확인합니다.

특정 샘플 보기로 드릴다운하는 방법을 보여 주는 스크린샷

Log Analytics: 강력한 쿼리 언어

더 많은 데이터를 누적하면 쿼리를 실행하여 데이터를 집계하고 개별 인스턴스를 찾을 수 있습니다. Log Analytics 는 성능 및 사용을 이해하고 진단 목적으로 사용할 수 있는 강력한 도구입니다.

Azure Portal에서 Log Analytics의 예를 보여 주는 스크린샷.

서버에 앱 설치

이제 서버에 앱을 게시하고, 사용자가 사용할 수 있도록 하고, 포털에 원격 분석이 표시되는지 확인합니다.

  • 방화벽에서 귀하의 애플리케이션이 원격 분석 데이터를 다음 포트로 전송할 수 있도록 허용하는지 확인하십시오.

    • dc.services.visualstudio.com:443
    • f5.services.visualstudio.com:443
  • 나가는 트래픽을 방화벽을 통해 라우팅해야 하는 경우 시스템 속성을 http.proxyHost 정의하고 http.proxyPort.

  • Windows 서버에서 다음을 설치합니다.

Azure App Service, Azure Kubernetes Service, VM 구성

모든 Azure 리소스 공급자에서 실행되는 애플리케이션을 모니터링하는 가장 쉬운 방법은 Application Insights Java 3.x를 사용하는 것입니다.

예외 및 요청 실패

처리되지 않은 예외 및 요청 실패는 Application Insights 웹 필터에 의해 자동으로 수집됩니다.

다른 예외에 대한 데이터를 수집하려면 코드에 trackException()에 대한 호출을 삽입할 수 있습니다.

메서드 호출 및 외부 종속성 모니터링

Java 에이전트를 설치하여 지정된 내부 메서드와 JDBC를 통한 호출을 로그하고, 타이밍 데이터를 수집하며, 자동으로 작업 이름을 지정합니다.

W3C 분산 추적

Application Insights Java SDK는 이제 W3C 분산 추적을 지원합니다.

들어오는 SDK 구성은 Application Insights의 원격 분석 상관 관계에 자세히 설명되어 있습니다.

나가는 SDK 구성은 AI-Agent.xml 파일에 정의됩니다.

성능 계수기

조사>메트릭을 선택하여 다양한 성능 카운터를 확인합니다.

프로세스 프라이빗 바이트가 선택된 Azure Portal의 Application Insights 리소스에 대한 메트릭 창을 보여 주는 스크린샷.

성능 카운터 컬렉션 사용자 지정

표준 성능 카운터 집합의 컬렉션을 사용하지 않도록 설정하려면 ApplicationInsights.xml 파일의 루트 노드 아래에 다음 코드를 추가합니다.

    <PerformanceCounters>
       <UseBuiltIn>False</UseBuiltIn>
    </PerformanceCounters>

더 많은 성능 카운터 수집

수집할 더 많은 성능 카운터를 지정할 수 있습니다.

JMX 카운터(Java 가상 머신에 의해 노출됨)
    <PerformanceCounters>
      <Jmx>
        <Add objectName="java.lang:type=ClassLoading" attribute="TotalLoadedClassCount" displayName="Loaded Class Count"/>
        <Add objectName="java.lang:type=Memory" attribute="HeapMemoryUsage.used" displayName="Heap Memory Usage-used" type="composite"/>
      </Jmx>
    </PerformanceCounters>
  • displayName: Application Insights 포털에 표시되는 이름입니다.
  • objectName: JMX 개체 이름입니다.
  • attribute: 가져올 JMX 개체 이름의 특성입니다.
  • type (선택 사항): JMX 개체의 특성 유형:
    • 기본값: int 또는 long과 같은 단순 형식입니다.
    • composite: 성능 카운터 데이터는 .의 Attribute.Data형식입니다.
    • tabular: 성능 카운터 데이터는 테이블 행의 형식입니다.
Windows 성능 카운터

Windows 성능 카운터 는 범주의 구성원입니다(필드가 클래스의 멤버인 것과 동일한 방식). 범주는 전역이거나 번호가 매겨진 인스턴스 또는 이름이 붙은 인스턴스일 수 있습니다.

    <PerformanceCounters>
      <Windows>
        <Add displayName="Process User Time" categoryName="Process" counterName="%User Time" instanceName="__SELF__" />
        <Add displayName="Bytes Printed per Second" categoryName="Print Queue" counterName="Bytes Printed/sec" instanceName="Fax" />
      </Windows>
    </PerformanceCounters>
  • displayName: Application Insights 포털에 표시되는 이름입니다.
  • categoryName: 이 성능 카운터가 연결된 성능 카운터 범주(성능 개체)입니다.
  • counterName: 성능 카운터의 이름입니다.
  • instanceName: 범주에 단일 인스턴스가 포함된 경우 성능 카운터 범주 인스턴스의 이름 또는 빈 문자열("")입니다. categoryNameProcess 조건을 만족하고 앱을 실행 중인 현재 JVM 프로세스에서 수집하고자 하는 성능 카운터가 있는 경우, "__SELF__"를 지정합니다.

Unix 성능 카운터

Application Insights 플러그 인과 함께 collectd를 설치하여 다양한 시스템 및 네트워크 데이터를 가져옵니다.

사용자 및 세션 데이터 가져오기

이제 웹 서버가 원격 분석 데이터를 전송합니다. 애플리케이션의 전체 360도 보기를 얻으려면 모니터링을 더 추가할 수 있습니다.

나만의 원격 분석 보내기

이제 SDK를 설치했으므로 API를 사용하여 자체 원격 분석을 보낼 수 있습니다.

가용성 웹 테스트

Application Insights는 정기적으로 웹 사이트를 테스트하여 웹 사이트가 잘 작동 및 응답하고 있는지 확인할 수 있습니다.

가용성 웹 테스트를 설정하는 방법에 대해 자세히 알아봅니다.

Troubleshooting

전용 문제 해결 문서를 참조하세요.

애플리케이션 호스트와 수집 서비스 간의 연결 테스트

Application Insights SDK 및 에이전트는 수집 엔드포인트에 대한 REST 호출로 수집하기 위해 원격 분석을 보냅니다. PowerShell 또는 curl 명령의 원시 REST 클라이언트를 사용하여 웹 서버 또는 애플리케이션 호스트 컴퓨터에서 수집 서비스 엔드포인트로의 연결을 테스트할 수 있습니다. Azure Monitor Application Insights에서 누락된 애플리케이션 원격 분석 문제 해결을 참조하세요.

Application Insights에서 Java 추적 로그 살펴보기

추적에 Logback 또는 Log4J(v1.2 또는 v2.0)를 사용하는 경우 추적 로그를 탐색하고 검색할 수 있는 Application Insights로 자동으로 보내도록 할 수 있습니다.

팁 (조언)

애플리케이션에 대해 Application Insights 계측 키를 한 번만 설정해야 합니다. Java Spring과 같은 프레임워크를 사용하는 경우 앱 구성의 다른 위치에 키를 이미 등록했을 수 있습니다.

Application Insights Java 에이전트 사용

기본적으로 Application Insights Java 에이전트는 WARN 수준 및 그 이상의 로깅을 자동으로 캡처합니다.

AI-Agent.xml 파일을 사용하여 캡처된 로깅 임계값을 변경할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
   <Instrumentation>
      <BuiltIn>
         <Logging threshold="info"/>
      </BuiltIn>
   </Instrumentation>
</ApplicationInsightsAgent>

AI-Agent.xml 파일을 사용하여 Java 에이전트의 로깅 캡처를 사용하지 않도록 설정할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
   <Instrumentation>
      <BuiltIn>
         <Logging enabled="false"/>
      </BuiltIn>
   </Instrumentation>
</ApplicationInsightsAgent>

Alternatives

Java 에이전트를 사용하는 대신 다음 지침을 따를 수 있습니다.

Java SDK 설치

아직 수행하지 않은 경우 지침에 따라 Java용 Application Insights SDK를 설치합니다.

프로젝트에 로깅 라이브러리 추가

프로젝트에 적합한 방법을 선택합니다.

메이븐

프로젝트가 빌드에 Maven을 사용하도록 이미 설정된 경우 다음 코드 조각 중 하나를 pom.xml 파일에 병합합니다. 그런 다음 프로젝트 종속성을 새로 고쳐 이진 파일이 다운로드되도록 합니다.

로그백


    <dependencies>
       <dependency>
          <groupId>com.microsoft.azure</groupId>
          <artifactId>applicationinsights-logging-logback</artifactId>
          <version>[2.0,)</version>
       </dependency>
    </dependencies>

Log4J v2.0


    <dependencies>
       <dependency>
          <groupId>com.microsoft.azure</groupId>
          <artifactId>applicationinsights-logging-log4j2</artifactId>
          <version>[2.0,)</version>
       </dependency>
    </dependencies>

Log4J v1.2


    <dependencies>
       <dependency>
          <groupId>com.microsoft.azure</groupId>
          <artifactId>applicationinsights-logging-log4j1_2</artifactId>
          <version>[2.0,)</version>
       </dependency>
    </dependencies>
Gradle

빌드에 Gradle을 사용하도록 프로젝트가 이미 설정된 경우 dependencies 파일의 그룹에 다음 줄 중 하나를 추가합니다. 그런 다음 프로젝트 종속성을 새로 고쳐서 바이너리를 다운로드합니다.

로그백


    compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-logback', version: '2.0.+'

Log4J v2.0

    compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-log4j2', version: '2.0.+'

Log4J v1.2

    compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-log4j1_2', version: '2.0.+'

지침에 따라 Application Insights Java SDK를 수동으로 설치하고 jar를 다운로드합니다. Maven Central 페이지의 다운로드 섹션에서 적절한 추가 관리자에 대한 링크를 선택합니다 jar . 다운로드한 부록 jar을 프로젝트에 추가합니다.

Logger 다운로드 라이브러리
로그백 Logback 부록 Jar applicationinsights-logging-logback
Log4J v2.0 Log4J v2 앱펜더 Jar applicationinsights-logging-log4j2
Log4j v1.2 Log4J v1.2 부록 Jar applicationinsights-logging-log4j1_2

로깅 프레임워크에 추가

추적 가져오기를 시작하려면 관련 코드 조각을 Logback 또는 Log4J 구성 파일에 병합합니다.

로그백


    <appender name="aiAppender" 
      class="com.microsoft.applicationinsights.logback.ApplicationInsightsAppender">
        <instrumentationKey>[APPLICATION_INSIGHTS_KEY]</instrumentationKey>
    </appender>
    <root level="trace">
      <appender-ref ref="aiAppender" />
    </root>

Log4J v2.0


    <Configuration packages="com.microsoft.applicationinsights.log4j.v2">
      <Appenders>
        <ApplicationInsightsAppender name="aiAppender" instrumentationKey="[APPLICATION_INSIGHTS_KEY]" />
      </Appenders>
      <Loggers>
        <Root level="trace">
          <AppenderRef ref="aiAppender"/>
        </Root>
      </Loggers>
    </Configuration>

Log4J v1.2


    <appender name="aiAppender" 
         class="com.microsoft.applicationinsights.log4j.v1_2.ApplicationInsightsAppender">
        <param name="instrumentationKey" value="[APPLICATION_INSIGHTS_KEY]" />
    </appender>
    <root>
      <priority value ="trace" />
      <appender-ref ref="aiAppender" />
    </root>

Application Insights 앱엔더는 이전 코드 샘플에 표시된 것처럼 구성된 로거에서 참조할 수 있으며 루트 로거에서 참조할 필요는 없습니다.

Application Insights 포털에서 내 추적 탐색

이제 Application Insights에 추적을 보내도록 프로젝트를 구성했으므로 검색 창의 Application Insights 포털에서 이러한 추적을 보고 검색할 수 있습니다.

로거를 통해 제출된 예외는 포털에 예외 원격 분석 데이터로 표시됩니다.

Azure Portal에서 Application Insights 리소스에 대한 검색 창을 보여 주는 스크린샷.

Java 웹앱에서 종속성, catch된 예외 및 메서드 실행 시간 모니터링

Application Insights SDK를 사용하여 Java 웹앱을 계측한 경우 코드 변경 없이 Java 에이전트를 사용하여 심층 인사이트를 얻을 수 있습니다.

  • 종속성: 다음을 포함하여 애플리케이션이 다른 구성 요소에 대해 만드는 호출에 대한 데이터입니다.

    • 나가는 HTTP 호출: Apache HttpClient를 통해 수행되는 호출은, OkHttpjava.net.HttpURLConnection를 통해 캡처됩니다.
    • Redis 호출: Jedis 클라이언트를 통한 호출이 캡처됩니다.
    • JDBC 쿼리: MySQL 및 PostgreSQL의 경우 호출이 10초보다 오래 걸리는 경우 에이전트는 쿼리 계획을 보고합니다.
  • 애플리케이션 로깅: HTTP 요청 및 기타 원격 분석을 사용하여 애플리케이션 로그를 캡처하고 상관 관계를 지정합니다.

    • Log4j 1.2
    • Log4j2
    • 로그백
  • 더 나은 작업 이름 지정: 포털에서 요청을 집계하는 데 사용됩니다.

    • Spring: @RequestMapping를 기반으로.
    • JAX-RS: @Path에 기반.

Java 에이전트를 사용하려면 서버에 설치합니다. 웹앱은 Application Insights Java SDK를 사용하여 계측되어야 합니다.

Java용 Application Insights 에이전트 설치

  1. Java 서버를 실행하는 컴퓨터에서 2.x 에이전트를 다운로드합니다. 사용하는 2.x Java 에이전트 버전이 사용하는 2.x Application Insights Java SDK 버전과 일치하는지 확인합니다.

  2. 애플리케이션 서버 시작 스크립트를 편집하고 다음 JVM 인수를 추가합니다.

    -javaagent:<full path to the agent JAR file>

    예를 들어 Linux 컴퓨터의 Tomcat에서 다음을 수행합니다.

    export JAVA_OPTS="$JAVA_OPTS -javaagent:<full path to agent JAR file>"

  3. 애플리케이션 서버를 다시 시작합니다.

에이전트 구성

AI-Agent.xml 파일을 만들고 에이전트 jar 파일과 동일한 폴더에 배치합니다.

XML 파일의 내용을 설정합니다. 다음 예제를 편집하여 원하는 기능을 포함하거나 생략합니다.

<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
   <Instrumentation>
      <BuiltIn enabled="true">

         <!-- capture logging via Log4j 1.2, Log4j2, and Logback, default is true -->
         <Logging enabled="true" />

         <!-- capture outgoing HTTP calls performed through Apache HttpClient, OkHttp,
              and java.net.HttpURLConnection, default is true -->
         <HTTP enabled="true" />

         <!-- capture JDBC queries, default is true -->
         <JDBC enabled="true" />

         <!-- capture Redis calls, default is true -->
         <Jedis enabled="true" />

         <!-- capture query plans for JDBC queries that exceed this value (MySQL, PostgreSQL),
              default is 10000 milliseconds -->
         <MaxStatementQueryLimitInMS>1000</MaxStatementQueryLimitInMS>

      </BuiltIn>
   </Instrumentation>
</ApplicationInsightsAgent>

추가 설정(Spring Boot)

java -javaagent:/path/to/agent.jar -jar path/to/TestApp.jar

Azure App Service의 경우 다음 단계를 수행합니다.

  1. 설정>애플리케이션 설정을 선택합니다.

  2. 앱 설정에서 새 키 값 쌍을 추가합니다.

    • : JAVA_OPTS
    • : -javaagent:D:/home/site/wwwroot/applicationinsights-agent-2.6.4.jar

    에이전트가 D:/home/site/wwwroot/ 디렉터리로 끝나도록 프로젝트에서 리소스로 패키지되어야 합니다. 에이전트가 올바른 App Service 디렉터리에 있는지 확인하려면 개발 도구>>디버그 콘솔로 이동하여 사이트 디렉터리의 내용을 검사합니다.

  3. 설정을 저장하고 앱을 다시 시작합니다. 이러한 단계는 Windows에서 실행되는 앱 서비스에만 적용됩니다.

비고

AI-Agent.xml 에이전트 jar 파일은 동일한 폴더에 있어야 합니다. 프로젝트의 /resources 폴더에 함께 배치되는 경우가 많습니다.

W3C 분산 추적 사용

AI-Agent.xml다음 코드 조각을 추가합니다.

<Instrumentation>
   <BuiltIn enabled="true">
      <HTTP enabled="true" W3C="true" enableW3CBackCompat="true"/>
   </BuiltIn>
</Instrumentation>

비고

이전 버전과의 호환성 모드는 기본적으로 사용하도록 설정되어 있습니다. 매개 변수는 enableW3CBackCompat 선택 사항이며, 매개 변수를 해제하려는 경우에만 사용해야 합니다.

이상적으로는 모든 서비스가 W3C 프로토콜을 지원하는 최신 버전의 SDK로 업데이트된 경우입니다. 가능한 한 빨리 W3C 지원을 사용하여 최신 버전의 SDK로 이동하는 것이 좋습니다.

들어오고 나가는(에이전트) 구성이 정확히 동일한지 확인합니다.

데이터 보기

Application Insights 리소스에서 집계된 원격 종속성 및 메서드 실행 시간이 성능 타일 아래에 표시됩니다.

종속성, 예외 및 메서드 보고서의 개별 인스턴스를 검색하려면 검색을 엽니다.

종속성 문제를 진단하는 방법에 대해 자세히 알아봅니다.

질문 또는 문제?

다음 리소스를 사용합니다.

Java 웹 애플리케이션에서 텔레메트리 필터링

필터는 Java 웹앱이 Application Insights에 보내는 원격 분석을 선택하는 방법을 제공합니다. 사용할 수 있는 몇 가지 기본 제공 필터가 있습니다. 사용자 고유의 사용자 지정 필터를 작성할 수도 있습니다.

기본 필터는 다음과 같습니다.

  • 추적 심각도 레벨
  • 특정 URL, 키워드 또는 응답 코드.
  • 빠른 응답. 즉, 앱이 신속하게 응답한 요청입니다.
  • 특정 이벤트 이름입니다.

비고

필터는 앱의 메트릭을 왜곡합니다. 예를 들어 느린 응답을 진단하기 위해 빠른 응답 시간을 삭제하도록 필터를 설정할 수 있습니다. 하지만 Application Insights에서 보고한 평균 응답 시간은 실제 속도보다 느려집니다. 또한 요청 수는 실제 개수보다 작습니다.

문제가 되는 경우 샘플링 을 대신 사용합니다.

필터 설정

ApplicationInsights.xml다음 예제와 같은 섹션을 TelemetryProcessors 추가합니다.


    <ApplicationInsights>
      <TelemetryProcessors>

        <BuiltInProcessors>
           <Processor type="TraceTelemetryFilter">
                  <Add name="FromSeverityLevel" value="ERROR"/>
           </Processor>

           <Processor type="RequestTelemetryFilter">
                  <Add name="MinimumDurationInMS" value="100"/>
                  <Add name="NotNeededResponseCodes" value="200-400"/>
           </Processor>

           <Processor type="PageViewTelemetryFilter">
                  <Add name="DurationThresholdInMS" value="100"/>
                  <Add name="NotNeededNames" value="home,index"/>
                  <Add name="NotNeededUrls" value=".jpg,.css"/>
           </Processor>

           <Processor type="TelemetryEventFilter">
                  <!-- Names of events we don't want to see -->
                  <Add name="NotNeededNames" value="Start,Stop,Pause"/>
           </Processor>

           <!-- Exclude telemetry from availability tests and bots -->
           <Processor type="SyntheticSourceFilter">
                <!-- Optional: specify which synthetic sources,
                     comma-separated
                     - default is all synthetics -->
                <Add name="NotNeededSources" value="Application Insights Availability Monitoring,BingPreview"
           </Processor>

        </BuiltInProcessors>

        <CustomProcessors>
          <Processor type="com.fabrikam.MyFilter">
            <Add name="Successful" value="false"/>
          </Processor>
        </CustomProcessors>

      </TelemetryProcessors>
    </ApplicationInsights>

기본 제공 프로세서의 전체 집합을 검사합니다.

기본 제공 필터

이 섹션에서는 사용 가능한 기본 제공 필터에 대해 설명합니다.

메트릭 원격 분석 필터


           <Processor type="MetricTelemetryFilter">
                  <Add name="NotNeeded" value="metric1,metric2"/>
           </Processor>
  • NotNeeded: 사용자 지정 메트릭 이름의 쉼표로 구분된 목록

페이지 보기 텔레메트리 필터


           <Processor type="PageViewTelemetryFilter">
                  <Add name="DurationThresholdInMS" value="500"/>
                  <Add name="NotNeededNames" value="page1,page2"/>
                  <Add name="NotNeededUrls" value="url1,url2"/>
           </Processor>
  • DurationThresholdInMS: 기간은 페이지를 로드하는 데 걸린 시간을 나타냅니다. 이 매개 변수를 설정하면 이 시간보다 빠르게 로드된 페이지는 보고되지 않습니다.
  • NotNeededNames: 쉼표로 구분된 페이지 이름 목록입니다.
  • NotNeededUrls: URL 조각의 쉼표로 구분된 목록입니다. 예를 들어 "home" URL에 "home"이 있는 모든 페이지를 필터링합니다.

원격 분석 필터 요청


           <Processor type="RequestTelemetryFilter">
                  <Add name="MinimumDurationInMS" value="500"/>
                  <Add name="NotNeededResponseCodes" value="page1,page2"/>
                  <Add name="NotNeededUrls" value="url1,url2"/>
           </Processor>

가상 원본 필터

SyntheticSource 속성에 값이 있는 모든 원격 분석 데이터를 필터링합니다. 봇, 거미 및 가용성 테스트의 요청이 포함됩니다.

합성 요청에 대한 원격 분석을 필터링합니다.


           <Processor type="SyntheticSourceFilter" />

특정 합성 소스에 대한 원격 분석을 필터링합니다.


           <Processor type="SyntheticSourceFilter" >
                  <Add name="NotNeeded" value="source1,source2"/>
           </Processor>
  • NotNeeded: 가상 소스 이름의 쉼표로 구분된 목록

원격 분석 이벤트 필터

TrackEvent()를 사용하여 기록된 사용자 지정 이벤트를 필터링합니다.


           <Processor type="TelemetryEventFilter" >
                  <Add name="NotNeededNames" value="event1, event2"/>
           </Processor>
  • NotNeededNames: 이벤트 이름의 쉼표로 구분된 목록

원격 분석 추적 필터

TrackTrace() 또는 로깅 프레임워크 수집기를 사용하여 기록된 로그 추적을 필터링합니다.


           <Processor type="TraceTelemetryFilter">
                  <Add name="FromSeverityLevel" value="ERROR"/>
           </Processor>
  • 유효한 값은 FromSeverityLevel 다음과 같습니다.

    • OFF: 모든 추적을 필터링합니다.
    • TRACE: 필터링이 없습니다. TRACE 수준과 같습니다.
    • 정보: TRACE 수준을 제외합니다.
    • 경고: 추적 및 정보를 필터링합니다.
    • 오류: WARN, INFO 및 TRACE를 필터링합니다.
    • CRITICAL: CRITICAL를 제외한 모든 것을 필터링합니다.

사용자 지정 필터

다음 섹션에서는 사용자 지정 필터를 만드는 단계를 보여 줍니다.

필터 코딩

코드에서 다음을 구현하는 클래스를 만듭니다.TelemetryProcessor


    package com.fabrikam.MyFilter;
    import com.microsoft.applicationinsights.extensibility.TelemetryProcessor;
    import com.microsoft.applicationinsights.telemetry.Telemetry;

    public class SuccessFilter implements TelemetryProcessor {

        /* Any parameters that are required to support the filter.*/
        private final String successful;

        /* Initializers for the parameters, named "setParameterName" */
        public void setNotNeeded(String successful)
        {
            this.successful = successful;
        }

        /* This method is called for each item of telemetry to be sent.
           Return false to discard it.
           Return true to allow other processors to inspect it. */
        @Override
        public boolean process(Telemetry telemetry) {
            if (telemetry == null) { return true; }
            if (telemetry instanceof RequestTelemetry)
            {
                RequestTelemetry requestTelemetry = (RequestTelemetry)    telemetry;
                return request.getSuccess() == successful;
            }
            return true;
        }
    }

구성 파일에서 필터 호출

이제 ApplicationInsights.xml:



    <ApplicationInsights>
      <TelemetryProcessors>
        <CustomProcessors>
          <Processor type="com.fabrikam.SuccessFilter">
            <Add name="Successful" value="false"/>
          </Processor>
        </CustomProcessors>
      </TelemetryProcessors>
    </ApplicationInsights>

필터 호출(Java Spring)

Spring 프레임워크를 기반으로 하는 애플리케이션의 경우 사용자 지정 원격 분석 프로세서를 기본 애플리케이션 클래스에 빈으로 등록해야 합니다. 그러면 애플리케이션이 시작될 때 자동으로 연결됩니다.

@Bean
public TelemetryProcessor successFilter() {
      return new SuccessFilter();
}

에서 고유한 필터 매개 변수를 만듭니다 application.properties. 그런 다음 Spring Boot의 외부화된 구성 프레임워크를 사용하여 해당 매개 변수를 사용자 지정 필터에 전달합니다.

Troubleshooting

이 섹션에서는 문제 해결 팁을 제공합니다.

내 필터가 작동하지 않음

유효한 매개 변수 값을 제공했는지 확인합니다. 예를 들어 기간은 정수여야 합니다. 값이 잘못되면 필터가 무시됩니다. 사용자 지정 필터가 생성자 또는 set 메서드에서 예외를 발생시키면 무시됩니다.

collectd: Application Insights의 Linux 성능 메트릭(사용되지 않음)

Application Insights에서 Linux 시스템 성능 메트릭을 탐색하려면 collectd와 Application Insights 플러그인을 설치합니다. 이 오픈 소스 솔루션은 다양한 시스템 및 네트워크 통계를 수집합니다.

일반적으로 collectd 경우 사용합니다. 앱의 성능을 향상시키거나 문제를 진단하는 데 도움이 되는 더 많은 데이터를 제공합니다.

계측 키 가져오기

Azure Portal에서 데이터를 표시할 Application Insights 리소스를 엽니다. 또는 새 리소스를 만들 수 있습니다.

리소스를 식별하는 계측 키의 복사본을 가져옵니다.

계측 키가 강조 표시된 Azure Portal의 Application Insights 리소스에 대한 개요 창을 보여 주는 스크린샷

수집기와 플러그 인 설치

Linux 서버 컴퓨터에서 다음을 수행합니다.

  1. collectd 버전 5.4.0 이상을 설치하십시오.
  2. Application Insights collectd writer 플러그인을 다운로드합니다. 버전 번호를 확인합니다.
  3. 플러그인 jar 파일을 /usr/share/collectd/java에 복사합니다.
  4. 편집 /etc/collectd/collectd.conf:
    • Java 플러그 인이 사용하도록 설정되어 있는지 확인합니다.

    • 다음 jar를 포함하도록 JVMArg java.class.path 를 업데이트합니다. 다운로드한 버전 번호와 일치하도록 버전 번호를 업데이트합니다.

      • /usr/share/collectd/java/applicationinsights-collectd-1.0.5.jar
    • 리소스의 계측 키를 사용하여 이 코드 조각을 추가합니다.

      
           LoadPlugin "com.microsoft.applicationinsights.collectd.ApplicationInsightsWriter"
           <Plugin ApplicationInsightsWriter>
              InstrumentationKey "Your key"
           </Plugin>
      

      샘플 구성 파일의 일부는 다음과 같습니다.

      
          ...
          # collectd plugins
          LoadPlugin cpu
          LoadPlugin disk
          LoadPlugin load
          ...
      
          # Enable Java Plugin
          LoadPlugin "java"
      
          # Configure Java Plugin
          <Plugin "java">
            JVMArg "-verbose:jni"
            JVMArg "-Djava.class.path=/usr/share/collectd/java/applicationinsights-collectd-1.0.5.jar:/usr/share/collectd/java/collectd-api.jar"
      
            # Enabling Application Insights plugin
            LoadPlugin "com.microsoft.applicationinsights.collectd.ApplicationInsightsWriter"
      
            # Configuring Application Insights plugin
            <Plugin ApplicationInsightsWriter>
              InstrumentationKey "12345678-1234-1234-1234-123456781234"
            </Plugin>
      
            # Other plugin configurations ...
            ...
          </Plugin>
          ...
      

다양한 소스로부터 여러 데이터를 수집할 수 있는 다른 collectd 플러그인을 구성합니다.

collectd에 따라 다시 시작 합니다.

Application Insights에서 데이터 보기

Application Insights 리소스에서 메트릭을 열고 차트를 추가합니다. 사용자 지정 범주에서 보려는 메트릭을 선택합니다.

기본적으로 메트릭은 메트릭이 수집된 모든 호스트 머신에서 집계됩니다. 호스트당 메트릭을 보려면 차트 세부 정보 창에서 그룹화 기능을 설정한 다음 CollectD-Host별로 그룹화하도록 선택합니다.

특정 통계 업로드 제외

기본적으로 Application Insights 플러그 인은 활성화된 collectd read 모든 플러그 인에서 수집한 모든 데이터를 보냅니다.

특정 플러그 인 또는 데이터 원본에서 데이터를 제외하려면 다음을 수행합니다.

  • 구성 파일을 편집합니다.

  • 다음 <Plugin ApplicationInsightsWriter>표에 있는 것과 같은 지시문 줄을 추가합니다.

    지시 영향
    Exclude disk 플러그 인에서 수집한 disk 모든 데이터를 제외합니다.
    Exclude disk:read,write 플러그인에서 readwrite 이름의 소스를 disk에서 제외합니다.

지시문을 줄 바꿈으로 구분합니다.

문제?

이 섹션에서는 문제 해결 팁을 제공합니다.

포털에 데이터가 표시되지 않음

다음 옵션을 시도해 보세요.

  • 검색을 열어 원시 이벤트가 도착했는지 확인합니다. 메트릭 탐색기에 표시되는 데 시간이 더 오래 걸리는 경우도 있습니다.
  • 나가는 데이터에 대한 방화벽 예외를 설정해야 할 수 있습니다.
  • Application Insights 플러그 인에서 추적을 사용하도록 설정합니다. <Plugin ApplicationInsightsWriter>에 이 줄을 추가합니다.
    • SDKLogger true
  • 터미널을 열고 collectd을(를) 자세한 정보 표시 모드로 실행하여 보고하는 문제를 확인합니다.
    • sudo collectd -f

알려진 문제

Application Insights 쓰기 플러그 인은 특정 읽기 플러그 인과 호환되지 않습니다. 일부 플러그인은 때때로 NaN을 보내지만 Application Insights 플러그 인에는 부동 소수점 숫자가 예상됩니다.

  • 증상: 로그에 collectd "AI: ... SyntaxError: 예기치 않은 문자 N."
  • 해결 방법: 문제 쓰기 플러그 인에 의해 수집된 데이터를 제외합니다.

마이크로미터 애플리케이션 모니터링은 JVM 기반 애플리케이션 코드에 대한 메트릭을 측정하고 원하는 모니터링 시스템으로 데이터를 내보낼 수 있습니다. 이 섹션에서는 Spring Boot 및 비 Spring Boot 애플리케이션 모두에 대해 Application Insights와 함께 마이크로미터를 사용하는 방법을 설명합니다.

Spring Boot 1.5x 사용

pom.xml 또는 build.gradle 파일에 다음 종속성을 추가합니다.

아래 단계를 수행하세요.

  1. Spring Boot 애플리케이션의 pom.xml 파일을 업데이트하고 여기에 다음 종속성을 추가합니다.

    <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>applicationinsights-spring-boot-starter</artifactId>
        <version>2.5.0</version>
    </dependency>
    
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-spring-legacy</artifactId>
        <version>1.1.0</version>
    </dependency>
    
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-azure-monitor</artifactId>
        <version>1.1.0</version>
    </dependency>
    
    
  2. 다음 속성을 사용하여 Application.properties 또는 YML 파일을 Application Insights 계측 키로 업데이트합니다.

    azure.application-insights.instrumentation-key=<your-instrumentation-key-here>

  3. 애플리케이션을 빌드하고 실행합니다.

이전 단계는 미리 집계된 메트릭이 Azure Monitor에 자동 수집되도록 설정하는 것이며, 이를 통해 정상 작동할 수 있습니다.

Spring 2.x 사용

pom.xml 또는 build.gradle 파일에 다음 종속성을 추가합니다.

아래 단계를 수행하세요.

  1. Spring Boot 애플리케이션의 pom.xml 파일을 업데이트하고 여기에 다음 종속성을 추가합니다.

    <dependency> 
          <groupId>com.microsoft.azure</groupId>
          <artifactId>azure-spring-boot-metrics-starter</artifactId>
          <version>2.0.7</version>
    </dependency>
    
  2. 다음 속성을 사용하여 Application.properties 또는 YML 파일을 Application Insights 계측 키로 업데이트합니다.

    azure.application-insights.instrumentation-key=<your-instrumentation-key-here>

  3. 애플리케이션을 빌드하고 실행합니다.

이전 단계에서는 미리 집계된 메트릭을 Azure Monitor에 자동으로 수집하여 실행해야 합니다. Application Insights Spring Boot Starter를 미세 조정하는 방법에 대한 자세한 내용은 GitHub의 추가 정보를 참조하세요.

기본 메트릭:

  • Tomcat, JVM, Logback 메트릭, Log4J 메트릭, 가동 시간 메트릭, 프로세서 메트릭 및 FileDescriptorMetrics에 대한 메트릭을 자동으로 구성합니다.
  • 예를 들어 Netflix Hystrix가 클래스 경로에 있는 경우 이러한 메트릭도 가져옵니다.
  • 각 빈을 추가하여 다음 메트릭을 사용할 수 있습니다.
    • CacheMetrics (CaffeineCache, EhCache2, GuavaCache, HazelcastCacheJCache)
    • DataBaseTableMetrics
    • HibernateMetrics
    • JettyMetrics
    • OkHttp3 운율학
    • Kafka 운율학

자동 메트릭 수집을 끕니다.

  • JVM 메트릭:
    • management.metrics.binders.jvm.enabled=false
  • 로그백 메트릭:
    • management.metrics.binders.logback.enabled=false
  • 가동 시간 메트릭:
    • management.metrics.binders.uptime.enabled=false
  • 프로세서 메트릭:
    • management.metrics.binders.processor.enabled=false
  • 파일 디스크립터 메트릭스:
    • management.metrics.binders.files.enabled=false
  • 다음의 라이브러리 classpath인 경우 Hystrix 메트릭
    • management.metrics.binders.hystrix.enabled=false
  • 다음의 라이브러리 classpath인 경우 AspectJ 메트릭
    • spring.aop.enabled=false

비고

Spring Boot 애플리케이션의 application.properties 또는 application.yml 파일에서 이전 속성을 지정합니다.

Spring Boot가 아닌 웹 애플리케이션에서 마이크로미터 사용

pom.xml 또는 build.gradle 파일에 다음 종속성을 추가합니다.

아래 단계를 수행하세요.

  1. pom.xml 또는 build.gradle 파일에 다음 종속성을 추가합니다.

        <dependency>
            <groupId>io.micrometer</groupId>
            <artifactId>micrometer-registry-azure-monitor</artifactId>
            <version>1.1.0</version>
        </dependency>
    
        <dependency>
            <groupId>com.microsoft.azure</groupId>
            <artifactId>applicationinsights-web-auto</artifactId>
            <version>2.5.0</version>
        </dependency>
    
  2. 아직 수행하지 않은 경우 리소스 폴더에 ApplicationInsights.xml 파일을 추가합니다. 자세한 내용은 ApplicationInsights.xml 파일 추가를 참조하세요.

  3. 샘플 Servlet 클래스(타이머 메트릭 생성):

        @WebServlet("/hello")
        public class TimedDemo extends HttpServlet {
    
          private static final long serialVersionUID = -4751096228274971485L;
    
          @Override
          @Timed(value = "hello.world")
          protected void doGet(HttpServletRequest request, HttpServletResponse response)
              throws ServletException, IOException {
    
            response.getWriter().println("Hello World!");
            MeterRegistry registry = (MeterRegistry) getServletContext().getAttribute("AzureMonitorMeterRegistry");
    
        //create new Timer metric
            Timer sampleTimer = registry.timer("timer");
            Stream<Integer> infiniteStream = Stream.iterate(0, i -> i+1);
            infiniteStream.limit(10).forEach(integer -> {
              try {
                Thread.sleep(1000);
                sampleTimer.record(integer, TimeUnit.MILLISECONDS);
              } catch (Exception e) {}
               });
          }
          @Override
          public void init() throws ServletException {
            System.out.println("Servlet " + this.getServletName() + " has started");
          }
          @Override
          public void destroy() {
            System.out.println("Servlet " + this.getServletName() + " has stopped");
          }
    
        }
    
    
  4. 샘플 구성 클래스:

         @WebListener
         public class MeterRegistryConfiguration implements ServletContextListener {
    
           @Override
           public void contextInitialized(ServletContextEvent servletContextEvent) {
    
         // Create AzureMonitorMeterRegistry
           private final AzureMonitorConfig config = new AzureMonitorConfig() {
             @Override
             public String get(String key) {
                 return null;
             }
            @Override
               public Duration step() {
                 return Duration.ofSeconds(60);}
    
             @Override
             public boolean enabled() {
                 return false;
             }
         };
    
      MeterRegistry azureMeterRegistry = AzureMonitorMeterRegistry.builder(config);
    
             //set the config to be used elsewhere
             servletContextEvent.getServletContext().setAttribute("AzureMonitorMeterRegistry", azureMeterRegistry);
    
           }
    
           @Override
           public void contextDestroyed(ServletContextEvent servletContextEvent) {
    
           }
         }
    

메트릭에 대한 자세한 내용은 마이크로미터 설명서를 참조하세요.

다양한 유형의 메트릭을 만드는 방법에 대한 다른 샘플 코드는 공식 Micrometer GitHub 리포지토리에서 찾을 수 있습니다.

더 많은 메트릭 컬렉션 바인딩

다음 섹션에서는 더 많은 메트릭을 수집하는 방법을 보여 줍니다.

SpringBoot/Spring

각각의 메트릭 카테고리별로 관련된 빈(Bean)을 생성합니다. 예를 들어 Guava Cache 메트릭이 필요하다고 가정합니다.

    @Bean
    GuavaCacheMetrics guavaCacheMetrics() {
        Return new GuavaCacheMetrics();
    }

여러 메트릭은 기본적으로 사용하도록 설정되지 않지만 이전 방식으로 바인딩할 수 있습니다. 전체 목록은 Micrometer GitHub 리포지토리를 참조하세요.

비스프링 앱

구성 파일에 다음 바인딩 코드를 추가합니다.

    New GuavaCacheMetrics().bind(registry);

사용자 지정 이벤트 및 메트릭에 대한 핵심 API

애플리케이션에 몇 줄의 코드를 삽입하여 사용자가 이 코드로 무엇을 하고 있는지 알아보거나 문제를 진단하는 데 도움을 줍니다. 장치 및 데스크톱 앱, 웹 클라이언트 및 웹 서버에서 원격 분석을 보낼 수 있습니다. Application Insights 핵심 원격 분석 API를 사용하여 사용자 지정 이벤트 및 메트릭 및 고유한 버전의 표준 원격 분석을 보냅니다. 이 API는 표준 Application Insights 데이터 수집기에서 사용하는 것과 동일한 API입니다.

API 요약

핵심 API는 (.NET만 해당) 같은 GetMetric 몇 가지 변형을 제외하고 모든 플랫폼에서 균일합니다.

메서드 사용 용도
TrackPageView 페이지, 화면, 창 또는 양식
TrackEvent 사용자 작업 및 기타 이벤트. 사용자 동작을 추적하거나 성능을 모니터링하는 데 사용됩니다.
TrackMetric 큐 길이와 같은 성능 측정은 특정 이벤트와 관련이 없습니다.
TrackException 진단을 위한 예외 로깅. 다른 이벤트와 관련하여 발생하는 위치를 추적하고 스택 추적을 검사합니다.
TrackRequest 성능 분석을 위해 서버 요청의 빈도 및 기간을 로깅합니다.
TrackTrace 리소스 진단 로그 메시지입니다. 타사 로그를 캡처할 수도 있습니다.
TrackDependency 앱이 의존하는 외부 구성 요소에 대한 호출 기간 및 빈도 로깅

이러한 원격 분석 호출의 대부분 에 속성 및 메트릭을 연결할 수 있습니다.

필수 조건

Application Insights SDK에 대한 참조가 아직 없는 경우:

  • Application Insights SDK를 프로젝트에 추가합니다.

  • 디바이스 또는 웹 서버 코드에 다음을 포함합니다.

    import com.microsoft.applicationinsights.TelemetryClient;
    

TelemetryClient 인스턴스 가져오기

다음의 인스턴스 TelemetryClient를 가져옵니다.

private TelemetryClient telemetry = new TelemetryClient();

TelemetryClient는 스레드 안전성을 가지고 있습니다.

비고

Azure Functions v2+ 또는 Azure WebJobs v3+를 사용하는 경우 Azure Functions 모니터링을 참조하세요.

앱의 다른 모듈을 위해 TelemetryClient 인스턴스를 더 많이 생성할 수도 있습니다. 예를 들어 미들웨어 클래스에 비즈니스 논리 이벤트를 보고하는 인스턴스가 하나 TelemetryClient 있을 수 있습니다. 기계를 식별하기 위해 UserIdDeviceId와 같은 속성을 설정할 수 있습니다. 이 정보는 인스턴스가 보내는 모든 이벤트에 연결됩니다.

telemetry.getContext().getUser().setId("...");
telemetry.getContext().getDevice().setId("...");

TrackEvent

Application Insights에서 사용자 지정 이벤트는메트릭 탐색기 에서 집계된 수로 표시하고 진단 검색 에서 개별 항목으로 표시할 수 있는 데이터 요소입니다. (MVC 또는 다른 프레임워크 "이벤트"와는 관련이 없습니다.)

코드에 TrackEvent 호출을 삽입하여 다양한 이벤트를 카운트합니다. 예를 들어 사용자가 특정 기능을 선택하는 빈도를 추적할 수 있습니다. 또는 특정 목표를 얼마나 자주 달성하거나 특정 유형의 실수를 하는지 알고 싶을 수 있습니다.

예를 들어 게임 앱에서 사용자가 게임에서 이길 때마다 이벤트를 보냅니다.

telemetry.trackEvent("WinGame");

Log Analytics의 사용자 지정 이벤트

원격 분석은 customEvents 테이블에서 Application Insights 로그 탭 또는 사용 환경에서 사용할 수 있습니다. 이벤트는 trackEvent(..) 또는 클릭 분석 자동 수집 플러그인에서 발생할 수 있습니다.

샘플링이 작동 중인 경우 속성은 itemCount 보다 1큰 값을 표시합니다. 예를 들어 itemCount==10 10개 호출 trackEvent()중 샘플링 프로세스는 그 중 하나만 전송됨을 의미합니다. 올바른 사용자 지정 이벤트 수를 얻으려면 .와 같은 customEvents | summarize sum(itemCount)코드를 사용합니다.

비고

itemCount의 최소값은 1입니다. 레코드 자체는 항목을 나타냅니다.

TrackMetric

Application Insights는 특정 이벤트에 연결되지 않은 메트릭을 차트로 표시할 수 있습니다. 예를 들어 정기적으로 큐 길이를 모니터링할 수 있습니다. 메트릭을 사용하면 개별 측정값이 변형 및 추세보다 덜 관심이 있으므로 통계 차트가 유용합니다.

Application Insights에 메트릭을 보내려면 API를 TrackMetric(..) 사용할 수 있습니다. 메트릭을 보내는 방법에는 두 가지가 있습니다.

  • 단일 값입니다. 애플리케이션에서 측정을 수행할 때마다 해당 값을 Application Insights로 보냅니다.

    예를 들어 컨테이너의 항목 수를 설명하는 메트릭이 있다고 가정합니다. 특정 기간 동안 먼저 세 개의 항목을 컨테이너에 넣은 다음 두 항목을 제거합니다. 따라서 TrackMetric을 두 번 호출합니다. 먼저 값을 3 전달한 다음, 값을 -2 전달합니다. Application Insights는 두 값을 모두 저장합니다.

  • 집계. 메트릭을 사용할 때 각각의 개별 측정은 거의 관심을 끌지 않습니다. 대신 특정 기간 동안 발생한 일에 대한 요약이 중요합니다. 이러한 요약을 집계라고 합니다.

    앞의 예제에서 해당 기간의 집계 메트릭 합계는 1 메트릭 값의 개수입니다 2. 집계 방법을 사용하는 경우 기간당 한 번만 호출 TrackMetric 하고 집계 값을 보냅니다. 이 방법은 모든 관련 정보를 수집하면서 Application Insights에 적은 수의 데이터 요소를 전송하여 비용 및 성능 오버헤드를 크게 줄일 수 있기 때문에 권장됩니다.

단일 값 예제

단일 메트릭 값을 보내려면 다음을 수행합니다.

telemetry.trackMetric("queueLength", 42.0);

Log Analytics의 사용자 지정 메트릭

원격 분석은 customMetrics 표에서 사용할 수 있습니다. 각 행은 앱에서 trackMetric(..)을(를) 호출한 것을 나타냅니다.

  • valueSum: 측정값의 합계입니다. 평균 값을 얻으려면 으로 valueCount나눕니다.
  • valueCount: 이 trackMetric(..) 호출에 집계된 측정값 수입니다.

비고

valueCount의 최소값은 1입니다. 레코드 자체는 항목을 나타냅니다.

페이지 보기

디바이스 또는 웹 페이지 앱에서 페이지 보기 원격 분석은 각 화면 또는 페이지가 로드될 때 기본적으로 전송됩니다. 그러나 기본값을 변경하여 페이지 보기를 더 많거나 다른 시간에 추적할 수 있습니다. 예를 들어 탭이나 창을 표시하는 앱에서 사용자가 새 창을 열 때마다 페이지를 추적할 수 있습니다.

사용자 및 세션 데이터는 페이지 보기와 함께 속성으로 전송되므로 페이지 보기 원격 분석이 있을 때 사용자 및 세션 차트가 활성 상태로 표시됩니다.

사용자 지정 페이지 보기

telemetry.trackPageView("GameReviewPage");

Log Analytics의 페이지 원격 분석

Log Analytics에서 두 테이블은 브라우저 작업의 데이터를 표시합니다.

  • pageViews: URL 및 페이지 제목에 대한 데이터를 포함합니다.
  • browserTimings: 들어오는 데이터를 처리하는 데 걸린 시간과 같은 클라이언트 성능에 대한 데이터를 포함합니다.

브라우저가 다른 페이지를 처리하는 데 걸리는 시간을 찾으려면 다음을 수행합니다.

browserTimings
| summarize avg(networkDuration), avg(processingDuration), avg(totalDuration) by name

다른 브라우저의 인기를 검색하려면 다음을 수행합니다.

pageViews
| summarize count() by client_Browser

페이지 보기를 AJAX 호출에 연결하려면 종속성에 조인합니다.

pageViews
| join (dependencies) on operation_Id

추적요청

서버 SDK는 HTTP 요청을 기록하는 데 사용합니다 TrackRequest .

웹 서비스 모듈이 실행되지 않는 컨텍스트에서 요청을 시뮬레이션하려는 경우 직접 호출할 수도 있습니다.

요청 원격 분석을 보내는 권장 방법은 요청이 작업 컨텍스트로서의 역할을 하는 방식입니다.

작업 컨텍스트

원격 분석 항목을 작업 컨텍스트와 연결하여 상호 연결할 수 있습니다. 표준 요청 추적 모듈은 HTTP 요청이 처리되는 동안 전송되는 예외 및 기타 이벤트에 대해 이 작업을 수행합니다. 검색분석에서 작업 ID를 사용하여 요청과 연결된 이벤트를 쉽게 찾을 수 있습니다.

작업 범위 내에서 보고된 원격 분석 항목은 이러한 작업의 자식이 됩니다. 작업 컨텍스트를 중첩할 수 있습니다.

검색에서 작업 컨텍스트는 관련 항목 목록을 만드는 데 사용됩니다.

관련 항목 목록을 보여 주는 스크린샷

Log Analytics의 요청

Application Insights Analytics에서 요청이 테이블에 표시됩니다requests.

샘플링이 작동 중인 경우 속성은 itemCount 보다 1큰 값을 표시합니다. 예를 들어 itemCount==10 10개 호출 trackRequest()중 샘플링 프로세스는 그 중 하나만 전송됨을 의미합니다. 요청 이름별로 분할된 정확한 요청 수 및 평균 기간을 얻으려면 다음과 같은 코드를 사용합니다.

requests
| summarize count = sum(itemCount), avgduration = avg(duration) by name

TrackException

Application Insights에 예외를 보냅니다.

보고서에는 스택 추적이 포함됩니다.

try {
    ...
} catch (Exception ex) {
    telemetry.trackException(ex);
}

예외가 자동으로 catch되므로 항상 명시적으로 호출 TrackException 할 필요는 없습니다.

Log Analytics의 예외

Application Insights Analytics에서 예외가 테이블에 표시됩니다exceptions.

샘플링이 작동 중인 경우 속성은 itemCount 보다 1큰 값을 표시합니다. 예를 들어 itemCount==10 10개 호출 trackException()중 샘플링 프로세스는 그 중 하나만 전송됨을 의미합니다. 예외 유형별로 구분된 올바른 예외 수를 얻으려면 다음과 같은 코드를 사용합니다.

exceptions
| summarize sum(itemCount) by type

대부분의 중요한 스택 정보는 이미 별도의 변수로 추출되었지만 구조를 분리 details 하여 더 많은 정보를 얻을 수 있습니다. 이 구조체는 동적이므로 결과를 예상한 형식으로 캐스팅해야 합니다. 다음은 그 예입니다.

exceptions
| extend method2 = tostring(details[0].parsedStack[1].method)

예외를 관련 요청과 연결하려면 조인을 사용합니다.

exceptions
| join (requests) on operation_Id

TrackTrace

Application Insights에 "브레드크럼"을 전송하기 위해 TrackTrace를 사용하여 문제를 진단합니다. 진단 데이터의 청크를 보내고 진단 검색에서 검사할 수 있습니다.

비고

Java에서 Application Insights Java 에이전트 는 로그를 자동으로 수집하여 포털로 보냅니다.

telemetry.trackTrace(message, SeverityLevel.Warning, properties);

메서드 입력 또는 종료와 같은 진단 이벤트를 기록합니다.

매개 변수 Description
message 진단 데이터. 이름보다 훨씬 길 수 있습니다.
properties 문자열에서 문자열로의 매핑. 포털에서 예외를 필터링 하는 데 더 많은 데이터가 사용됩니다. 기본값은 비어 있는 값으로 기본 설정됩니다.
severityLevel 지원되는 값: SeverityLevel.ts.

메시지 콘텐츠를 검색할 수 있지만 속성 값과 달리 필터링할 수는 없습니다.

크기 제한이 message 속성의 제한보다 훨씬 높습니다. TrackTrace 장점은 메시지에 상대적으로 긴 데이터를 넣을 수 있다는 것입니다. 예를 들어 POST 데이터를 인코딩할 수 있습니다.

메시지에 심각도 수준을 추가할 수도 있습니다. 또한 다른 원격 분석과 마찬가지로 다양한 추적 집합을 필터링하거나 검색하는 데 도움이 되는 속성 값을 추가할 수 있습니다. 다음은 그 예입니다.

Map<String, Integer> properties = new HashMap<>();
properties.put("Database", db.ID);
telemetry.trackTrace("Slow Database response", SeverityLevel.Warning, properties);

검색에서 특정 데이터베이스와 관련된 특정 심각도 수준의 모든 메시지를 쉽게 필터링할 수 있습니다.

Log Analytics의 추적

Application Insights Analytics에서 TrackTrace 호출은 traces 테이블에 나타납니다.

샘플링이 작동 중인 경우 속성은 itemCount 보다 1큰 값을 표시합니다. 예를 들어 itemCount==10 10개 호출 trackTrace()중 샘플링 프로세스는 그 중 하나만 전송됨을 의미합니다. 추적 호출의 올바른 수를 얻으려면 다음과 같은 traces | summarize sum(itemCount)코드를 사용합니다.

TrackDependency

호출을 TrackDependency 사용하여 외부 코드 조각에 대한 호출의 응답 시간 및 성공률을 추적합니다. 결과는 포털의 종속성 차트에 표시됩니다. 종속성 호출이 수행될 때마다 다음 코드 조각을 추가해야 합니다.

boolean success = false;
Instant startTime = Instant.now();
try {
    success = dependency.call();
}
finally {
    Instant endTime = Instant.now();
    Duration delta = Duration.between(startTime, endTime);
    RemoteDependencyTelemetry dependencyTelemetry = new RemoteDependencyTelemetry("My Dependency", "myCall", delta, success);
    dependencyTelemetry.setTimeStamp(startTime);
    telemetry.trackDependency(dependencyTelemetry);
}

비고

Java에서는 Application Insights Java 에이전트를 사용하여 많은 종속성 호출을 자동으로 추적할 수 있습니다.

자동화된 추적이 포착하지 못하는 호출을 추적하려면 이 호출을 사용합니다.

Log Analytics의 종속성

Application Insights Analytics에서 호출이 trackDependencydependencies 테이블에 표시됩니다.

샘플링이 작동 중인 경우 속성은 itemCount 1보다 큰 값을 표시합니다. 예를 들어 itemCount==10 10개 호출 trackDependency()중 샘플링 프로세스는 그 중 하나만 전송됨을 의미합니다. 대상 구성 요소별로 분할된 올바른 종속성 수를 얻으려면 다음과 같은 코드를 사용합니다.

dependencies
| summarize sum(itemCount) by target

종속성을 관련 요청과 연결하려면 연결 작업(조인)을 사용합니다.

dependencies
| join (requests) on operation_Id

데이터 비우기

일반적으로 SDK는 고정 간격(일반적으로 30초) 또는 버퍼가 가득 찼을 때마다 일반적으로 500개 항목으로 데이터를 보냅니다. 경우에 따라 버퍼를 비워야 할 수도 있습니다. 예를 들어 종료되는 애플리케이션에서 SDK를 사용하는 경우입니다.

telemetry.flush();
//Allow some time for flushing before shutting down
Thread.sleep(5000);

비고

Java SDK는 애플리케이션 종료 시 자동으로 플러시됩니다.

인증된 사용자

웹앱에서 사용자는 기본적으로 쿠키로 식별됩니다 . 사용자가 다른 컴퓨터 또는 브라우저에서 앱에 액세스하거나 쿠키를 삭제하는 경우 두 번 이상 계산될 수 있습니다.

사용자가 앱에 로그인하는 경우 브라우저 코드에서 인증된 사용자 ID를 설정하여 보다 정확한 개수를 얻을 수 있습니다. 사용자의 실제 로그인 이름을 사용할 필요는 없습니다. 이 ID는 해당 사용자에게 고유한 ID여야 합니다. 공백이나 문자를 포함해서는 안 됩니다 ,;=|.

또한 사용자 ID는 세션 쿠키에서 설정되고 서버로 전송됩니다. 서버 SDK가 설치된 경우 인증된 사용자 ID는 클라이언트 및 서버 원격 분석의 컨텍스트 속성의 일부로 전송됩니다. 그런 다음 필터링하고 검색할 수 있습니다.

앱이 사용자를 계정으로 그룹화하면 계정에 대한 식별자를 전달할 수도 있습니다. 동일한 문자 제한이 적용됩니다.

메트릭 탐색기에서 사용자, 인증된 계정사용자 계정을 계산하는 차트를 만들 수 있습니다.

특정 사용자 이름 및 계정을 사용하여 클라이언트 데이터 요소를 검색 할 수도 있습니다.

속성을 사용하여 데이터 필터링, 검색 및 분할

이벤트, 메트릭, 페이지 보기, 예외 및 기타 원격 분석 데이터에 속성 및 측정값을 연결할 수 있습니다.

속성 은 사용 보고서에서 원격 분석을 필터링하는 데 사용할 수 있는 문자열 값입니다. 예를 들어 앱에서 여러 게임을 제공하는 경우 각 이벤트에 게임의 이름을 연결하여 더 인기 있는 게임을 확인할 수 있습니다.

문자열 길이는 8,192로 제한됩니다. 큰 데이터 청크를 보내려면 .의 메시지 매개 변수 TrackTrace를 사용합니다.

메트릭은 그래픽으로 표시할 수 있는 숫자 값입니다. 예를 들어 게이머가 달성한 점수가 점진적으로 증가하는지 확인할 수 있습니다. 그래프는 이벤트와 함께 전송되는 속성으로 구분하여 다른 게임에 대해 별도의 그래프 또는 누적 그래프를 가져올 수 있습니다.

메트릭 값을 올바르게 표시하려면 0보다 크거나 같아야 합니다.

사용할 수 있는 속성, 속성 값 및 메트릭의 수에는 몇 가지 제한이 있습니다 .

Map<String, String> properties = new HashMap<String, String>();
properties.put("game", currentGame.getName());
properties.put("difficulty", currentGame.getDifficulty());

Map<String, Double> metrics = new HashMap<String, Double>();
metrics.put("Score", currentGame.getScore());
metrics.put("Opponents", currentGame.getOpponentCount());

telemetry.trackEvent("WinGame", properties, metrics);

중요합니다

속성에 개인 식별 정보를 기록하지 않도록 합니다.

경고

동일한 원격 분석 항목 인스턴스(event 이 예제에서는)를 여러 번 호출 Track*() 하는 데 다시 사용하지 마세요. 이러한 관행은 잘못된 구성으로 원격 분석이 전송되도록 할 수 있습니다.

Log Analytics의 사용자 지정 측정 및 속성

Log Analytics에서 사용자 지정 메트릭 및 속성은 각 원격 분석 레코드의 customMeasurementscustomDimensions 특성에 표시됩니다.

예를 들어 요청 원격 분석에 "game"이라는 속성을 추가하는 경우 이 쿼리는 "game"의 다양한 값 발생 수를 계산하고 사용자 지정 메트릭 "점수"의 평균을 표시합니다.

requests
| summarize sum(itemCount), avg(todouble(customMeasurements.score)) by tostring(customDimensions.game)

다음 사항을 확인합니다.

  • JSON에서 customDimensions 값을 추출할 때 동적 형식이 있으므로 이를 customMeasurements 또는 tostring로 캐스팅해야 합니다.
  • 샘플링 가능성을 고려하려면 sum(itemCount)를 사용하고 count()를 사용하지 마세요.

타이밍 이벤트

때로는 작업을 수행하는 데 걸리는 시간을 차트로 표시하려고 합니다. 예를 들어 사용자가 게임에서 선택을 고려하는 데 걸리는 시간을 알고 싶을 수 있습니다. 이 정보를 가져오려면 측정 매개 변수를 사용합니다.

long startTime = System.currentTimeMillis();

// Perform timed action

long endTime = System.currentTimeMillis();
Map<String, Double> metrics = new HashMap<>();
metrics.put("ProcessingTime", (double)endTime-startTime);

// Setup some properties
Map<String, String> properties = new HashMap<>();
properties.put("signalSource", currentSignalSource.getName());

// Send the event
telemetry.trackEvent("SignalProcessed", properties, metrics);

사용자 지정 원격 분석의 기본 속성

작성하는 일부 사용자 지정 이벤트에 대한 기본 속성 값을 설정하려면 인스턴스에서 TelemetryClient 설정합니다. 해당 클라이언트에서 전송되는 모든 원격 분석 항목에 연결됩니다.

import com.microsoft.applicationinsights.TelemetryClient;
import com.microsoft.applicationinsights.TelemetryContext;
...

TelemetryClient gameTelemetry = new TelemetryClient();
TelemetryContext context = gameTelemetry.getContext();
context.getProperties().put("Game", currentGame.Name);

gameTelemetry.TrackEvent("WinGame");

개별 원격 분석 호출은 속성 사전의 기본값을 재정의할 수 있습니다.

원격 분석 사용 안 함

원격 분석의 수집 및 전송을 동적으로 중지하고 시작 하려면 다음을 수행합니다.

telemetry.getConfiguration().setTrackingDisabled(true);

동적 연결 문자열

개발, 테스트 및 프로덕션 환경에서 원격 분석을 혼합하지 않도록 하려면 환경에 따라 별도의 Application Insights 리소스를 만들고 연결 문자열을 변경할 수 있습니다.

구성 파일에서 연결 문자열을 가져오는 대신 코드의 초기화 메서드에서 설정할 수 있습니다.

// Initialize once, e.g., at startup
TelemetryClient telemetry = new TelemetryClient();

// Prefer env var; falls back to hard-coded for illustration
String cs = System.getenv("APPLICATIONINSIGHTS_CONNECTION_STRING");
if (cs != null && !cs.isEmpty()) {
    telemetry.getContext().setConnectionString(cs);
}

TelemetryContext (원격 측정 컨텍스트)

TelemetryClient 에는 모든 원격 분석 데이터와 함께 전송되는 값이 포함된 Context 속성이 있습니다. 일반적으로 표준 원격 분석 모듈에 의해 설정되지만 직접 설정할 수도 있습니다. 다음은 그 예입니다.

telemetry.Context.Operation.Name = "MyOperationName";

이러한 값을 직접 설정하는 경우 값과 표준 값이 혼동되지 않도록 ApplicationInsights.config 관련 줄을 제거하는 것이 좋습니다.

  • 구성 요소: 앱 및 해당 버전입니다.
  • 디바이스: 앱이 실행 중인 디바이스에 대한 데이터입니다. 웹앱에서는 원격 분석이 전송되는 서버 또는 클라이언트 디바이스입니다.
  • InstrumentationKey: 원격 분석이 표시되는 Azure의 Application Insights 리소스입니다.
  • 위치: 디바이스의 지리적 위치입니다.
  • 작업: 웹앱에서 현재 HTTP 요청입니다. 다른 앱 유형에서는 이벤트를 그룹화하도록 이 값을 설정할 수 있습니다.
    • ID: 진단 검색에서 이벤트를 검사할 때 관련 항목을 찾을 수 있도록 서로 다른 이벤트의 상관 관계를 지정하는 생성된 값입니다.
    • 이름: 일반적으로 HTTP 요청의 URL인 식별자입니다.
    • SyntheticSource: null이 아니거나 비어 있지 않은 경우 요청의 원본이 로봇 또는 웹 테스트로 식별되었음을 나타내는 문자열입니다. 기본적으로 메트릭 탐색기의 계산에서 제외됩니다.
  • 세션: 사용자의 세션입니다. ID는 생성된 값으로 설정되며, 사용자가 잠시 동안 활성화되지 않은 경우 변경됩니다.
  • 사용자: 사용자 정보입니다.

Limits

애플리케이션별(즉, 계측 키별) 메트릭 및 이벤트의 수에 몇 가지 제한이 있습니다. 선택하는 가격 책정 계층에 따라 제한됩니다.

Resource 기본 제한 최대 한도 비고
일당 총 데이터 100GB 지원에 문의 데이터를 줄이기 위해 한도를 설정할 수 있습니다. 더 많은 데이터가 필요한 경우 포털에서 최대 1,000GB로 한도를 늘릴 수 있습니다. 1,000GB보다 큰 용량이 필요한 경우 AIDataCap@microsoft.com으로 이메일을 보내세요.
Throttling 32,000 이벤트/초 지원에 문의 제한은 분을 기준으로 측정됩니다.
데이터 보존 로그 30~730일 730일 이 리소스는 로그용입니다.
데이터 보존 메트릭 90일 90일 이 리소스는 메트릭 탐색기용입니다.
가용성 다단계 테스트 자세한 결과 보존 90일 90일 이 리소스는 각 단계의 자세한 결과를 제공합니다.
최대 원격 분석 항목 크기 64KB 64KB
일괄 처리당 최대 원격 분석 항목 수 64,000 64,000
속성 및 메트릭 이름 길이 백오십 백오십 형식 스키마를 참조하세요.
속성 값 문자열 길이 8,192 8,192 형식 스키마를 참조하세요.
추적 및 예외 메시지 길이 32,768 32,768 형식 스키마를 참조하세요.
Application Insights 리소스당 가용성 테스트 100 100
리소스 그룹당 가용성 테스트 수 800 800 Azure Resource Manager 참조
가용성 테스트 테스트당 최대 리디렉션 10 10
가용성 테스트 최소 테스트 빈도 300초 5분 미만의 사용자 지정 테스트 빈도에는 사용자 지정 TrackAvailability 구현이 필요합니다.
.NET Profiler스냅샷 디버거 데이터 보존 2주 지원에 문의 최대 보존 기간 제한은 6개월입니다.
하루에 전송되는 .NET Profiler 데이터 제한 없음 제한 없음
하루에 전송되는 스냅샷 디버거 데이터 모니터링되는 앱별로 하루에 스냅샷 30개 제한 없음 구성을 통해 애플리케이션별로 수집되는 스냅샷 수를 수정할 수 있습니다.

가격 책정 및 할당량에 대한 자세한 내용은 Application Insights 요금 청구를 참조하세요.

데이터 속도 제한에 도달하지 않도록 하려면 샘플링을 사용합니다.

데이터 보존 기간을 확인하려면 데이터 보존 및 개인 정보를 참조하세요.

다음 단계