Мониторинг баз данных: MS SQL

Microsoft SQL Server на ваших Windows-серверах: нагрузка, память, блокировки, базы и журналы транзакций — дашборд и готовые алерты. В самой СУБД ничего не настраивается, пароль от неё агенту не нужен. PostgreSQL и MySQL/MariaDB — следующими.

Как включить

Ничего делать не нужно. Windows-агент (1.7 и новее) при установке видит службу MSSQLSERVER (экземпляр по умолчанию) или MSSQL$<имя> (именованный, в том числе Express) и включает сбор счётчиков производительности SQL Server. Если SQL Server поставили после агента — переустановите агента той же командой из портала, настройки сохранятся.

Данные — в дашборде «Базы данных: MS SQL» вашей Grafana. Фильтры сверху: сервер, экземпляр, база.

Откуда данные. Агент читает штатные счётчики производительности Windows (те же, что в «Системном мониторе», группа SQLServer). Подключения к СУБД, учётной записи в SQL Server и прав на базы для этого не нужно, запросы к базам агент не выполняет.

Что на дашборде

Алерты

В портале, раздел «Алерты», категория «Базы данных». Включены сразу, пороги и тексты меняются как у остальных правил (см. «Алерты и уведомления»).

ПравилоКогда срабатываетУровень
Служба остановлена (MssqlServiceDown)служба экземпляра с автозапуском не работает 3 минуты; остановленные вручную экземпляры с ручным запуском не трогаютсяcritical
Взаимоблокировки (MssqlDeadlocks)больше 5 взаимоблокировок за 15 минут; в 1С это «Конфликт блокировок при выполнении транзакции»warning
Процессы ждут блокировку (MssqlBlockedProcesses)есть заблокированные процессы 5 минут подрядwarning
Мало памяти под кеш (MssqlLowPageLife)страница живёт в кеше меньше 300 секунд 15 минут подряд; снимается выше 600warning
Журнал транзакций заполняется (MssqlLogFull)журнал базы занят больше чем на 90% 15 минут подряд; снимается ниже 80%warning
Долгая транзакция (MssqlLongTransaction)транзакция открыта дольше 30 минутwarning

Закрытие месяца и регламентные операции в 1С законно держат транзакцию дольше получаса — на такие окна правило «Долгая транзакция» можно заглушить или поднять порог.

Метрики для своих панелей

Все счётчики начинаются с windows_mssql_, у каждого есть метки instance (сервер) и mssql_instance (экземпляр), у счётчиков баз — database, у блокировок и ошибок — resource. Агрегат по всем базам и ресурсам приходит отдельной серией _Total — исключайте её при суммировании. Нарастающие счётчики (запросы, взаимоблокировки, транзакции) — через rate() или increase(). Например, запросы в секунду: sum(rate(windows_mssql_sqlstats_batch_requests[5m])).

Если данных нет

На сервере в PowerShell:

Get-Service MSSQLSERVER, 'MSSQL$*'                      # служба SQL Server есть?
(Get-CimInstance Win32_Service -Filter "Name='monitoring-windows-exporter'").PathName
# в строке запуска должен быть mssql в списке --collectors.enabled

Если mssql в списке нет — SQL Server поставили после агента: переустановите агента. Если счётчиков нет и в «Системном мониторе» (группы SQLServer:*), их восстанавливают командой lodctr /R от администратора.