메트릭 및 경고를 사용하여 Azure SQL Database 모니터링

적용 대상:Azure SQL Database

Azure Monitor 메트릭을 사용하여 데이터베이스 및 탄력적 풀 리소스 사용량 및 상태를 모니터링할 수 있습니다. 메트릭 값이 잠재적인 문제를 나타낼 때 경고를 사용하여 알림을 보낼 수 있습니다.

메트릭

메트릭은 일정한 시간 간격으로 측정되는 일련의 숫자 값으로, count, percent, bytes 등과 같은 단위를 사용하는 경우가 많습니다. 메트릭의 특성에 따라 total, count, average, minimum, maximum 등의 집계를 사용하여 일정 기간 동안의 메트릭 값을 계산할 수 있습니다. 일부 메트릭을 차원별로 분할할 수 있습니다. 각 차원은 숫자 값에 대한 추가 컨텍스트를 제공합니다.

사용 가능한 Azure SQL Database 메트릭의 예는 CPU percentage, Data space used, Deadlocks, Tempdb Percent Log Used 등이 있습니다.

Azure SQL Database에서 사용 가능한 모든 메트릭은 데이터베이스 메트릭탄력적 풀 메트릭을 참조하세요.

참고 항목

일부 메트릭은 특정 유형의 데이터베이스 또는 탄력적 풀에만 적용됩니다. 각 메트릭에 대한 설명에는 해당 메트릭이 특정 데이터베이스 또는 탄력적 풀 유형(예: vCore, 하이퍼스케일, 서버리스 등)에만 사용하도록 제한되어 있는지 여부가 언급되어 있습니다.

Azure SQL Database 포털에서 일반적으로 사용되는 몇 가지 메트릭은 개요 페이지의 모니터링 탭에 차트로 표시됩니다. 이를 통해 데이터베이스 또는 탄력적 풀의 리소스 사용량 및 상태를 한눈에 평가할 수 있습니다.

Azure SQL Database 개요 페이지에 표시된 메트릭 차트의 Azure Portal 스크린샷

주요 메트릭 아래에서 모든 메트릭 보기 또는 차트 내의 아무 곳이나 선택하여 메트릭 탐색기를 엽니다. 메트릭 페이지에서 데이터베이스 또는 탄력적 풀 리소스에 사용할 수 있는 다른 모든 메트릭을 볼 수 있습니다. 메트릭 탐색기에서 차트의 시간 범위, 세분성 및 집계 유형을 변경하고, 차트 유형을 변경하고, 범위를 확장하여 다른 Azure 리소스의 메트릭을 포함하고, 경고 규칙을 만들 수 있습니다. 리소스 메뉴의 모니터링 아래에서 메트릭 메뉴 항목을 선택하여 메트릭 탐색기를 열 수도 있습니다.

메트릭을 사용하여 데이터베이스 및 탄력적 풀 모니터링

메트릭을 사용하여 데이터베이스 및 탄력적 풀 리소스 사용량 및 상태를 모니터링할 수 있습니다. 이렇게 시작할 수 있는 작업의 예는 다음과 같습니다.

  • 애플리케이션 워크로드에 맞게 데이터베이스 또는 탄력적 풀의 크기를 조정합니다.
  • 리소스 사용량이 점진적으로 증가하는 것을 감지하고 데이터베이스 또는 탄력적 풀을 사전에 스케일 업합니다.
  • 성능 문제 감지 및 해결

다음 표에서는 Azure SQL Database에서 일반적으로 사용되는 메트릭에 대해 설명합니다.

메트릭 이름 메트릭 ID 설명
CPU 비율 cpu_percent 이 메트릭은 데이터베이스 또는 탄력적 풀의 사용자 워크로드 제한에 대한 CPU 사용량을 백분율로 표시합니다. 자세한 내용은 사용자 워크로드 및 내부 프로세스별 리소스 사용량을 참조하세요.
SQL 인스턴스 CPU 비율 sql_instance_cpu_percent 이 메트릭은 사용자 및 시스템 워크로드의 총 CPU 사용량을 백분율로 표시합니다. 이 메트릭과 CPU 비율 메트릭은 서로 다른 척도로 측정되므로 서로 직접 비교할 수 없습니다. 자세한 내용은 사용자 워크로드 및 내부 프로세스별 리소스 사용량을 참조하세요.
데이터 IO 비율 physical_data_read_percent 이 메트릭은 데이터베이스 또는 탄력적 풀의 사용자 워크로드 제한에 대한 데이터 파일 IO 사용량을 백분율로 표시합니다. 자세한 내용은 데이터 IO 거버넌스를 참조하세요.
로그 IO 비율 log_write_percent 이 메트릭은 데이터베이스 또는 탄력적 풀의 사용자 워크로드 제한에 대한 트랜잭션 로그 쓰기 처리량의 사용량을 백분율로 표시합니다. 자세한 내용은 트랜잭션 로그 속도 거버넌스를 참조하세요.
작업자 백분율 workers_percent 이 메트릭은 데이터베이스 또는 탄력적 풀의 사용자 워크로드 제한에 대한 작업자 스레드 사용량을 백분율로 표시합니다.
DTU 백분율 dtu_consumption_percent 이 메트릭은 데이터베이스 또는 탄력적 풀의 사용자 워크로드 제한에 대한 DTU 사용량을 백분율로 표시합니다. DTU 비율CPU 비율, 데이터 IO 비율, 로그 IO 비율의 서로 다른 세 가지 메트릭에서 파생됩니다. 언제든지 DTU 백분율은 이 세 가지 메트릭 중 가장 높은 값과 일치합니다.
사용된 CPU cpu_used 이 메트릭은 데이터베이스 또는 탄력적 풀의 사용자 워크로드 제한에 대한 CPU 사용량을 vCore 수로 표시합니다. 자세한 내용은 Azure SQL Database의 높은 CPU 진단 및 문제 해결을 참조하세요.
사용된 DTU dtu_used 이 메트릭은 데이터베이스 또는 탄력적 풀에서 사용하는 DTU 수를 표시합니다.
청구된 앱 CPU app_cpu_billed 서버리스 데이터베이스의 경우 이 메트릭은 청구된 컴퓨팅 양(CPU 및 메모리)을 vCore 초로 표시합니다. 자세한 내용은 서버리스 컴퓨팅 계층의 청구를 참조하세요.
앱 CPU 비율 app_cpu_percent 서버리스 데이터베이스의 경우 이 메트릭은 앱 패키지 최대 vCore 제한에 대한 CPU 사용량을 백분율로 표시합니다. 자세한 내용은 서버리스 컴퓨팅 계층의 모니터링을 참조하세요.
앱 메모리 백분율 app_memory_percent 서버리스 데이터베이스의 경우 이 메트릭은 앱 패키지 최대 메모리 제한에 대한 메모리 사용량을 백분율로 표시합니다. 자세한 내용은 서버리스 컴퓨팅 계층의 모니터링을 참조하세요.
세션 수 sessions_count 이 메트릭은 데이터베이스 또는 탄력적 풀에 대해 설정된 사용자 세션의 수를 보여 줍니다.
사용된 데이터 공간 storage 데이터베이스의 경우 이 메트릭은 데이터베이스의 데이터 파일에 사용되는 스토리지 공간의 양을 보여 줍니다.
사용된 데이터 공간 storage_used 탄력적 풀의 경우 이 메트릭은 탄력적 풀에 있는 모든 데이터베이스의 데이터 파일에 사용되는 스토리지 공간의 양을 보여 줍니다.
할당된 데이터 공간 allocated_data_storage 이 메트릭은 데이터베이스의 데이터 파일 또는 탄력적 풀에 있는 모든 데이터베이스의 데이터 파일이 차지하는 스토리지 공간의 양을 보여 줍니다. 데이터 파일에는 빈 공간이 포함될 수 있습니다. 이 때문에 할당된 데이터 공간은 동일한 데이터베이스 또는 탄력적 풀에서 사용된 데이터 공간보다 높은 경우가 많습니다. 자세한 내용은 Azure SQL Database의 데이터베이스 파일 공간 관리를 참조하세요.
사용된 데이터 공간 백분율 storage_percent 데이터베이스의 경우 이 메트릭은 데이터베이스의 데이터 파일에 사용되는 스토리지 공간의 양을 데이터베이스의 데이터 크기 제한에 대해 보여 줍니다. 탄력적 풀의 경우 탄력적 풀에 있는 모든 데이터베이스의 데이터 파일에 사용된 스토리지 공간의 양을 탄력적 풀의 데이터 크기 제한에 대한 백분율로 표시합니다. 데이터베이스 또는 탄력적 풀의 데이터 크기 제한은 최대 데이터 크기 제한보다 낮게 구성될 수 있습니다. 최대 데이터 크기 제한을 확인하려면 vCore 데이터베이스, vCore 탄력적 풀, DTU 데이터베이스, DTU 탄력적 풀에 대한 리소스 제한을 참조하세요.
할당된 데이터 공간 백분율 allocated_data_storage_percent 탄력적 풀의 경우 이 메트릭은 탄력적 풀에 있는 모든 데이터베이스의 데이터 파일이 차지하는 스토리지 공간의 양을 탄력적 풀의 데이터 크기 제한에 대한 백분율로 표시합니다.
사용된 로그 Tempdb 백분율 tempdb_log_used_percent 이 메트릭은 tempdb 데이터베이스에서 트랜잭션 로그 공간의 사용량을 최대 로그 크기에 대한 백분율로 표시합니다. 자세한 내용은 Azure SQL Database의 tempdb를 참조하세요.
성공한 연결 connection_successful 이 메트릭은 데이터베이스에 성공적으로 연결된 연결의 수를 보여 줍니다. 이 메트릭은 특정 암호화 프로토콜 버전을 사용하거나 특정 클라이언트 드라이버를 사용하는 연결 수를 확인하기 위해 두 개의 차원(SslProtocolValidatedDriverNameAndVersion)으로 분할할 수 있습니다.
실패한 연결: 시스템 오류 connection_failed 이 메트릭은 내부 서비스 오류로 인해 실패한 데이터베이스로의 연결 시도 횟수를 보여 줍니다. 대부분의 경우 이러한 오류는 일시적입니다. 이 메트릭은 특정 오류나 특정 클라이언트 드라이버로 인해 실패한 연결 시도의 횟수를 확인하기 위해 두 개의 차원(ErrorValidatedDriverNameAndVersion)으로 분할할 수 있습니다.
실패한 연결: 사용자 오류 connection_failed_user_error 이 메트릭은 잘못된 비밀번호 또는 방화벽에 의해 차단된 연결과 같이 사용자가 수정할 수 있는 오류로 인해 실패한 데이터베이스로의 연결 시도 횟수를 보여 줍니다. 이 메트릭은 특정 오류나 특정 클라이언트 드라이버로 인해 실패한 연결 시도의 횟수를 확인하기 위해 두 개의 차원(ErrorValidatedDriverNameAndVersion)으로 분할할 수 있습니다.
교착 상태 deadlock 이 메트릭은 데이터베이스에서의 교착 상태 수를 보여 줍니다.

경고

경고 규칙을 만들어 하나의 메트릭 또는 여러 메트릭 값이 예상 범위를 벗어날 때 알림을 받을 수 있습니다.

필요에 맞게 여러 가지 방법으로 경고 규칙의 범위를 설정할 수 있습니다. 예를 들어 경고 규칙 범위를 다음으로 설정할 수 있습니다.

  • 단일 데이터베이스
  • 탄력적 풀
  • 리소스 그룹의 모든 데이터베이스 또는 탄력적 풀
  • Azure 지역 내 구독의 모든 데이터베이스 또는 탄력적 풀
  • Azure 지역 내 구독의 모든 데이터베이스 또는 탄력적 풀

경고 규칙은 조회 기간 동안 집계된 메트릭 값을 주기적으로 평가하여 임계값과 비교합니다. 임계값, 평가 빈도, 조회 기간을 구성할 수 있습니다.

경고 규칙이 트리거되면 경고 규칙에 연결된 작업 그룹에서 지정한 알림 기본 설정에 따라 알림을 받습니다. 예를 들어 이메일, SMS 또는 음성 알림을 받을 수 있습니다. 경고 규칙은 웹후크, 자동화 Runbook, 함수, 논리 앱 등의 작업을 트리거할 수도 있습니다. 경고를 지원되는 IT 서비스 관리 제품과 통합할 수 있습니다.

Azure Monitor 경고에 대한 자세한 내용은 Azure Monitor 경고 개요를 참조하세요. 메트릭 경고에 익숙해지려면 메트릭 경고, 경고 규칙 관리, 작업 그룹을 검토하세요.

경고 규칙에 사용할 메트릭 및 최적 임계값은 Azure SQL Database의 광범위한 고객 워크로드에 따라 다릅니다.

다음 표의 권장 경고는 Azure SQL Database 리소스에 대한 최적의 경고 구성을 정의하는 데 도움이 되는 시작점입니다. 요구 사항에 따라 구성이 이 예제와 다를 수 있습니다. 다른 임계값, 평가 빈도 또는 조회 기간을 사용할 수 있습니다. 추가 경고를 만들거나 애플리케이션 및 환경에 따라 다른 경고 규칙 구성을 사용하도록 선택할 수도 있습니다.

일반적인 경고 규칙 구성의 예는 다음과 같습니다.

경고 규칙 이름 메트릭(신호) 경고 논리 평가할 시기 제안된 심각도
높은 사용자 CPU 사용량 CPU 비율 임계: Static
집계: Average
연산자: Greater than
임계값: 90
검사 주기: 1 minute
조회 기간: 10 minutes
2 - 경고
높은 총 CPU 사용량 SQL 인스턴스 CPU 비율 임계: Static
집계: Average
연산자: Greater than
임계값: 90
검사 주기: 1 minute
조회 기간: 10 minutes
2 - 경고
높은 작업자 사용량 작업자 백분율 임계: Static
집계: Minimum
연산자: Greater than
임계값: 60
검사 주기: 1 minute
조회 기간: 5 minutes
1- 오류
높은 데이터 IO 사용량 데이터 IO 비율 임계: Static
집계: Average
연산자: Greater than
임계값: 90
검사 주기: 1 minute
조회 기간: 15 minutes
3 - 정보 제공
낮은 데이터 공간 사용된 데이터 공간 백분율 임계: Static
집계: Minimum
연산자: Greater than
임계값: 95
검사 주기: 15 minute
조회 기간: 15 minutes
1- 오류
낮은 tempdb 로그 공간 사용된 로그 Tempdb 백분율 임계: Static
집계: Minimum
연산자: Greater than
임계값: 60
검사 주기: 1 minute
조회 기간: 5 minutes
1- 오류
교착 상태 교착 상태 임계: Dynamic
집계: Total
연산자: Greater than
임계값 민감도: Medium
검사 주기: 15 minutes
조회 기간: 1 hour
3 - 정보 제공
실패한 연결(사용자 오류) 실패한 연결: 사용자 오류 임계: Dynamic
집계: Total
연산자: Greater than
임계값 민감도: Medium
검사 주기: 5 minutes
조회 기간: 15 minutes
2 - 경고
실패한 연결(시스템 오류) 실패한 연결: 시스템 오류 임계: Static
집계: Total
연산자: Greater than
단위: Count
임계값: 10
검사 주기: 1 minute
조회 기간: 5 minutes
2 - 경고
비정상적인 연결 속도 성공한 연결 임계: Dynamic
집계: Total
연산자: Greater or Less than
임계값 민감도: Low
검사 주기: 5 minutes
조회 기간: 15 minutes
2 - 경고

권장되는 경고 규칙 중 일부는 동적 임계값을 사용하여 주의가 필요할 수 있는 비정상적인 메트릭 패턴을 감지합니다. 동적 임계값을 기반으로 하는 경고 규칙은 정상적인 패턴을 설정하기에 충분한 기록 데이터가 수집될 때까지 트리거되지 않습니다. 자세한 내용은 메트릭 경고의 동적 임계값을 참조하세요.

기본적으로 메트릭 경고는 상태 저장입니다. 즉, 경고 규칙이 트리거되면 경고가 한 번만 발생합니다. 경고는 해결 될 때까지 fired 상태로 유지되며, 해당 시점에서 resolved 알림이 전송됩니다. 경고 규칙은 이전 경고가 해결된 후에만 새 경고를 트리거합니다. 상태 저장 경고는 진행 중인 상태에 대한 빈번한 알림을 방지합니다. 상태 저장 및 상태 비저장 경고에 대한 자세한 내용은 경고 및 상태를 참조하세요.