메트릭 및 경고를 사용하여 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 포털에서 일반적으로 사용되는 몇 가지 메트릭은 개요 페이지의 모니터링 탭에 차트로 표시됩니다. 메트릭을 통해 데이터베이스 또는 Elastic Pool의 리소스 사용량 및 상태를 한눈에 평가할 수 있습니다.
주요 메트릭 아래에서 모든 메트릭 보기 또는 차트 내의 아무 곳이나 선택하여 메트릭 탐색기를 엽니다. 메트릭 페이지에서 데이터베이스 또는 탄력적 풀 리소스에 사용할 수 있는 다른 모든 메트릭을 볼 수 있습니다. 메트릭 탐색기에서 차트의 시간 범위, 세분성, 집계 유형을 변경하고, 차트 유형을 변경하고, 다른 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 |
이 메트릭은 데이터베이스에 성공적으로 연결된 연결의 수를 보여 줍니다. 이 메트릭은 특정 암호화 프로토콜 버전을 사용하거나 특정 클라이언트 드라이버를 사용하는 연결 수를 확인하기 위해 두 개의 차원(SslProtocol 및 ValidatedDriverNameAndVersion )으로 분할할 수 있습니다. |
실패한 연결: 시스템 오류 | connection_failed |
이 메트릭은 내부 서비스 오류로 인해 실패한 데이터베이스로의 연결 시도 횟수를 보여 줍니다. 대부분의 경우 이러한 오류는 일시적입니다. 이 메트릭은 특정 오류나 특정 클라이언트 드라이버로 인해 실패한 연결 시도의 횟수를 확인하기 위해 두 개의 차원(Error 및 ValidatedDriverNameAndVersion )으로 분할할 수 있습니다. |
실패한 연결: 사용자 오류 | connection_failed_user_error |
이 메트릭은 잘못된 비밀번호 또는 방화벽에 의해 차단된 연결과 같이 사용자가 수정할 수 있는 오류로 인해 실패한 데이터베이스로의 연결 시도 횟수를 보여 줍니다. 이 메트릭은 특정 오류나 특정 클라이언트 드라이버로 인해 실패한 연결 시도의 횟수를 확인하기 위해 두 개의 차원(Error 및 ValidatedDriverNameAndVersion )으로 분할할 수 있습니다. |
교착 상태 | deadlock |
이 메트릭은 데이터베이스에서의 교착 상태 수를 보여 줍니다. |
가용성 | availability |
가용성은 연결에 대해 작동 중인 데이터베이스에 따라 결정됩니다. 각 1분 데이터 요소에 대해 가능한 값은 100% 또는 0% 입니다. 자세한 정보는 가용성 메트릭을 참조하세요. |
가용성 메트릭
가용성 메트릭은 개별 Azure SQL Database 수준에서 가용성을 추적합니다. 이 기능은 현지 미리 보기로 제공됩니다.
가용성은 연결 중단 1분으로 세분화됩니다. 가용성은 연결에 대해 작동 중인 데이터베이스에 따라 결정됩니다. 서비스 문제로 인해 시간 내에 데이터베이스에 연결하려는 사용자의 모든 연속 시도가 실패할 경우 1분 동안 가동 중지되거나 사용할 수 없는 것으로 간주합니다. 일시적으로 사용할 수 없는 경우 연속 사용 불가 기간은 가동 중지 시간으로 간주되기 위해 분 경계를 넘어야 합니다. 일반적으로 가용성을 표시하는 대기 시간은 3분 미만입니다.
1분 간격마다 가용성을 계산하는 데 사용되는 논리는 다음과 같습니다.
- 하나 이상의 성공적인 연결이 있는 경우 가용성은 100%입니다.
- 사용자 오류로 인해 모든 연결이 실패하는 경우 가용성은 100%입니다.
- 연결 시도가 없는 경우 가용성은 100%입니다.
- 시스템 오류로 인해 모든 연결이 실패하는 경우 가용성은 0%입니다.
- 현재 가용성 메트릭 데이터는 서버리스 컴퓨팅 계층에 대해 아직 지원되지 않으며 100%로 표시됩니다.
따라서 가용성 메트릭은 다음과 같은 기존 메트릭에서 파생된 복합 메트릭입니다.
- 성공한 연결
- 실패한 연결: 사용자 오류
- 방화벽에 의해 차단
- 실패한 연결: 시스템 오류
사용자 오류에는 사용자 구성, 워크로드 또는 관리로 인해 실패한 모든 연결이 포함됩니다. 시스템 오류에는 Azure SQL Database 서비스와 관련된 일시적인 문제로 인해 실패하는 모든 연결이 포함됩니다.
사용자 구성으로 인한 오류의 예:
사용자 워크로드로 인한 오류의 예:
사용자 관리로 인한 오류의 예:
- 데이터베이스 또는 Elastic Pool의 확장 또는 축소
- 지역에서 복제 계획 또는 계획이 해제된 장애 조치(failover)
- 장애 조치(failover) 그룹 계획 또는 계획이 해제된 장애 조치(failover)
- 시드 상태의 지역 보조 데이터베이스
- PITR(특정 시점 복원), LTR(장기 복원) 또는 삭제된 데이터베이스에서 복원으로 인해 복원 상태에 있는 데이터베이스
- 아직 복사가 완료되지 않은 데이터베이스(데이터베이스 복사)
경고
경고 규칙을 만들어 하나의 메트릭 또는 여러 메트릭 값이 예상 범위를 벗어날 때 알림을 받을 수 있습니다.
필요에 맞게 여러 가지 방법으로 경고 규칙의 범위를 설정할 수 있습니다. 예를 들어 경고 규칙 범위를 다음으로 설정할 수 있습니다.
- 단일 데이터베이스
- 탄력적 풀
- 리소스 그룹의 모든 데이터베이스 또는 탄력적 풀
- 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
알림이 전송됩니다. 경고 규칙은 이전 경고가 해결된 후에만 새 경고를 트리거합니다. 상태 저장 경고는 진행 중인 상태에 대한 빈번한 알림을 방지합니다. 상태 저장 및 상태 비저장 경고에 대한 자세한 내용은 경고 및 상태를 참조하세요.
관련 콘텐츠
- Azure Monitor 메트릭 개요
- 데이터베이스 Watcher로 Azure SQL 워크로드 모니터링(프리뷰)
- Azure Monitor 메트릭 탐색기로 메트릭 분석
- Azure Monitor Metrics 집계 및 표시 설명
- Azure Monitor 경고 개요
- 자습서: Azure 리소스에 대한 메트릭 경고 만들기
- Azure Monitor 경고 관련 모범 사례
- Azure Monitor 경고 문제 해결
- Azure SQL Database 및 Azure SQL Managed Instance의 모니터링 및 성능 튜닝
- Azure SQL Database 및 SQL Managed Instance 진단 원격 분석 데이터의 스트리밍 내보내기 구성