Мониторинг базы данных SQL Azure с помощью решения Аналитика SQL Azure (предварительная версия)

ОБЛАСТЬ ПРИМЕНЕНИЯ:База данных SQL Azure, Управляемый экземпляр SQL Azure

Внимание!

Аналитика SQL Azure (предварительная версия) предоставляет средства интеграции с платформой Azure Monitor, на которой многие решения мониторинга уже вышли из стадии активной разработки. Другие параметры мониторинга можно найти в статье Мониторинг и настройка производительности Базы данных SQL Azure и Управляемого экземпляра SQL Azure.

Аналитика SQL Azure (предварительная версия)  — это облачное решение для расширенного мониторинга производительности баз данных SQL Azure в большом масштабе, в любом числе подписок, с отображением в едином представлении. Аналитика SQL Azure собирает и отображает важные метрики производительности благодаря встроенным средствам аналитики, которые помогают устранять неполадки.

На основе собранных метрик можно создавать настраиваемые правила мониторинга и оповещения. Аналитика SQL Azure также поможет вам выявить проблемы на каждом уровне стека приложений. Аналитика SQL Azure использует метрики Диагностики Azure и представления Azure Monitor, чтобы отображать данные обо всех базах данных SQL Azure в единой рабочей области Log Analytics. Azure Monitor помогает собирать, коррелировать и визуализировать структурированные и неструктурированные данные.

Подключенные источники

Аналитика SQL Azure — это облачное решение для мониторинга с поддержкой потоковой передачи диагностических данных телеметрии для баз данных SQL Azure. Так как Аналитика SQL Azure не использует агенты для подключения к Azure Monitor, она не поддерживает мониторинг экземпляров SQL Server, размещенных локально или на виртуальных машинах.

Подключенный источник Поддерживается Описание
Параметры диагностики Да Данные метрик и журнала Azure отправляются в журналы Azure Monitor непосредственно платформой Azure.
Учетная запись хранения Azure Нет Azure Monitor не считывает данные из учетной записи хранения.
Агенты Windows Нет Прямые агенты Windows не используются Аналитикой SQL Azure.
Агенты Linux Нет Прямые агенты Linux не используются Аналитикой SQL Azure.
Группа управления System Center Operations Manager Нет Аналитике SQL Azure не требуется прямое подключение агента Operations Manager к Azure Monitor.

Параметры Аналитики SQL Azure

В таблице ниже представлены параметры, поддерживаемые для двух версий панели мониторинга Аналитики SQL Azure: версии для Базы данных SQL Azure и версии для баз данных Управляемого экземпляра SQL.

Параметр Аналитики SQL Azure Описание Поддержка Базы данных SQL Поддержка Управляемого экземпляра SQL
Resource by type (Ресурсы по типу) Перспектива, в которой представлено число всех отслеживаемых ресурсов. Да Да
Аналитика Предоставляет подробные сведения о производительности Intelligent Insights в иерархическом виде. Да Да
ошибки Предоставляет подробные данные об ошибках SQL, возникших в базах данных, в иерархическом виде. Да Да
Время ожидания Предоставляет подробные данные о времени ожидания SQL в базах данных в иерархическом виде. Да Нет
Blockings (Блокировки) Предоставляет подробные данные о блокировках SQL в базах данных в иерархическом виде. Да Нет
Database waits (Время ожидания базы данных) Предоставляет подробную статистику времени ожидания SQL на уровне базы данных в иерархическом виде. Включает сводку по общему времени ожидания и времени ожидания для каждого типа ожидания. Да Нет
Query duration (Длительность запросов) Предоставляет подробную статистику о выполнении запросов, такую как продолжительность запроса, загрузку ЦП, число операций ввода-вывода данных, число операций ввода-вывода журнала, в иерархическом виде. Да Да
Query waits (Время ожидания запроса) Предоставляет подробную статистику времени ожидании запросов по категории ожидания в иерархическом виде. Да Да

Конфигурация Аналитики SQL Azure (предварительная версия)

Используйте процедуру, описанную в статье Решения мониторинга в Azure Monitor, чтобы добавить Аналитику SQL Azure (предварительная версия) в рабочую область Log Analytics.

Настройка Базы данных SQL Azure для потоковой передачи диагностических данных телеметрии

Создав решение "Аналитика SQL Azure" в рабочей области, необходимо настроить каждый ресурс, который нужно отслеживать, для потоковой передачи его диагностических данных телеметрии в это решение. Выполните подробные инструкции на этой странице:

Приведенная выше страница также содержит инструкции по включению поддержки для наблюдения за несколькими подписками Azure из одной рабочей области службы "Аналитика SQL Azure", выступающей в качестве единой панели.

Аналитика SQL Azure (предварительная версия)

Перейдите к развертыванию Аналитики SQL со страницы Устаревшие решения рабочей области Log Analytics.

Аналитика SQL Azure предоставляет два отдельных представления: одно для мониторинга Базы данных SQL, и другое для мониторинга Управляемого экземпляра SQL.

Просмотр данных службы "Аналитика SQL Azure"

На панели мониторинга отображаются общие сведения обо всех базах данных, мониторинг которых осуществляется через различные перспективы. Для работы различных перспектив необходимо включить потоковую передачу соответствующих метрик или журналов для ресурсов SQL в рабочую область Log Analytics.

Если потоковая передача некоторых метрик или журналов в Azure Monitor не выполняется, плитки в Аналитике SQL Azure не будут заполнены данными мониторинга.

Представление Базы данных SQL

После выбора плитки "Аналитика SQL Azure" для базы данных отобразится панель мониторинга.

Снимок экрана, на котором показана панель мониторинга.

При выборе любой плитки открывается подробный отчет о конкретной перспективе. Выбрав перспективу, вы увидите подробный отчет.

Снимок экрана, на котором показан детализированный отчет по конкретной перспективе.

Каждая перспектива в этом представлении включает в себя сводки на уровне подписки, сервера, эластичного пула и базы данных. Кроме того, справа в каждой перспективе отображается отчет о ней. Выбор подписки, сервера, пула или базы данных из списка позволяет продолжить подробное изучение.

Представление Управляемого экземпляра SQL

После выбора плитки "Аналитика SQL Azure" для базы данных отобразится панель мониторинга.

Обзор службы

При выборе любой плитки открывается подробный отчет о конкретной перспективе. Выбрав перспективу, вы увидите подробный отчет.

При выборе представления Управляемого экземпляра SQL отображаются сведения об использовании экземпляра, баз данных экземпляра, а также данные телеметрии о запросах, выполненных в пределах управляемого экземпляра.

Время ожидания службы

Отчет Intelligent Insights

Intelligent Insights для Базы данных SQL Azure позволяет узнать о производительности всех баз данных SQL Azure. Все собранные данные Intelligent Insights можно визуализировать в перспективе Intelligent Insights, а также получить к ним доступ.

Аналитические сведения службы

Отчеты об эластичных пулах и базах данных

Для эластичных пулов и баз данных предусмотрены собственные отчеты, в которых можно просмотреть все данные, собранные для ресурса в указанное время.

База данных службы

Эластичный пул SQL Azure

Отчеты о запросах

С помощью перспектив "Query duration" (Длительность запроса) и "Query waits" (Время ожидания запроса) можно сопоставить производительность любого запроса в отчете о запросах. В этом отчете сравнивается производительность запросов в различных базах данных. Кроме того, он упрощает точное определение баз данных с высокой и низкой производительностью запросов.

Запросы службы

Разрешения

Для использования службы "Аналитика SQL Azure (предварительная версия)" пользователям нужно предоставить по меньшей мере ​​роли читателя в Azure. Однако эта роль не позволяет им видеть текст запроса или выполнять какие-либо действия по автоматической настройке. Расширенные роли Azure, которые позволяют использовать Аналитику SQL Azure в полной мере: "Владелец", "Участник", "Участник баз данных SQL" и "Участник SQL Server". Вы также можете создать на портале пользовательскую роль с определенными разрешениями, необходимыми только для использования службы "Аналитика SQL Azure", и без доступа к управлению другими ресурсами.

Создание пользовательской роли на портале

Примечание

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Дополнительные сведения см. в статье Перенос Azure PowerShell с AzureRM на Az.

Некоторые организации применяют строгие механизмы контроля разрешений в Azure, поэтому мы предоставляем следующий скрипт PowerShell, который позволяет создать на портале Azure пользовательскую роль "Оператор мониторинга Аналитики SQL" с минимальными разрешениями на чтение и запись, необходимыми для использования службы "Аналитика SQL Azure" в полной мере.

Замените {SubscriptionId} в приведенном ниже скрипте идентификатором подписки Azure и выполните скрипт, войдя в систему с ролью владельца или участника в 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

После создания роли назначьте ее каждому пользователю, которому необходимо предоставить пользовательские разрешения на использование службы "Аналитика SQL Azure".

Анализ данных и создание оповещений

Анализ данных в службе "Аналитика SQL Azure" основан на языке Log Analytics, который используется для пользовательских запросов и отчетов. Найдите описание доступных данных, полученных из ресурса базы данных, для отправки пользовательских запросов к доступным метрикам и журналам.

Для настройки автоматических оповещений в Аналитике SQL Azure нужно написать запрос Log Analytics, который активирует оповещение при выполнении условия. Ниже приведены несколько примеров запросов Log Analytics, по которым можно настроить оповещение в Аналитике SQL Azure.

Создание оповещений для Базы данных SQL Azure

Оповещения можно легко создать с помощью данных, поступающих из ресурсов службы "База данных SQL Azure". Вот несколько полезных запросов журналов, которые можно использовать с оповещениями журналов:

Высокая загрузка ЦП

AzureMetrics
| where ResourceProvider=="MICROSOFT.SQL"
| where ResourceId contains "/DATABASES/"
| where MetricName=="cpu_percent"
| summarize AggregatedValue = max(Maximum) by bin(TimeGenerated, 5m)
| render timechart

Примечание

  • Предварительное требование для настройки этого оповещения заключается в том, что отслеживаемые базы данных должны выполнять потоковую передачу базовых метрик в рабочую область Log Analytics, используемую Аналитикой SQL Azure.
  • Замените для параметра MetricName значение cpu_percent значением dtu_consumption_percent, чтобы получить результаты с высоким значением DTU.

Высокая загрузка ЦП в эластичных пулах

AzureMetrics
| where ResourceProvider=="MICROSOFT.SQL"
| where ResourceId contains "/ELASTICPOOLS/"
| where MetricName=="cpu_percent"
| summarize AggregatedValue = max(Maximum) by bin(TimeGenerated, 5m)
| render timechart

Примечание

  • Предварительное требование для настройки этого оповещения заключается в том, что отслеживаемые базы данных должны выполнять потоковую передачу базовых метрик в рабочую область Log Analytics, используемую Аналитикой SQL Azure.
  • Замените для параметра MetricName значение cpu_percent значением dtu_consumption_percent, чтобы получить результаты с высоким значением DTU.

Хранилище в среднем было заполнено на 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

Примечание

  • Предварительное требование для настройки этого оповещения заключается в том, что отслеживаемые базы данных должны выполнять потоковую передачу базовых метрик в рабочую область Log Analytics, используемую Аналитикой SQL Azure.
  • Для этого запроса нужно настроить правило генерации оповещений, чтобы оповещение создавалось при наличии результатов (>0 строк) для запроса, что означает соблюдение условия в некоторых из баз данных. Выходные данные содержат список ресурсов базы данных со значением выше storage_threshold в пределах заданного time_range.
  • Выходные данные содержат список ресурсов базы данных со значением выше storage_threshold в пределах заданного time_range.

Оповещение об Intelligent Insights

Важно!

Если база данных работает нормально и данные Intelligent Insights не создаются, этот запрос завершится ошибкой со следующим сообщением: "Failed to resolve scalar expression named rootCauseAnalysis_s" (Не удалось разрешить скалярное выражение с именем rootCauseAnalysis_s). Это поведение ожидается во всех случаях, когда для базы данных отсутствуют данные Intelligent Insights.

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 в рабочую область Log Analytics, используемую Аналитикой SQL Azure.
  • Для этого запроса нужно настроить правило генерации оповещений, которое будет выполняться с той же частотой, что и alert_run_interval, чтобы избежать повторяющихся результатов. Это правило должно запускать оповещение, когда запрос возвращает результаты (>0 строк).
  • Настройте для alert_run_interval диапазон времени, чтобы проверять соблюдения условия для баз данных, в которых настроена потоковая передача журнала SQLInsights в Аналитику SQL Azure.
  • Настройте insights_string, чтобы записывать текст анализа первопричин, представленный в экземпляре аналитических сведений. Этот же текст отображается в пользовательском интерфейсе Аналитики SQL Azure, который можно использовать из существующих экземпляров аналитических сведений. Кроме того, приведенный ниже запрос можно использовать для просмотра текста всех аналитических сведений, созданных в подписке. В выходных данных запроса содержатся различные строки, которые можно использовать для настройки оповещений в Insights.
AzureDiagnostics
| where Category == "SQLInsights" and status_s == "Active"
| distinct rootCauseAnalysis_s

Создание оповещений для Управляемого экземпляра SQL

Хранилище заполнено более чем на 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

Примечание

  • Предварительным требованием для настройки этого оповещения является включение потоковой передачи журнала ResourceUsageStats отслеживаемого управляемого экземпляра в рабочую область Log Analytics, используемую Аналитикой SQL Azure.
  • Для этого запроса нужно настроить правило генерации оповещений, чтобы оповещение создавалось при наличии результатов (>0 строк) для запроса, что означает соблюдение условия в управляемом экземпляре. Результатом является уровень заполнения хранилища (в процентах) в управляемом экземпляре.

Среднее потребление ЦП выше 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

Примечание

  • Предварительным требованием для настройки этого оповещения является включение потоковой передачи журнала ResourceUsageStats отслеживаемого управляемого экземпляра в рабочую область Log Analytics, используемую Аналитикой SQL Azure.
  • Для этого запроса нужно настроить правило генерации оповещений, чтобы оповещение создавалось при наличии результатов (>0 строк) для запроса, что означает соблюдение условия в управляемом экземпляре. Выходные данные — это средний процент загрузки ЦП в управляемом экземпляре за определенный период.

Цены

Служба "Аналитика SQL Azure (предварительная версия)" предоставляется бесплатно, но потребление ресурсов приема данных сверх ежемесячного бесплатного лимита телеметрии для диагностики влечет оплату по тарифам на странице Цены на Azure Monitor. Бесплатные единицы приема данных позволяют осуществлять бесплатный мониторинг нескольких баз данных каждый месяц. Более активные базы данных с более интенсивными рабочими нагрузками принимают больше данных, чем простаивающие. Вы можете легко отслеживать использование приема данных в Аналитике SQL Azure, выбрав рабочую область OMS в меню навигации Аналитики SQL Azure, а затем выбрав "Использование и ожидаемые затраты".

Дальнейшие действия