적용 대상: Azure SQL Database, Azure SQL Managed Instance
주의
Azure SQL 분석(미리 보기)은 많은 모니터링 솔루션이 더 이상 개발되지 않는 Azure Monitor와의 통합입니다. 자세한 모니터링 옵션은 Azure SQL Database 및 Azure SQL Managed Instance의 모니터링 및 성능 조정을 참조하세요.
Azure SQL Analytics(미리 보기)는 단일 보기에서 여러 구독에서 대규모로 모든 Azure SQL 데이터베이스의 성능을 모니터링하기 위한 고급 클라우드 모니터링 솔루션입니다. Azure SQL 분석은 성능 문제 해결을 위한 기본 제공 인텔리전스를 사용하여 주요 성능 메트릭을 수집하고 시각화합니다.
수집된 이러한 메트릭을 사용하여 사용자 지정 모니터링 규칙 및 경고를 만들 수 있습니다. Azure SQL Analytics를 사용하면 애플리케이션 스택의 각 계층에서 문제를 식별할 수 있습니다. Azure SQL Analytics는 Azure Monitor 뷰와 함께 Azure Diagnostics 메트릭을 사용하여 단일 Log Analytics 작업 영역에서 모든 Azure SQL 데이터베이스에 대한 데이터를 제공합니다. Azure Monitor를 사용하면 구조화되고 구조화되지 않은 데이터를 수집, 상관 관계 및 시각화할 수 있습니다.
연결된 원본
Azure SQL Analytics는 모든 Azure SQL 데이터베이스에 대한 진단 원격 분석 스트리밍을 지원하는 클라우드 전용 모니터링 솔루션입니다. Azure SQL Analytics는 에이전트를 사용하여 Azure Monitor에 연결하지 않으므로 온-프레미스 또는 가상 머신에서 호스트되는 SQL Server의 모니터링을 지원하지 않습니다.
연결된 원본 | 지원됨 | 설명 |
---|---|---|
진단 설정 | 예 | Azure 메트릭 및 로그 데이터는 Azure에서 직접 Azure Monitor 로그로 전송됩니다. |
Azure Storage 계정 | 아니오 | Azure Monitor는 스토리지 계정에서 데이터를 읽지 않습니다. |
Windows 에이전트 | 아니오 | 직접 Windows 에이전트는 Azure SQL Analytics에서 사용되지 않습니다. |
Linux 에이전트 | 아니오 | 직접 Linux 에이전트는 Azure SQL Analytics에서 사용되지 않습니다. |
System Center Operations Manager 관리 그룹 | 아니오 | Operations Manager 에이전트에서 Azure Monitor로의 직접 연결은 Azure SQL Analytics에서 사용되지 않습니다. |
Azure SQL 분석 옵션
아래 표에서는 Azure SQL Analytics 대시보드의 두 버전, Azure SQL Database용 및 Azure SQL Managed Instance 데이터베이스용 옵션에 대해 지원되는 옵션을 간략하게 설명합니다.
Azure SQL Analytics 옵션 | 설명 | SQL Database 지원 | SQL Managed Instance 지원 |
---|---|---|---|
형식별 리소스 | 모니터링되는 모든 리소스를 고려하는 관점입니다. | 예 | 예 |
인사이트 | 성능에 대한 지능형 인사이트의 계층적 드릴다운 기능을 제공합니다. | 예 | 예 |
오류 | 데이터베이스에서 발생한 SQL 오류에 대한 계층적 드릴다운을 제공합니다. | 예 | 예 |
타임아웃 | 데이터베이스에서 발생한 SQL 시간 제한에 대한 계층적 드릴다운을 제공합니다. | 예 | 아니오 |
차단 사례들 | 데이터베이스에서 발생한 SQL 차단에 대한 계층적 드릴다운을 제공합니다. | 예 | 아니오 |
데이터베이스 대기 | 데이터베이스 수준에서 SQL 대기 통계로 계층적 드릴다운을 제공합니다. 총 대기 시간 및 대기 유형별 대기 시간 요약을 포함합니다. | 예 | 아니오 |
쿼리 기간 | 쿼리 기간, CPU 사용량, 데이터 IO 사용량, 로그 IO 사용량과 같은 쿼리 실행 통계에 대한 계층적 드릴다운을 제공합니다. | 예 | 예 |
쿼리 대기 | 대기 범주별로 쿼리 대기 통계에 대한 계층적 드릴다운을 제공합니다. | 예 | 예 |
Azure SQL Analytics 구성(미리 보기)
솔루션 갤러리에서 Azure Monitor 솔루션 추가에 설명된 프로세스를 사용하여 Log Analytics 작업 영역에 Azure SQL Analytics(미리 보기)를 추가합니다.
진단 원격 분석을 스트리밍하도록 Azure SQL Database 구성
작업 영역에서 Azure SQL Analytics 솔루션을 만든 후에는 진단 원격 분석을 Azure SQL Analytics로 스트리밍하도록 모니터링하려는 각 리소스를 구성 해야 합니다. 이 페이지의 자세한 지침을 따릅니다.
- 데이터베이스에 대한 Azure Diagnostics를 사용하도록 설정하여 진단 원격 분석을 Azure SQL Analytics로 스트리밍합니다.
위의 페이지에서는 단일 Azure SQL Analytics 작업 영역에서 여러 Azure 구독을 단일 창으로 모니터링할 수 있도록 지원하는 방법에 대한 지침을 제공합니다.
Azure SQL Analytics 사용(미리 보기)
Log Analytics 작업 영역의 레거시 솔루션 페이지에서 SQL Analytics 배포로 이동합니다.
Azure SQL Analytics는 SQL Database를 모니터링하기 위한 뷰와 SQL Managed Instance 모니터링을 위한 다른 보기의 두 가지 별도 보기를 제공합니다.
Azure SQL Analytics 데이터 보기
대시보드에는 다양한 관점을 통해 모니터링되는 모든 데이터베이스의 개요가 포함되어 있습니다. 다양한 관점이 작동하려면 SQL 리소스에 대한 적절한 메트릭 또는 로그를 Log Analytics 작업 영역으로 스트리밍할 수 있도록 설정해야 합니다.
일부 메트릭 또는 로그가 Azure Monitor로 스트리밍되지 않으면 Azure SQL Analytics의 타일이 모니터링 정보로 채워지지 않습니다.
SQL Database 보기
데이터베이스에 대한 Azure SQL Analytics 타일을 선택하면 모니터링 대시보드가 표시됩니다.
타일을 선택하면 특정 관점의 드릴다운 보고서가 열립니다. 관점을 선택하면 드릴다운 보고서가 열립니다.
이 보기의 각 관점은 구독, 서버, 탄력적 풀 및 데이터베이스 수준에서 요약을 제공합니다. 또한 각 시점은 오른쪽에 표시된 보고서에 특정한 관점을 보여줍니다. 목록에서 구독, 서버, 풀 또는 데이터베이스를 선택하면 드릴다운이 계속됩니다.
SQL Managed Instance 보기
데이터베이스에 대한 Azure SQL Analytics 타일을 선택하면 모니터링 대시보드가 표시됩니다.
타일을 선택하면 특정 관점의 드릴다운 보고서가 열립니다. 관점을 선택하면 드릴다운 보고서가 열립니다.
SQL Managed Instance 보기를 선택하면 관리되는 인스턴스에서 실행된 쿼리의 인스턴스 사용률, 인스턴스 데이터베이스 및 원격 분석에 대한 세부 정보가 표시됩니다.
Intelligent Insights 보고서
Azure SQL Database Intelligent Insights를 사용하면 모든 Azure SQL 데이터베이스의 성능에 어떤 일이 일어나고 있는지 알 수 있습니다. 수집된 모든 Intelligent Insights는 Insights 관점을 통해 시각화하고 액세스할 수 있습니다.
탄력적 풀 및 데이터베이스 보고서
탄력적 풀과 데이터베이스에는 지정된 시간에 리소스에 대해 수집된 모든 데이터를 표시하는 고유한 특정 보고서가 있습니다.
쿼리 보고서
쿼리 기간 및 쿼리 대기 큐브 뷰를 통해 쿼리 보고서를 통해 모든 쿼리의 성능을 상호 연결할 수 있습니다. 이 보고서는 여러 데이터베이스의 쿼리 성능을 비교하고 선택한 쿼리를 잘 수행하는 데이터베이스와 속도가 느린 데이터베이스를 쉽게 파악할 수 있도록 합니다.
권한
Azure SQL Analytics(미리 보기)를 사용하려면 사용자에게 Azure에서 읽기 권한자 역할의 최소 권한을 부여해야 합니다. 그러나 이 역할은 사용자가 쿼리 텍스트를 보거나 자동 튜닝 작업을 수행하는 것을 허용하지 않습니다. Azure에서 Azure SQL Analytics를 최대한 사용할 수 있는 더 관대한 역할은 소유자, 기여자, SQL DB 기여자 또는 SQL Server 기여자입니다. 또한 Azure SQL Analytics를 사용하는 데만 필요한 특정 권한과 다른 리소스 관리에 대한 액세스 권한 없이 포털에서 사용자 지정 역할을 만드는 것이 좋습니다.
포털에서 사용자 지정 역할 만들기
비고
Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.
일부 조직에서 Azure에서 엄격한 권한 제어를 적용한다는 사실을 인식하면 Azure Portal에서 Azure SQL Analytics를 최대한 사용하는 데 필요한 최소 읽기 및 쓰기 권한으로 사용자 지정 역할 "SQL Analytics 모니터링 연산자"를 만들 수 있는 다음 PowerShell 스크립트를 찾습니다.
아래 스크립트의 "{SubscriptionId}"를 Azure 구독 ID로 바꾸고 Azure에서 소유자 또는 기여자 역할로 로그인한 스크립트를 실행합니다.
Connect-AzAccount
Select-AzSubscription {SubscriptionId}
$role = Get-AzRoleDefinition -Name Reader
$role.Name = "SQL Analytics Monitoring Operator"
$role.Description = "Lets you monitor database performance with Azure SQL Analytics as a reader. Does not allow change of resources."
$role.IsCustom = $true
$role.Actions.Add("Microsoft.SQL/servers/databases/read");
$role.Actions.Add("Microsoft.SQL/servers/databases/topQueries/queryText/*");
$role.Actions.Add("Microsoft.Sql/servers/databases/advisors/read");
$role.Actions.Add("Microsoft.Sql/servers/databases/advisors/write");
$role.Actions.Add("Microsoft.Sql/servers/databases/advisors/recommendedActions/read");
$role.Actions.Add("Microsoft.Sql/servers/databases/advisors/recommendedActions/write");
$role.Actions.Add("Microsoft.Sql/servers/databases/automaticTuning/read");
$role.Actions.Add("Microsoft.Sql/servers/databases/automaticTuning/write");
$role.Actions.Add("Microsoft.Sql/servers/advisors/read");
$role.Actions.Add("Microsoft.Sql/servers/advisors/write");
$role.Actions.Add("Microsoft.Sql/servers/advisors/recommendedActions/read");
$role.Actions.Add("Microsoft.Sql/servers/advisors/recommendedActions/write");
$role.Actions.Add("Microsoft.Resources/deployments/write");
$role.AssignableScopes = "/subscriptions/{SubscriptionId}"
New-AzRoleDefinition $role
새 역할이 만들어지면 Azure SQL Analytics를 사용하기 위해 사용자 지정 권한을 부여해야 하는 각 사용자에게 이 역할을 할당합니다.
데이터 분석 및 경고 만들기
Azure SQL Analytics의 데이터 분석은 사용자 지정 쿼리 및 보고를 위한 Log Analytics 언어 를 기반으로 합니다. 사용 가능한 메트릭 및 로그에서 사용자 지정 쿼리를 위해 데이터베이스 리소스에서 수집된 사용 가능한 데이터에 대한 설명을 찾습니다.
Azure SQL Analytics의 자동화된 경고는 조건이 충족될 때 경고를 트리거하는 Log Analytics 쿼리를 작성하는 것을 기반으로 합니다. Azure SQL Analytics에서 경고를 설정할 수 있는 Log Analytics 쿼리에 대한 몇 가지 예제를 아래에서 찾습니다.
Azure SQL Database에 대한 경고 만들기
Azure SQL Database 리소스에서 제공되는 데이터로 경고를 쉽게 만들 수 있습니다. 로그 경고와 함께 사용할 수 있는 몇 가지 유용한 로그 쿼리 는 다음과 같습니다.
높은 CPU
AzureMetrics
| where ResourceProvider=="MICROSOFT.SQL"
| where ResourceId contains "/DATABASES/"
| where MetricName=="cpu_percent"
| summarize AggregatedValue = max(Maximum) by bin(TimeGenerated, 5m)
| render timechart
비고
- 이 경고를 설정하기 위한 사전 요구 사항은 모니터링되는 데이터베이스가 기본 메트릭을 Azure SQL Analytics에서 사용하는 Log Analytics 작업 영역으로 스트리밍한다는 것입니다.
- 대신 높은 DTU 결과를 얻으려면 MetricName 값을
cpu_percent
대체dtu_consumption_percent
합니다.
고탄력 풀에서의 높은 CPU 사용량
AzureMetrics
| where ResourceProvider=="MICROSOFT.SQL"
| where ResourceId contains "/ELASTICPOOLS/"
| where MetricName=="cpu_percent"
| summarize AggregatedValue = max(Maximum) by bin(TimeGenerated, 5m)
| render timechart
비고
- 이 경고를 설정하기 위한 사전 요구 사항은 모니터링되는 데이터베이스가 기본 메트릭을 Azure SQL Analytics에서 사용하는 Log Analytics 작업 영역으로 스트리밍한다는 것입니다.
- 대신 높은 DTU 결과를 얻으려면 MetricName 값을
cpu_percent
대체dtu_consumption_percent
합니다.
지난 1시간 동안 평균 95% 이상의 저장소 이용률
let time_range = 1h;
let storage_threshold = 95;
AzureMetrics
| where ResourceId contains "/DATABASES/"
| where MetricName == "storage_percent"
| summarize max_storage = max(Average) by ResourceId, bin(TimeGenerated, time_range)
| where max_storage > storage_threshold
| distinct ResourceId
비고
- 이 경고를 설정하기 위한 사전 요구 사항은 모니터링되는 데이터베이스가 기본 메트릭을 Azure SQL Analytics에서 사용하는 Log Analytics 작업 영역으로 스트리밍한다는 것입니다.
- 이 쿼리를 사용하려면 쿼리의 결과(> 결과 0개)가 있을 때 경고를 발생하도록 경고 규칙을 설정해야 하며, 이는 조건이 일부 데이터베이스에 있음을 나타냅니다. 출력은
storage_threshold
내에 정의된time_range
위에 있는 데이터베이스 리소스 목록입니다. - 출력은
storage_threshold
내에 정의된time_range
위에 있는 데이터베이스 리소스 목록입니다.
지능형 인사이트에 대한 경고
중요합니다
데이터베이스가 제대로 작동하고 Intelligent Insights가 생성되지 않은 경우 이 쿼리는 오류 메시지와 함께 실패합니다. 명명 rootCauseAnalysis_s
된 스칼라 식을 해결하지 못했습니다. 이 동작은 데이터베이스에 대한 지능형 인사이트가 없는 모든 경우에 필요합니다.
let alert_run_interval = 1h;
let insights_string = "hitting its CPU limits";
AzureDiagnostics
| where Category == "SQLInsights" and status_s == "Active"
| where TimeGenerated > ago(alert_run_interval)
| where rootCauseAnalysis_s contains insights_string
| distinct ResourceId
비고
- 이 경고를 설정하기 위한 사전 요구 사항은 모니터링되는 데이터베이스가 SQLInsights 진단 로그를 Azure SQL Analytics에서 사용하는 Log Analytics 작업 영역으로 스트리밍하는 것입니다.
- 이 쿼리를 사용하려면 중복 결과를 방지하기 위해 경고 규칙을 동일한 빈도로
alert_run_interval
실행하도록 설정해야 합니다. 쿼리에서 결과(> 0개 결과)가 있는 경우 경고를 발생하도록 규칙을 설정해야 합니다. -
alert_run_interval
SQLInsights 로그를 Azure SQL Analytics로 스트리밍하도록 구성된 데이터베이스에서 조건이 발생했는지 확인할 시간 범위를 지정하도록 사용자 지정합니다. - Insights_string 사용자 지정하여 Insights 근본 원인 분석 텍스트의 출력을 캡처합니다. 이는 기존 인사이트에서 사용할 수 있는 Azure SQL Analytics의 UI에 표시되는 것과 동일한 텍스트입니다. 또는 아래 쿼리를 사용하여 구독에서 생성된 모든 Insights의 텍스트를 볼 수 있습니다. 쿼리의 출력을 사용하여 Insights에서 경고를 설정하기 위한 고유 문자열을 수집합니다.
AzureDiagnostics
| where Category == "SQLInsights" and status_s == "Active"
| distinct rootCauseAnalysis_s
SQL Managed Instance에 대한 경고 만들기
저장소가 90% 이상이다
let storage_percentage_threshold = 90;
AzureDiagnostics
| where Category =="ResourceUsageStats"
| summarize (TimeGenerated, calculated_storage_percentage) = arg_max(TimeGenerated, todouble(storage_space_used_mb_s) *100 / todouble (reserved_storage_mb_s))
by ResourceId
| where calculated_storage_percentage > storage_percentage_threshold
비고
- 이 경고를 설정하기 위한 사전 요구 사항은 모니터링되는 관리되는 인스턴스가 Azure SQL Analytics에서 사용하는 Log Analytics 작업 영역으로 ResourceUsageStats 로그 스트리밍을 사용하도록 설정되어 있다는 것입니다.
- 이 쿼리의 결과가 0개 이상일 때 경고를 발동하도록 경고 규칙을 설정해야 하며, 이는 관리되는 인스턴스에 조건이 존재함을 나타냅니다. 출력은 관리되는 인스턴스의 스토리지 사용률입니다.
CPU 평균 사용량이 지난 1시간 동안% 95를 초과했습니다.
let cpu_percentage_threshold = 95;
let time_threshold = ago(1h);
AzureDiagnostics
| where Category == "ResourceUsageStats" and TimeGenerated > time_threshold
| summarize avg_cpu = max(todouble(avg_cpu_percent_s)) by ResourceId
| where avg_cpu > cpu_percentage_threshold
비고
- 이 경고를 설정하기 위한 사전 요구 사항은 모니터링되는 관리되는 인스턴스가 Azure SQL Analytics에서 사용하는 Log Analytics 작업 영역으로 ResourceUsageStats 로그 스트리밍을 사용하도록 설정되어 있다는 것입니다.
- 이 쿼리의 결과가 0개 이상일 때 경고를 발동하도록 경고 규칙을 설정해야 하며, 이는 관리되는 인스턴스에 조건이 존재함을 나타냅니다. 출력은 관리되는 인스턴스에서 정의된 기간의 평균 CPU 사용률 사용률 소비량입니다.
가격 책정
Azure SQL Analytics(미리 보기)는 무료로 사용할 수 있지만 매달 할당된 무료 데이터 수집 단위보다 높은 진단 원격 분석 사용이 적용됩니다. Log Analytics 가격 책정을 참조하세요. 제공되는 무료 데이터 수집 단위를 통해 매달 여러 데이터베이스를 무료로 모니터링할 수 있습니다. 워크로드가 더 많은 활성 데이터베이스는 유휴 데이터베이스와 비교해 더 많은 데이터를 수집합니다. Azure SQL Analytics의 탐색 메뉴에서 OMS 작업 영역을 선택한 다음 사용량 및 예상 비용을 선택하여 Azure SQL Analytics에서 데이터 수집 사용량을 쉽게 모니터링할 수 있습니다.
다음 단계
- Azure Monitor 의 로그 쿼리를 사용하여 자세한 Azure SQL 데이터를 봅니다.
- 자신만의 대시보드를 생성하여 Azure SQL 데이터를 보여주세요.
- 특정 Azure SQL 이벤트가 발생할 때 경고를 만듭니다.
- Azure Monitor로 Azure SQL Database 모니터링하기
- Azure Monitor로 Azure SQL Managed Instance 모니터링