Azure App Service에서 앱 모니터링

Azure App ServiceAzure Portal의 웹앱, 모바일 앱 및 API 앱에 대해 기본 제공 모니터링 기능을 제공합니다.

Azure Portal에서 앱 및 App Service 플랜에 대한 할당량메트릭을 검토하고, 경고자동 스케일링 규칙 기반 메트릭을 설정할 수 있습니다.

할당량 이해

App Service를 호스트로 사용하는 앱에는 사용 가능한 리소스에 대한 특정 한도가 적용됩니다. 이러한 한도는 해당 앱과 연결된 App Service 요금제로 정의됩니다.

참고 항목

App Service 체험 및 공유(미리 보기) 서비스 요금제는 다른 App Service 앱과 동일한 Azure 가상 머신에서 실행되는 기본 계층입니다. 일부 앱은 다른 고객에게 속할 수 있습니다. 이러한 계층은 개발/테스트용으로만 사용할 수 있습니다.

앱이 무료 또는 공유 계획에 호스트되는 경우 앱에서 사용할 수 있는 리소스에 대한 한도는 할당량으로 정의됩니다.

앱이 기본, 표준 또는 프리미엄 계획에 호스팅되는 경우 사용할 수 있는 리소스에 대한 한도는 크기(작음, 중간, 큼) 및 App Service 계획의 인스턴스 수(1, 2, 3 등)로 설정됩니다.

무료 또는 공유 앱의 할당량은 다음과 같습니다.

할당량 설명
CPU(짧음) 5분 간격으로 이 앱에 허용되는 CPU의 양입니다. 이 할당량은 5분마다 재설정됩니다.
CPU(일) 하루에 이 앱에 허용되는 총 CPU 양입니다. 이 할당량은 자정 UTC에 24시간마다 재설정됩니다.
메모리 이 앱에 허용되는 총 메모리 양입니다.
대역폭 하루에 이 앱에 허용되는 나가는 총 대역폭 양입니다. 이 할당량은 자정 UTC에 24시간마다 재설정됩니다.
파일 시스템 허용되는 총 스토리지 양입니다.

기본, 표준프리미엄 플랜에 호스트되는 앱에 적용 가능한 유일한 할당량은 파일 시스템입니다.

다양한 App Service SKU에 사용할 수 있는 특정 할당량, 한도 및 기능에 대한 자세한 내용은 Azure 구독 서비스 제한을 참조하세요.

할당량 적용

앱이 CPU(짧음), CPU(일), 대역폭 할당량을 초과하는 경우 할당량이 재설정될 때까지 앱이 중지됩니다. 이 시간 중에는 들어오는 모든 요청에서 HTTP 403 오류가 발생합니다.

403 오류 메시지

앱 메모리 할당량을 초과하면 앱이 일시적으로 중지됩니다.

파일 시스템 할당량을 초과하는 경우 모든 쓰기 작업이 실패합니다. 쓰기 작업 실패에는 로그에 대한 쓰기가 포함됩니다.

App Service 계획을 업그레이드하여 앱에서 할당량을 늘리거나 제거할 수 있습니다.

메트릭 이해

Important

메트릭 집계와의 혼동을 피하기 위해 평균 응답 시간은 사용되지 않습니다. 응답 시간으로 대체하여 사용합니다.

참고 항목

앱에 대한 메트릭에는 앱의 SCM 사이트(Kudu)에 대한 요청이 포함됩니다. 관련 요청에는 Kudu를 사용하여 사이트의 로그 스트림을 보기 위한 요청이 포함됩니다. 로그 스트림 요청은 몇 분에 걸쳐 있을 수 있어 요청 시간 메트릭에 영향을 줍니다. 자동 스케일링 논리에서 해당 메트릭을 사용하는 경우 사용자는 해당 관계를 알고 있어야 합니다.

HTTP 서버 오류는 백 엔드 서비스(앱을 호스트하는 작업자)에 도달하는 요청만 기록합니다. FrontEnd에서 요청이 실패하는 경우 HTTP 서버 오류로 기록되지 않습니다. 상태 검사 기능/Application Insights 가용성 테스트는 모니터링에서 외부에 사용할 수 있습니다.

메트릭은 앱 또는 App Service 계획의 동작에 대한 정보를 제공합니다.

앱에 사용 가능한 메트릭은 다음과 같습니다.

메트릭 설명
응답 시간 앱에서 요청을 처리하는 데 걸린 소요 시간(초)입니다.
평균 응답 시간(사용되지 않음) 앱에서 요청을 처리하는 데 걸린 평균 소요 시간(초)
평균 메모리 작업 집합 앱에 사용된 메가바이트(MiB) 크기의 평균 메모리 양입니다.
연결 샌드박스(w3wp.exe 및 해당 자식 프로세스)에 있는 바인딩된 소켓의 수입니다. 바인딩된 소켓은 bind()/connect() API를 호출하여 만들어지며, 해당 소켓이 CloseHandle()/closesocket()으로 닫힐 때까지 유지됩니다.
CPU 시간 앱에서 사용한 CPU의 양(초)입니다. 이 메트릭에 대한 자세한 내용은 CPU 시간 및 CPU 백분율을 참조하세요.
현재 어셈블리 수 이 애플리케이션의 모든 AppDomains에 로드된 어셈블리의 현재 개수입니다.
데이터 입력 앱에서 사용한 들어오는 대역폭 양(MiB)입니다.
데이터 출력 앱에서 사용한 나가는 대역폭 양(MiB)입니다.
파일 시스템 사용량 스토리지에서 공유하는 사용량 크기(바이트)입니다.
Gen 0 가비지 수집 앱 프로세스가 시작된 이후 0세대 개체가 가비지 수집된 횟수입니다. 상위 세대 GC에는 모든 하위 세대 GC가 포함됩니다.
Gen 1 가비지 수집 앱 프로세스가 시작된 이후 1세대 개체가 가비지 수집된 횟수입니다. 상위 세대 GC에는 모든 하위 세대 GC가 포함됩니다.
Gen 2 가비지 수집 앱 프로세스가 시작된 이후 2세대 개체가 가비지 수집된 횟수입니다.
핸들 수 앱 프로세스에서 현재 열려 있는 총 핸들 수입니다.
상태 검사 애플리케이션의 인스턴스에 걸친 App Service Plan의 평균 상태입니다.
Http 2xx 결과로 HTTP 상태 코드가 나타나는 요청의 수가 ≥ 200, < 300입니다.
Http 3xx 결과로 HTTP 상태 코드가 나타나는 요청의 수가 ≥ 300, < 400입니다.
Http 401 결과로 HTTP 401 상태 코드가 나타나는 요청의 수입니다.
Http 403 결과로 HTTP 403 상태 코드가 나타나는 요청의 수입니다.
Http 404 결과로 HTTP 404 상태 코드가 나타나는 요청의 수입니다.
Http 406 결과로 HTTP 406 상태 코드가 나타나는 요청의 수입니다.
Http 4xx 결과로 HTTP 상태 코드가 나타나는 요청의 수가 ≥ 400, < 500입니다.
Http 서버 오류 결과로 HTTP 상태 코드가 나타나는 요청의 수가 ≥ 500, < 600입니다.
초당 IO 기타 바이트 수 앱 프로세스가 컨트롤 작업과 같이 데이터와 무관한 I/O 작업에 대해 바이트를 실행하는 속도입니다.
초당 IO 기타 작업 수 앱 프로세스가 읽기 또는 쓰기 작업이 아닌 I/O 작업을 실행하는 속도입니다.
초당 IO 읽기 바이트 수 앱 프로세스에서 I/O 작업의 바이트를 읽는 속도입니다.
초당 IO 읽기 작업 수 앱 프로세스에서 읽기 I/O 작업을 실행하는 속도입니다.
초당 IO 쓰기 바이트 수 앱 프로세스에서 I/O 작업에 바이트를 쓰는 속도입니다.
초당 IO 쓰기 작업 수 앱 프로세스에서 쓰기 I/O 작업을 실행하는 속도입니다.
메모리 작업 집합 현재 앱에 사용된 메모리 양(MiB)입니다.
전용 바이트 전용 바이트는 앱 프로세스가 할당하여 다른 프로세스와는 공유할 수 없는 메모리의 현재 크기(바이트)입니다.
요청 결과 HTTP 상태 코드에 관계 없이 총 요청 수입니다.
애플리케이션 큐의 요청 수 애플리케이션 요청 큐의 요청 수입니다.
스레드 수 앱 프로세스에서 현재 활성 상태인 스레드의 수입니다.
총 앱 도메인 수 이 애플리케이션에 로드된 AppDomains의 현재 수입니다.
언로드된 총 앱 도메인 수 애플리케이션이 시작된 이후 언로드된 총 AppDomains 수입니다.

App Service 계획에 대해 사용 가능한 메트릭은 다음과 같습니다.

참고 항목

App Service 계획 메트릭은 기본, 표준, 프리미엄격리 계층의 플랜에만 사용할 수 있습니다.

메트릭 설명
CPU 비율 계획의 모든 인스턴스 간에 사용된 평균 CPU입니다.
메모리 비율 계획의 모든 인스턴스 간에 사용된 평균 메모리입니다.
데이터 입력 계획의 모든 인스턴스 간에 사용된 평균 들어오는 대역폭입니다.
데이터 출력 계획의 모든 인스턴스 간에 사용된 평균 나가는 대역폭입니다.
디스크 큐 길이 스토리지에 대기 중인 평균 읽기 및 쓰기 요청 수입니다. 디스크 큐 길이 값이 높으면 과도한 디스크 I/O로 인해 앱의 속도가 느려질 수 있음을 나타냅니다.
Http 큐 길이 처리하기 전에 큐에 배치해야 하는 평균 HTTP 요청 수입니다. HTTP 큐 길이 값이 높거나 증가하면 계획이 과부하 상태에 있음을 나타냅니다.

CPU 시간 및 CPU 비율

CPU 사용량을 반영하는 두 가지 메트릭이 있습니다.

CPU 타임: 해당 할당량 중 하나가 앱에서 사용한 CPU 분으로 정의되므로 체험 또는 공유 플랜으로 호스트된 앱에 유용합니다.

CPU 백분율: 스케일 아웃할 수 있기 때문에 기본, 표준, 프리미엄 계획에서 호스트되는 앱에 유용합니다. CPU 백분율은 모든 인스턴스에서 전반적인 사용량을 나타내는 좋은 지표입니다.

메트릭 세분성 및 보존 정책

앱 및 앱 서비스 플랜에 대한 메트릭은 서비스에 따라 로그 및 집계되고 다음 규칙에 따라 보존됩니다.

Azure Portal에서 할당량 및 메트릭을 모니터링합니다.

앱에 영향을 주는 다양한 할당량 및 메트릭 상태를 검토하려면 Azure Portal로 이동합니다.

Azure Portal의 할당량 차트

할당량을 찾으려면 설정>할당량을 선택합니다. 차트에서 다음을 검토할 수 있습니다.

  1. 할당량 이름
  2. 재설정 간격
  3. 현재 한도
  4. 현재 값

Azure Portal의 메트릭 차트 리소스 개요 페이지에서 직접 메트릭에 액세스할 수 있습니다. 여기에서는 일부 앱 메트릭을 나타내는 차트를 보여 줍니다.

해당 차트 중 하나를 클릭하면 사용자 지정 차트를 만들고 다양한 메트릭을 쿼리할 수 있는 메트릭 뷰로 이동합니다.

메트릭에 대한 자세한 내용은 서비스 메트릭 모니터링을 참조하세요.

경고 및 자동 크기 조정

앱 또는 App Service 계획의 메트릭은 경고에 연결할 수 있습니다. 자세한 내용은 경고 알림 받기를 참조하세요.

기본, 표준 또는 프리미엄 App Service 플랜에 호스트된 App Service 앱은 자동 스케일링 기능을 지원합니다. 자동 크기 조정을 사용하여 App Service 계획 메트릭을 모니터링하는 규칙을 구성할 수 있습니다. 규칙은 필요에 따라 추가 리소스를 제공할 수 있도록 인스턴스 수를 눌리거나 줄일 수 있습니다. 규칙을 사용하면 앱이 과도하게 프로비전될 때 비용을 절감할 수도 있습니다.

자동 크기 조정에 대한 자세한 내용은 크기 조정 방법Azure Monitor 자동 크기 조정에 대한 모범 사례를 참조하세요.