Мониторинг и оповещения SQL Server для нескольких баз данных Azure (v12) - PullRequest
0 голосов
/ 29 мая 2018

Как лучше всего отслеживать определенный показатель и оповещать о нем по нескольким базам данных.Например, я хочу вызвать предупреждение, если размер базы данных становится больше 10 ГБ.

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

Мои базы данных создаются с помощью Azure Resource Management

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

После некоторого углубления я нашел несколько удовлетворительное решение в Azure:

  1. Перейти к метрике монитора Azure (превью)
  2. В моем случае я использовал эластичный пул sql, так чтоЯ добавил это как Ресурс с метрикой «storaged_used»
  3. Добавление разбиения по «Идентификатор ресурса ARM базы данных» даст вам хранилище, используемое для каждой
    базы данных SQL в вашем пуле по Идентификатору ресурса.
0 голосов
/ 31 мая 2018

Я думаю, что PowerShell, в частности команда Get-AzureSqlDatabaseUsages , является вашим лучшим другом здесь.Я делал это в прошлом как измененное «сердцебиение».При этом мы также проанализировали фрагментацию индекса и при необходимости вызвали REBUILD.

Пример команды PowerShell сверху:

C:\> Get-AzureSqlDatabaseUsages -ServerName "Server01" -DatabaseName "Database01"

Для этого потребуется, чтобы вы прошли аутентификацию, но этосам по себе достаточно прост.

Вы можете выполнить сценарий по расписанию (т. е. в виде веб-задания или запланированной задачи) и создать отчет / уведомление на основе определенных пороговых значений метрики.

EDIT: для баз данных v12 используйте следующий запрос (который может быть выполнен программно с помощью PowerShell и sqlcmd.exe)

SELECT SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS bigint) * 8192.) AS DatabaseSizeInBytes,
       SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS bigint) * 8192.) / 1024 / 1024 AS DatabaseSizeInMB,
       SUM(CAST(FILEPROPERTY(name, 'SpaceUsed') AS bigint) * 8192.) / 1024 / 1024 / 1024 AS DatabaseSizeInGB
FROM sys.database_files
WHERE type_desc = 'ROWS';
...