Azure Application Insights의 로그 기반 및 사전 집계 메트릭

참고 항목

다음 설명서는 Application Insights 클래식 API를 사용합니다. Application Insights에 대한 장기 플랜은 OpenTelemetry를 사용하여 데이터를 수집하는 것입니다. 자세한 내용은 .NET, Node.js, Python 및 Java 애플리케이션에 대해 Azure Monitor OpenTelemetry 사용을 참조하세요.

이 문서에서는 로그를 기반으로 하는 “기존” Application Insights 메트릭과 사전 집계 메트릭 사이의 차이점을 설명합니다. Application Insights 사용자는 두 가지 유형의 메트릭을 모두 사용할 수 있습니다. 각 메트릭 유형은 모니터링 애플리케이션 상태, 진단 및 분석에서 고유한 값을 제공합니다. 애플리케이션을 계측하는 개발자는 특정 시나리오에 가장 적합한 메트릭 유형을 결정할 수 있습니다. 이러한 결정은 애플리케이션 크기, 원격 분석 예상량 및 메트릭 정밀도와 경고에 대한 비즈니스 요구 사항을 기반으로 합니다.

로그 기반 메트릭

이전에는 Application Insights의 애플리케이션 모니터링 원격 분석 데이터 모델에서 요청, 예외, 종속성 호출 및 페이지 보기와 같은 미리 정의된 몇 가지 이벤트 유형만을 기반으로 했습니다. 개발자는 SDK를 사용하여 명시적으로 SDK를 호출하는 코드를 작성하여 이러한 이벤트를 수동으로 내보낼 수 있습니다. 또는 자동 계측의 자동 이벤트 수집을 사용할 수 있습니다. 두 경우 모두에서 Application Insights 백 엔드는 수집된 모든 이벤트를 로그로 저장합니다. Azure Portal의 Application Insights 창은 로그의 이벤트 기반 데이터를 시각화하기 위한 분석 및 진단 도구로 작동합니다.

일련의 이벤트 전체를 유지하기 위해 로그를 사용하면 뛰어난 분석 및 진단 값을 제공할 수 있습니다. 예를 들어, 특정 URL에 대한 정확한 요청 수와, 이러한 호출을 수행한 고유 사용자 수를 파악할 수 있습니다. 또는 사용자 세션에 대한 예외와 종속성 호출을 포함하여 상세 진단 추적을 얻을 수 있습니다. 이 유형의 정보가 있으면 애플리케이션 상태 및 사용에 대한 가시성이 향상될 수 있습니다. 또한 앱 관련 문제를 진단하는 데 필요한 시간을 줄일 수 있습니다.

동시에 대량의 원격 분석을 생성하는 애플리케이션의 경우 전체 이벤트 집합을 수집하는 것이 실용적이지 않거나 불가능할 수도 있습니다. 이벤트 양이 너무 큰 경우 Application Insights에서 수집 및 저장되는 이벤트 수를 줄이는 몇 가지 원격 분석량 감소 기술을 구현합니다. 이러한 기술로 샘플링필터링이 있습니다. 그렇지만 저장된 이벤트 수가 줄면 그 뒤의 메트릭 정확도도 낮아지기 때문에 로그에 저장된 이벤트의 쿼리 시간 집계를 수행해야 합니다.

참고 항목

Application Insights에서 로그에 저장된 이벤트 및 측정값의 쿼리 시간 집계를 기준으로 하는 메트릭을 로그 기반 메트릭이라 합니다. 이러한 메트릭은 일반적으로 이벤트 속성의 많은 차원을 포함하고 있으므로 분석에 더 적합합니다. 이러한 메트릭의 정확도는 샘플링 및 필터링에 의해 부정적인 영향을 받습니다.

사전 집계 메트릭

로그 기반 메트릭 외에도 2018년 후반에 Application Insights 팀은 시계열에 최적화된 특수 리포지토리에 저장되는 메트릭의 공개 미리 보기를 제공했습니다. 이 새 메트릭은 이제 속성이 많은 개별 이벤트로 유지되지 않습니다. 대신 사전 집계 시계열로 저장되며 키 차원만 있습니다. 이 변경으로 인해 쿼리 시 새 메트릭이 더 우수해집니다. 데이터 검색이 더 빠르게 수행되며 필요한 컴퓨팅 성능이 더 적습니다. 이에 따라 메트릭 차원에 대한 거의 실시간 경고 및 응답성이 뛰어난 대시보드와 같은 새로운 시나리오가 가능해졌습니다.

Important

Application Insights에는 로그 기반 및 사전 집계 메트릭이 모두 있습니다. 두 메트릭 구분하기 위해 이제 Application Insights 사용자 환경에서 사전 집계 메트릭을 표준 메트릭(미리 보기)이라고 합니다. 이벤트의 기존 메트릭 이름은 로그 기반 메트릭으로 바뀌었습니다.

최신 SDK(.NET용 Application Insights 2.7 SDK 이상)에서는 수집 중에 메트릭을 사전 집계합니다. 이 프로세스는 기본적으로 보내는 표준 메트릭에 적용되므로 정확도는 샘플링 또는 필터링의 영향을 받지 않습니다. 또한 GetMetric을 사용하여 보내는 사용자 지정 메트릭에도 적용되므로 데이터 수집과 비용이 줄어듭니다.

사전 집계를 구현하지 않는 SDK(즉, 이전 버전의 Application Insights SDK 또는 브라우저 계측용 SDK)의 경우 Application Insights 백 엔드는 여전히 Application Insights 이벤트 수집 엔드포인트에서 받은 이벤트를 집계하여 새 메트릭을 채웁니다. 네트워크를 통해 전송되는 데이터의 감소된 양으로 인한 이점은 없지만, 사전 집계 메트릭을 계속 사용할 수 있으며 수집 중에 메트릭을 사전 집계하지 않는 SDK를 통해 실시간에 가까운 차원 경고의 더 나은 성능과 지원을 경험할 수 있습니다.

수집 엔드포인트는 수집 샘플링 전에 이벤트를 사전 집계합니다. 이러한 이유로 수집 샘플링은 애플리케이션에서 사용하는 SDK 버전에 관계없이 사전 집계 메트릭의 정확도에 영향을 미치지 않습니다.

SDK에서 지원하는 사전 집계 메트릭 테이블

현재 프로덕션 SDK 표준 메트릭(SDK 사전 집계) 사용자 지정 메트릭(SDK 사전 집계 사용 안 함) 사용자 지정 메트릭(SDK 사전 집계 사용)
.NET Core 및 .NET Framework 지원됨(V2.13.1 이상) TrackMetric을 통해 지원됨 GetMetric을 통해 지원됨(V2.7.2 이상)
Java 지원되지 않음 TrackMetric을 통해 지원됨 지원되지 않음
Node.js 지원됨(V2.0.0 이상) TrackMetric을 통해 지원됨 지원되지 않음
Python 지원되지 않음 지원됨 OpenCensus.stats를 통해 부분적으로 지원됨

참고 항목

OpenCensus.stats를 사용하는 Python용 메트릭 구현은 GetMetric과 다릅니다. 자세한 내용은 메트릭에 대한 Python 설명서를 참조하세요.

코드리스가 지원되는 사전 집계 메트릭 테이블

현재 프로덕션 SDK 표준 메트릭(SDK 사전 집계) 사용자 지정 메트릭(SDK 사전 집계 사용 안 함) 사용자 지정 메트릭(SDK 사전 집계 사용)
ASP.NET 지원됨1 지원되지 않음 지원되지 않음
ASP.NET Core 지원됨2 지원되지 않음 지원되지 않음
Java 지원되지 않음 지원되지 않음 지원됨
Node.js 지원되지 않음 지원되지 않음 지원되지 않음
  1. 가상 머신/가상 머신 확장 집합 및 온-프레미스의 ASP.NET 코드리스 연결은 차원 없이 표준 메트릭을 내보냅니다. Azure App Service의 경우에도 마찬가지이지만 수집 수준을 권장으로 설정해야 합니다. SDK는 모든 차원에 필요합니다.
  2. App Service에 대한 ASP.NET Core의 코드리스 연결은 차원 없는 표준 메트릭을 내보냅니다. 모든 차원에는 SDK가 필요합니다.

Application Insights 사용자 지정 메트릭에서 사전 집계 사용

사용자 지정 메트릭에 사전 집계를 사용할 수 있습니다. 두 가지 주요 혜택은 다음과 같습니다.

  • 사용자 지정 메트릭 차원에 대해 구성하고 경고하는 기능
  • SDK에서 Application Insights 컬렉션 엔드포인트로 전송되는 데이터 볼륨 줄이기

Application Insights SDK에서 사용자 지정 메트릭을 보내는 방법은 몇 가지가 있습니다. SDK 버전에서 GetMetric 및 TrackValue를 제공하는 경우 이러한 메서드는 사용자 지정 메트릭을 보내는 기본 방법입니다. 이 경우 사전 집계는 SDK 내부에서 수행됩니다. 이 방법은 Azure에 저장된 데이터의 양과 SDK에서 Application Insights로 전송되는 데이터의 양을 줄입니다. 그렇지 않은 경우 데이터 수집 중 메트릭 이벤트를 사전 집계하는 trackMetric 메서드를 사용합니다.

사용자 지정 메트릭 차원과 사전 집계

OpenTelemetry, trackMetric 또는 GetMetric and TrackValue API 호출을 사용하여 보내는 모든 메트릭은 자동으로 로그와 메트릭 저장소에 모두 저장됩니다. 이러한 메트릭은 Application Insights의 customMetrics 테이블 및 "azure.applicationinsights"라는 사용자 지정 메트릭 네임스페이스 아래의 메트릭 탐색기에서 찾을 수 있습니다. 사용자 지정 메트릭의 로그 기반 버전은 항상 모든 차원을 유지하지만, 사전 집계 메트릭 버전은 기본적으로 차원 없이 저장됩니다. 사용자 지정 메트릭의 차원 유지는 미리 보기 기능으로 사용량 및 예상 비용 탭의 Azure 메트릭 저장소로 사용자 지정 메트릭 보내기에서 차원 포함을 선택하여 설정할 수 있습니다.

Screenshot that shows usage and estimated costs.

할당량

사전 집계 메트릭은 시계열로 Azure Monitor에 저장됩니다. 사용자 지정 메트릭에 대한 Azure Monitor 할당량이 적용됩니다.

참고 항목

할당량을 초과하면 의도하지 않은 결과가 발생할 수 있습니다. Azure Monitor는 사용자의 구독 또는 지역에서 불안정해질 수 있습니다. 할당량 초과를 방지하는 방법을 알아보려면 디자인 제한 사항 및 고려 사항을 참조하세요.

사용자 지정 메트릭 차원의 수집이 기본적으로 꺼진 이유는 무엇인가요?

나중에 차원이 있는 사용자 지정 메트릭을 저장하면 Application Insights와 별도로 요금이 청구되므로 사용자 지정 메트릭 차원 수집은 기본적으로 꺼져 있습니다. 차원이 없는 사용자 지정 메트릭을 저장하면 무료로 유지됩니다(할당량까지). 공식 가격 책정 페이지에서 앞으로의 가격 책정 모델 변경에 대해 확인할 수 있습니다.

차트 만들기 및 로그 기반 메트릭/표준 사전 집계 메트릭 검색

Azure Monitor 메트릭 탐색기를 사용하여 사전 집계 및 로그 기반 메트릭에서 차트를 그리고 차트가 있는 대시보드를 작성합니다. 원하는 Application Insights 리소스가 선택되면 네임스페이스 선택기를 사용하여 표준(미리 보기) 메트릭 및 로그 기반 메트릭 간에 전환합니다. 사용자 지정 메트릭 네임스페이스를 선택할 수도 있습니다.

Screenshot that shows Metric namespace.

Application Insights 메트릭에 대한 가격 책정 모델

로그 기반 또는 사전 집계인지 여부와 관계없이 메트릭을 Application Insights로 수집하면 수집된 데이터의 크기에 따라 비용이 발생합니다. 자세한 내용은 Azure Monitor Logs 가격 책정 세부 정보를 참조하세요. 모든 차원을 포함한 사용자 지정 메트릭은 항상 Application Insights 로그 저장소에 저장됩니다. 또한 차원이 없는 사용자 지정 메트릭의 사전 집계 버전은 기본적으로 메트릭 저장소로 전달됩니다.

사전 집계 메트릭의 모든 차원을 메트릭 저장소에 저장하기 위해 사용자 지정 메트릭 차원의 경고를 사용하도록 설정 옵션을 선택하면 사용자 지정 메트릭 가격 책정에 따라 추가 비용이 발생할 수 있습니다.

다음 단계