Сегодня мы бы хотели написать об очередной фиче нашего сервиса — мониторинге баз данных.
Существует множество различных сервисов и метрик, которые помогают собирать информацию о количествах посещений сайта, сумме продаж и других важных для бизнеса показателей. Но если нужно эти показатели как-то между собой сравнить? Или же возникнет необходимость проверять более «технические» значения, например, прирост базы?
ХостТрекер предлагает функцию для решения подобных задач — мониторинг БД.
Настройка запроса
Эта функция позволяет при каждой проверке исполнять определенный запрос к базе данных, и заданным образом обрабатывать ее результат. Если запрос не задать – будет тестироваться возможность подключения к базе. Самое интересное – возможность с заданным интервалом исполнять определенный запрос, сохранять и сравнивать результат. Запрос может быть любой – от простых выборок до регулярных апдейтов таблиц, запуска процедур (вместо планировщика), разнообразных сравнений и логических операций. Единственное ограничение – он должен выполняться за 30 секунд, иначе будет возвращена ошибка (таймаут). Каким образом эти данные можно анализировать?
Рекомендуется писать такие запросы, которые возвращают нужное значение в первой колонке первой строки результата. Именно это значение можно анализировать. Для запросов типа UPDATE, INSERT, DELETE фиксируется количество обработанных строк.
Например, график результата выполнения DELETE по определенным параметрам:
Каждый результат запроса записывается, последний показывается в таблице заданий на интерфейсе. Если значение числовое – по нему строится график и можно отследить его поведение. Есть возможность выбрать условия для сравнения этого результата – оно может быть равно/не равно определенному значению, превышать его, находиться в заданном диапазоне или вне его.
Если условие не выполнено, или же запрос не прошел по причине таймаута, или же нет связи с БД – Вам придет оповещение (напомним, ХостТрекер поддерживает СМС, E-mail, Skype, Gtalk, голосовой звонок).
Пример использования
Сценарий для отслеживания размера файлов БД и получения уведомлений при достижении определенного критического значения.
1. Пишем запрос чтобы вытащить нужные нам данные о свободном месте в табличном пространстве:
SELECT
convert(DECIMAL(12,2),round(sysfile.size/128.000,2)) AS 'FileSize/mb'
, convert(DECIMAL(12,2),round(fileproperty(sysfile.name,'SpaceUsed')/128.000,2))
AS 'Used/mb'
, convert(DECIMAL(12,2),round((sysfile.size-fileproperty(sysfile.name,'SpaceUsed'))/128.000,2))
AS 'Free/mb'
, filegroup.groupname AS 'File-group'
, sysfile.[name],sysfile.[filename]
FROM dbo.sysfiles sysfile (NOLOCK)
inner join dbo.sysfilegroups filegroup (NOLOCK) ON filegroup.groupid =
sysfile.groupid
UNION ALL
SELECT
convert(DECIMAL(12,2),round(sysfile.size/128.000,2)) AS 'FileSize/mb'
, convert(DECIMAL(12,2),round(fileproperty(sysfile.name,'SpaceUsed')/128.000,2))
AS 'Used/mb'
, convert(DECIMAL(12,2),round((sysfile.size-fileproperty(sysfile.name,'SpaceUsed'))/128.000,2))
AS 'Free/mb'
, (CASE WHEN sysfile.groupid = 0 THEN 'Log' END) AS 'File-group'
, sysfile.[name],sysfile.[filename]
FROM dbo.sysfiles sysfile (NOLOCK) WHERE groupid = 0
ORDER BY [File-group],sysfile.[name]
2. Получаем такую картинку:
3. Выбираем нужные параметры:
Результат запроса — «значение в первой колонке первой строки»
Проверка результата — «меньше, чем» и вводим в поле значения «1000».
Результат — если лог файл превысит 1 Гб, мы получим оповещение. Кроме того, можно просмотреть историю — как быстро и когда именно наблюдается прирост.
Настройка мониторинга
При настройке, необходимо задать адрес сервера, порт, название базы, логин и пароль пользователя, под которым будет исполняться запрос. Строго рекомендуется создать отдельного пользователя с ограниченными правами, на всякий случай. И в то же время не забыть дать ему права на те действия, которые ему предполагается совершать. Также необходимо добавить адреса серверов ХостТрекера, откуда будут проводиться проверки, в белый список файрвола и сервера БД, чтобы обеспечить доступ к базе. Адреса указаны тут же, они постоянные.
Автор: smiHT