Application Insights 로그 기반 메트릭

Application Insights 로그 기반 메트릭을 사용하여 모니터링되는 앱의 상태를 분석하고, 강력한 대시보드를 만들고, 경고를 구성할 수 있습니다. 두 종류의 메트릭이 있습니다.

‘표준 메트릭’은 수집 중에 미리 집계되므로 쿼리 시 성능이 향상됩니다. 대시보드를 위한 더 효과적인 선택이며 실시간 경고를 만들 수 있습니다. ‘로그 기반 메트릭’에는 더 많은 차원이 있으며 이로 인해 데이터 분석 및 임시 진단을 위한 우수한 옵션이 됩니다. 메트릭 탐색기에서 로그 기반 및 표준 메트릭 사이를 전환하려면 네임스페이스 선택기를 사용합니다.

이 문서의 쿼리 해석 및 사용

이 문서에서는 지원되는 집계 및 차원이 있는 메트릭을 나열합니다. 로그 기반 메트릭에 대한 세부 정보에는 기본 Kusto 쿼리 문이 포함됩니다. 편의를 위해 각 쿼리는 시간 세분성, 차트 종류 및 때로는 분할 차원에 기본값을 사용하므로 수정할 필요 없이 Log Analytics에서 쿼리를 사용하면 간소화됩니다.

메트릭 탐색기에서 동일한 메트릭을 그리는 경우 기본값이 없습니다. 쿼리는 차트 설정에 따라 동적으로 조정됩니다.

  • 선택한 시간 범위는 선택한 시간 범위 에서만 이벤트를 선택하는 추가 타임스탬프... 절로 변환됩니다. 예를 들어, 가장 최근 24시간 동안의 데이터를 보여 주는 차트의 경우 쿼리는 | where timestamp > ago(24 h)를 포함합니다.

  • 선택한 시간 세분성이 최종 summarize ... by bin(timestamp, [time grain]) 절에 배치됩니다.

  • 선택한 필터 차원은 추가 where 절로 변환됩니다.

  • 선택한 분할 차트 차원이 추가 요약 속성으로 변환됩니다. 예를 들어 차트를 위치별로 분할하고 5분 단위로 그리는 경우 요약 절이 요약됩니다. by bin(timestamp, 5 m), location.

참고 항목

Kusto 쿼리 언어를 사용하는 경우 먼저 수정하지 않고 Kusto 문을 복사하여 Log Analytics 쿼리 창에 붙여넣습니다. 기본 차트를 보려면 실행을 클릭합니다. 쿼리 언어의 구문을 이해하기 시작하면 작은 수정 작업을 시작하고 변경의 영향을 확인할 수 있습니다. 사용자 고유의 데이터를 탐색하면 Log AnalyticsAzure Monitor의 모든 기능을 실현할 수 있습니다.

가용성 메트릭

가용성 범주의 메트릭을 사용하면 전 세계 지점에서 관찰된 대로 웹 애플리케이션의 상태를 볼 수 있습니다. 이 범주의 메트릭 사용을 시작하도록 가용성 테스트를 구성합니다.

가용성(availabilityResults/availabilityPercentage)

가용성 메트릭은 문제를 감지하지 못한 웹 테스트 실행의 백분율을 보여 줍니다. 가능한 가장 낮은 값은 0으로, 모든 웹 테스트 실행이 실패했음을 나타냅니다. 값이 100이면 모든 웹 테스트 실행이 유효성 검사 조건을 통과했음을 의미합니다.

측정 단위 지원되는 집계 지원되는 차원
백분율 평균 실행 위치, 테스트 이름
availabilityResults 
| summarize sum(todouble(success == 1) * 100) / count() by bin(timestamp, 5m), location
| render timechart

가용성 테스트 기간(availabilityResults/duration)

‘가용성 테스트 기간’ 메트릭은 웹 테스트를 실행하는 데 걸린 시간을 보여 줍니다. 다단계 웹 테스트의 경우 메트릭은 모든 단계의 총 실행 시간을 반영합니다.

측정 단위 지원되는 집계 지원되는 차원
밀리초 평균, 최솟값, 최댓값 실행 위치, 테스트 이름, 테스트 결과
availabilityResults
| where notempty(duration)
| extend availabilityResult_duration = iif(itemType == 'availabilityResult', duration, todouble(''))
| summarize sum(availabilityResult_duration)/sum(itemCount) by bin(timestamp, 5m), location
| render timechart

가용성 테스트(availabilityResults/count)

가용성 테스트 메트릭은 Azure Monitor에서 실행하는 웹 테스트의 수를 반영합니다.

측정 단위 지원되는 집계 지원되는 차원
개수 개수 실행 위치, 테스트 이름, 테스트 결과
availabilityResults
| summarize sum(itemCount) by bin(timestamp, 5m)
| render timechart

브라우저 메트릭

브라우저 메트릭은 실제 최종 사용자 브라우저에서 Application Insights JavaScript SDK에 의해 수집됩니다. 웹앱에 대한 사용자의 경험에 대한 훌륭한 인사이트를 제공합니다. 브라우저 메트릭은 일반적으로 샘플링되지 않으므로 샘플링에 의해 왜곡될 수 있는 서버 쪽 메트릭에 비해 사용량 수치의 정밀도가 더 높습니다.

참고 항목

브라우저 메트릭을 수집하려면 Application Insights JavaScript SDK를 사용하여 애플리케이션을 계측해야 합니다.

브라우저 페이지 로드 시간(browserTimings/totalDuration)

사용자 요청부터 DOM까지의 시간, 스타일시트, 스크립트 및 이미지가 로드됩니다.

측정 단위 지원되는 집계 미리 집계된 차원
밀리초 평균, 최솟값, 최댓값 없음
browserTimings
| where notempty(totalDuration)
| extend _sum = totalDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart

클라이언트 처리 시간(browserTiming/processingDuration)

DOM이 로드될 때까지 문서의 마지막 바이트를 받는 시간입니다. 비동기 요청은 여전히 처리 중일 수 있습니다.

측정 단위 지원되는 집계 미리 집계된 차원
밀리초 평균, 최솟값, 최댓값 없음
browserTimings
| where notempty(processingDuration)
| extend _sum = processingDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum)/sum(_count) by bin(timestamp, 5m)
| render timechart

페이지 로드 네트워크 연결 시간(browserTimings/networkDuration)

사용자 요청과 네트워크 연결 사이의 시간입니다. DNS 조회 및 전송 연결을 포함합니다.

측정 단위 지원되는 집계 미리 집계된 차원
밀리초 평균, 최솟값, 최댓값 없음
browserTimings
| where notempty(networkDuration)
| extend _sum = networkDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart

응답 시간 수신(browserTimings/receiveDuration)

첫 번째 바이트와 마지막 바이트 사이의 시간 또는 연결이 끊어질 때까지의 시간입니다.

측정 단위 지원되는 집계 미리 집계된 차원
밀리초 평균, 최솟값, 최댓값 없음
browserTimings
| where notempty(receiveDuration)
| extend _sum = receiveDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart

요청 시간 보내기(browserTimings/sendDuration)

네트워크 연결과 첫 번째 바이트 수신 사이의 시간입니다.

측정 단위 지원되는 집계 미리 집계된 차원
밀리초 평균, 최솟값, 최댓값 없음
browserTimings
| where notempty(sendDuration)
| extend _sum = sendDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart

오류 메트릭

오류메트릭은 요청 처리, 종속성 호출 및 throw된 예외에 대한 문제를 표시합니다.

브라우저 예외(예외/브라우저)

이 메트릭은 브라우저에서 실행되는 애플리케이션 코드에서 throw된 예외 수를 반영합니다. trackException() Application Insights API 호출로 추적되는 예외만이 메트릭에 포함됩니다.

측정 단위 지원되는 집계 미리 집계된 차원 주의
개수 개수 없음 로그 기반 버전은 Sum 집계를 사용합니다.
exceptions
| where notempty(client_Browser)
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

종속성 호출 실패(dependencies/failed)

실패한 종속성 호출 수입니다.

측정 단위 지원되는 집계 미리 집계된 차원 주의
개수 개수 없음 로그 기반 버전은 Sum 집계를 사용합니다.
dependencies
| where success == 'False'
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

예외(예외/개수)

Application Insights에 대한 예외를 기록할 때마다 SDK의 trackException() method에 대한 호출이 발생합니다. 예외 메트릭에는 로깅된 예외의 수가 표시됩니다.

측정 단위 지원되는 집계 미리 집계된 차원 주의
개수 개수 클라우드 역할 이름, 클라우드 역할 인스턴스, 디바이스 유형 로그 기반 버전은 Sum 집계를 사용합니다.
exceptions
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

실패한 요청(요청/실패)

실패한 것으로 표시된 추적된 서버 요청의 수입니다. 기본적으로 Application Insights SDK는 HTTP 응답 코드 5xx 또는 4xx를 반환한 각 서버 요청을 실패한 요청으로 자동으로 표시합니다. 사용자 지정 원격 분석 이니셜라이저에서 요청 원격 분석 항목의 성공 속성을 수정하여 이 논리를 사용자 지정할 수 있습니다.

측정 단위 지원되는 집계 미리 집계된 차원 주의
개수 개수 클라우드 역할 인스턴스, 클라우드 역할 이름, 실제 또는 가상 트래픽, 요청 성능, 응답 코드 로그 기반 버전은 Sum 집계를 사용합니다.
requests
| where success == 'False'
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

서버 예외(exceptions/server)

이 메트릭은 서버 예외 수를 보여 줍니다.

측정 단위 지원되는 집계 미리 집계된 차원 주의
개수 개수 클라우드 역할 이름, 클라우드 역할 인스턴스 로그 기반 버전은 Sum 집계를 사용합니다.
exceptions
| where isempty(client_Browser)
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

성능 카운터

성능 카운터 범주의 메트릭을 사용하여 Application Insights에 의해 수집된 시스템 성능 카운터에 액세스합니다.

사용 가능한 메모리(performanceCounters/availableMemory)

performanceCounters
| where ((category == "Memory" and counter == "Available Bytes") or name == "availableMemory")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

예외율(performanceCounters/exceptionRate)

performanceCounters
| where ((category == ".NET CLR Exceptions" and counter == "# of Exceps Thrown / sec") or name == "exceptionRate")
| extend performanceCounter_value = iif(itemType == 'performanceCounter',value,todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

HTTP 요청 실행 시간(performanceCounters/requestExecutionTime)

performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Request Execution Time") or name == "requestExecutionTime")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

HTTP 요청 속도(performanceCounters/requestsPerSecond)

performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Requests/Sec") or name == "requestsPerSecond")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

애플리케이션 큐의 HTTP 요청(performanceCounters/requestsInQueue)

performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Requests In Application Queue") or name == "requestsInQueue")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

CPU 프로세스(performanceCounters/processCpuPercentage)

메트릭은 모니터링되는 앱을 호스팅하는 프로세스에서 사용되는 총 프로세서 용량의 양을 보여 줍니다.

측정 단위 지원되는 집계 지원되는 차원
백분율 평균, 최솟값, 최댓값 클라우드 역할 인스턴스
performanceCounters
| where ((category == "Process" and counter == "% Processor Time Normalized") or name == "processCpuPercentage")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

참고 항목

메트릭 범위는 0에서 100 * n 사이이며, 여기서 n은 사용 가능한 CPU 코어 수입니다. 예를 들어, 메트릭 값 200%는 2개의 CPU 코어의 전체 사용률 또는 4개의 CPU 코어의 절반 사용률 등을 나타낼 수 있습니다. 프로세스 CPU 정규화는 많은 SDK에서 수집하는 대체 메트릭으로, 동일한 값을 나타내지만 사용 가능한 CPU 코어 수로 나눕니다. 따라서 프로세스 CPU 정규화 메트릭의 범위는 0~100입니다.

프로세스 IO 속도(performanceCounters/processIOBytesPerSecond)

측정 단위 지원되는 집계 지원되는 차원
초당 바이트 수 평균, 최솟값, 최댓값 클라우드 역할 인스턴스
performanceCounters
| where ((category == "Process" and counter == "IO Data Bytes/sec") or name == "processIOBytesPerSecond")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

프로세스 프라이빗 바이트(performanceCounters/processPrivateBytes)

공유되지 않는 메모리 중 모니터링되는 프로세스가 해당 데이터에 할당한 메모리의 양입니다.

측정 단위 지원되는 집계 지원되는 차원
바이트 평균, 최솟값, 최댓값 클라우드 역할 인스턴스
performanceCounters
| where ((category == "Process" and counter == "Private Bytes") or name == "processPrivateBytes")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

프로세서 시간(performanceCounters/processorCpuPercentage)

모니터링되는 서버 인스턴스에서 실행 중인 ‘모든’ 프로세스의 CPU 소비량입니다.

측정 단위 지원되는 집계 지원되는 차원
백분율 평균, 최솟값, 최댓값 클라우드 역할 인스턴스

참고 항목

Azure 앱 Services에서 호스트되는 애플리케이션에는 프로세서 시간 메트릭을 사용할 수 없습니다. App Services에서 호스트되는 웹 애플리케이션의 CPU 사용률을 추적하려면 프로세스 CPU 메트릭을 사용하세요.

performanceCounters
| where ((category == "Processor" and counter == "% Processor Time") or name == "processorCpuPercentage")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart

서버 메트릭

종속성 호출(종속성/개수)

이 메트릭은 종속성 호출 수와 관련이 있습니다.

dependencies
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

종속성 기간(dependencies/duration)

이 메트릭은 종속성 호출의 기간을 나타냅니다.

dependencies
| where notempty(duration)
| extend dependency_duration = iif(itemType == 'dependency',duration,todouble(''))
| extend _sum = dependency_duration
| extend _count = itemCount
| extend _sum = _sum*_count
| summarize sum(_sum)/sum(_count) by bin(timestamp, 1m)
| render timechart

서버 요청(요청/수)

이 메트릭은 웹 애플리케이션에서 수신한 들어오는 서버 요청 수를 반영합니다.

requests
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart

서버 응답 시간(요청/기간)

이 메트릭은 서버가 들어오는 요청을 처리하는 데 걸린 시간을 반영합니다.

requests
| where notempty(duration)
| extend request_duration = iif(itemType == 'request', duration, todouble(''))
| extend _sum = request_duration
| extend _count = itemCount
| extend _sum = _sum*_count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 1m)
| render timechart

사용량 메트릭

페이지 보기 로드 시간(pageViews/duration)

이 메트릭은 PageView 이벤트가 로드되는 데 걸린 시간을 나타냅니다.

pageViews
| where notempty(duration)
| extend pageView_duration = iif(itemType == 'pageView', duration, todouble(''))
| extend _sum = pageView_duration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render barchart

페이지 보기(pageViews/count)

TrackPageView() Application Insights API로 기록된 페이지 보기 이벤트의 수입니다.

pageViews
| summarize sum(itemCount) by bin(timestamp, 1h)
| render barchart

세션(sessions/count)

이 메트릭은 고유한 세션 ID의 수를 나타냅니다.

union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(session_Id)
| summarize dcount(session_Id) by bin(timestamp, 1h)
| render barchart

추적(추적/개수)

TrackTrace() Application Insights API 호출로 기록된 추적 문의 수입니다.

traces
| summarize sum(itemCount) by bin(timestamp, 1h)
| render barchart

사용자(사용자/수)

애플리케이션에 액세스한 고유 사용자의 수입니다. 이 메트릭의 정확도는 원격 분석 샘플링 및 필터링 사용에 상당한 영향을 받을 수 있습니다.

union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(user_Id)
| summarize dcount(user_Id) by bin(timestamp, 1h)
| render barchart

사용자, 인증됨(사용자/인증됨)

애플리케이션에 인증된 고유 사용자의 수입니다.

union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(user_AuthenticatedId)
| summarize dcount(user_AuthenticatedId) by bin(timestamp, 1h)
| render barchart