MS SQL: различия между версиями

Материал из Документация Ключ-АСТРОМ
Новая страница: «= Глубокий мониторинг Microsoft SQL Server с Ключ-АСТРОМ = Ключ-АСТРОМ — это интеллектуальная платформа для всестороннего мониторинга '''Microsoft SQL Server''', позволяющая перейти от реактивного реагирования к проактивному предотвращению проблем. == Ключевые возможнос...»
 
Нет описания правки
 
Строка 1: Строка 1:
= Глубокий мониторинг Microsoft SQL Server с Ключ-АСТРОМ =
= Microsoft SQL Server =
Ключ-АСТРОМ — это интеллектуальная платформа для всестороннего мониторинга '''Microsoft SQL Server''', позволяющая перейти от реактивного реагирования к проактивному предотвращению проблем.


== Ключевые возможности ==
Расширение предназначено для удалённого мониторинга состояния и производительности экземпляров Microsoft SQL Server с помощью SQL-запросов, выполняемых контроллером расширений.


=== 1. Автоматическое обнаружение и инвентаризация ===
Идентификатор: <code>ru.ruscomtech.extension.sql-server</code>.
Платформа находит все экземпляры '''SQL Server''' в инфраструктуре:


* Локальные серверы (физические и виртуальные)
Расширение контролирует экземпляры и базы данных SQL Server, блокировки, память, транзакционные журналы, резервное копирование, задания SQL Server Agent и группы доступности Always On.
* Контейнеры ('''Docker''', '''Kubernetes''')
* Кластеры высокой доступности ('''Always On AG''', '''FCI''')


=== 2. Мониторинг производительности ===
== Возможности ==
Сбор более 500 метрик в реальном времени:


* Ресурсы: '''CPU''', память, диски, сеть
Расширение выполняет:
* Производительность запросов: время выполнения, блокировки, взаимоблокировки
* Нагрузка: соединения, транзакции, сессии
* Репликация и журналы транзакций


=== 3. Глубокий анализ SQL-запросов ===
* мониторинг экземпляров и отдельных баз данных SQL Server;
* сбор показателей подключений, сессий, памяти и производительности запросов;
* обнаружение блокировок, взаимоблокировок и длительных ожиданий;
* контроль заполнения и роста транзакционных журналов;
* контроль возраста и размера резервных копий;
* мониторинг файлов баз данных;
* сбор информации о выполняющихся и завершившихся с ошибкой заданиях;
* сбор наиболее продолжительных запросов;
* мониторинг групп, реплик и баз данных Always On;
* построение топологии экземпляров, баз данных и компонентов Always On;
* формирование готовой обзорной панели;
* применение готовых шаблонов оповещений.


* Выявление медленных и ресурсоемких запросов
Мониторинг выполняется удалённо. Устанавливать ЕдиныйАгент непосредственно на сервер SQL Server не обязательно.
* Просмотр планов выполнения
* Связь запросов с прикладными транзакциями
* Рекомендации по оптимизации (индексы, переписывание)


=== 4. Прогнозирование проблем (ИИ) ===
== Поддерживаемые системы ==
Использование искусственного интеллекта для:


* Обнаружения аномалий
Официально поддерживаются:
* Прогнозирования сбоев (например, нехватка памяти)
* Формирования рекомендаций по устранению


=== 5. Full-Stack Observability ===
* Microsoft SQL Server редакций Enterprise, Standard, Developer, Web и Express на Windows;
Интеграция данных '''SQL Server''' с мониторингом всего стека:
* Azure SQL Database;
* Azure SQL Managed Instance;
* группы доступности Always On.


* Трассировка запросов от фронтенда до БД
Расширение рассчитано на версии SQL Server, находящиеся на основной или расширенной поддержке Microsoft.
* Анализ влияния '''SQL''' на микросервисы
 
* Корреляция ошибок базы данных и приложений
Работа с SQL Server на Linux и AWS RDS возможна, но зависит от доступности используемых системных представлений.
 
Не рекомендуется одновременно контролировать один экземпляр с помощью нескольких конфигураций или разных основных версий расширения: это может привести к дублированию метрик и сущностей.
 
== Схема работы ==
 
<pre>
Microsoft SQL Server
        |
        | TCP, SQL-запросы
        v
АктивныйШлюз / EEC
        |
        | метрики, логи и топология
        v
Ключ-АСТРОМ
</pre>
 
Все устройства выбранной группы АктивныхШлюзов должны иметь сетевой доступ к контролируемому экземпляру SQL Server.
 
== Требования к подключению ==
 
Перед настройкой подготовьте:
 
* адрес сервера SQL Server;
* TCP-порт экземпляра, обычно <code>1433</code>;
* имя базы данных;
* отдельную учётную запись мониторинга;
* группу АктивныхШлюзов, с которой доступен сервер;
* разрешение сетевого доступа между АктивнымШлюзом и SQL Server;
* доверенный сертификат, если используется шифрование TLS.
 
Для именованного экземпляра рекомендуется указывать фактический TCP-порт. Если экземпляр использует динамический порт, его изменение потребует обновления конфигурации мониторинга.
 
Для получения общей информации об экземпляре в качестве базы подключения рекомендуется использовать <code>master</code>.
 
Сбор наиболее продолжительных запросов выполняется для базы данных, указанной в конечной точке подключения. Если необходимо получать статистику Query Store из нескольких баз, для них могут потребоваться отдельные конечные точки.
 
== Создание пользователя мониторинга ==
 
Набор разрешений зависит от включённых наборов функций. Не выдавайте учётной записи административные роли без необходимости.
 
Пример создания отдельной учётной записи:
 
<pre>
USE [master];
GO
 
CREATE LOGIN [keyastrom_monitor]
WITH PASSWORD = 'ЗАМЕНИТЕ_НА_НАДЕЖНЫЙ_ПАРОЛЬ';
GO
 
CREATE USER [keyastrom_monitor]
FOR LOGIN [keyastrom_monitor];
GO
 
GRANT VIEW ANY DATABASE TO [keyastrom_monitor];
GRANT VIEW ANY DEFINITION TO [keyastrom_monitor];
GO
</pre>
 
Для SQL Server 2019 и более ранних версий:
 
<pre>
GRANT VIEW SERVER STATE TO [keyastrom_monitor];
GO
</pre>
 
Для SQL Server 2022 и более новых версий:
 
<pre>
GRANT VIEW SERVER PERFORMANCE STATE TO [keyastrom_monitor];
GO
</pre>
 
Для чтения сведений о резервных копиях и заданиях создайте пользователя в базе <code>msdb</code> и предоставьте права чтения:
 
<pre>
USE [msdb];
GO
 
CREATE USER [keyastrom_monitor]
FOR LOGIN [keyastrom_monitor];
GO
 
ALTER ROLE [db_datareader]
ADD MEMBER [keyastrom_monitor];
GO
</pre>
 
Для сбора сессий и данных Query Store добавьте пользователя в контролируемую базу:
 
<pre>
USE [имя_базы_данных];
GO
 
CREATE USER [keyastrom_monitor]
FOR LOGIN [keyastrom_monitor];
GO
 
GRANT VIEW DATABASE STATE TO [keyastrom_monitor];
GO
</pre>
 
Если пользователь уже существует в нужной базе, повторно выполнять <code>CREATE USER</code> не требуется.
 
Для Azure SQL Database права назначаются с учётом используемой модели аутентификации и уровня службы. Для просмотра всех баз рекомендуется подключаться к базе <code>master</code>.
 
== Подготовка Query Store ==
 
Сбор наиболее продолжительных запросов требует включённого Query Store.
 
Проверить его состояние можно запросом:
 
<pre>
SELECT actual_state_desc
FROM sys.database_query_store_options;
</pre>
 
При необходимости Query Store включается администратором базы данных:
 
<pre>
ALTER DATABASE [имя_базы_данных]
SET QUERY_STORE = ON;
</pre>
 
Query Store необходимо включать отдельно в каждой базе, из которой должны собираться запросы.


== Установка и настройка ==
== Установка и настройка ==


=== Требования к АктивномуШлюзу ===
# Загрузите пакет расширения в Ключ-АСТРОМ.
# Откройте установленное расширение Microsoft SQL Server.
# Создайте конфигурацию мониторинга.
# Укажите имя конфигурации.
# Выберите группу АктивныхШлюзов.
# Добавьте конечную точку SQL Server.
# Укажите адрес сервера и TCP-порт.
# Укажите базу данных.
# Введите имя пользователя и пароль либо выберите учётные данные из хранилища секретов.
# При необходимости включите защищённое соединение.
# Выберите наборы функций.
# Сохраните и активируйте конфигурацию.
 
=== Основные параметры подключения ===
 
{| class="wikitable"
! Параметр
! Описание
|-
| Адрес
| DNS-имя или IP-адрес сервера SQL Server.
|-
| Порт
| TCP-порт экземпляра SQL Server. Стандартное значение — <code>1433</code>.
|-
| База данных
| База, используемая для подключения. Для общего мониторинга экземпляра рекомендуется <code>master</code>.
|-
| Имя пользователя
| Учётная запись с правами чтения необходимых системных представлений.
|-
| Пароль
| Пароль пользователя мониторинга или ссылка на запись в хранилище секретов.
|-
| Шифрование
| Использование TLS при подключении к SQL Server.
|-
| Наборы функций
| Группы метрик и логов, которые должна собирать конфигурация.
|-
| <code>Longest queries timeout</code>
| Максимальное время выполнения запроса сбора наиболее продолжительных запросов. Значение по умолчанию — <code>120</code> секунд. Рекомендуемый максимальный предел — <code>290</code> секунд.
|}
 
== Наборы функций ==
 
{| class="wikitable"
! Набор
! Назначение
|-
| <code>Always On</code>
| Группы доступности, реплики, состояние синхронизации, очереди отправки журналов и восстановления.
|-
| <code>Backups</code>
| Возраст, размер, тип и состояние резервных копий.
|-
| <code>Database files</code>
| Размер, занятое и свободное пространство файлов баз данных.
|-
| <code>Jobs</code>
| Текущие задания SQL Server Agent и задания, завершившиеся с ошибкой.
|-
| <code>Latches</code>
| Ожидания защёлок и их средняя продолжительность.
|-
| <code>Locks</code>
| Блокировки, взаимоблокировки, ожидания и тайм-ауты.
|-
| <code>Memory</code>
| Физическая, виртуальная и выделенная память, показатели буферного кеша.
|-
| <code>Queries</code>
| Компиляции, повторные компиляции и наиболее продолжительные запросы.
|-
| <code>Replication</code>
| Обмен данными с репликами SQL Server.
|-
| <code>Sessions</code>
| Активные сессии по пользователям и доменам.
|-
| <code>Transaction logs</code>
| Размер, заполнение, рост, усечение и ожидания сброса транзакционного журнала.
|}
 
Основные показатели экземпляра и состояние баз данных собираются независимо от дополнительных наборов.
 
Большинство метрик обновляется раз в минуту. Информация о продолжительных запросах, файлах, резервных копиях и заданиях собирается раз в пять минут.
 
== Основные группы метрик ==
 
{| class="wikitable"
! Группа
! Примеры метрик
! Описание
|-
| Подключения и сессии
| <code>sql-server.general.userConnections</code><br><code>sql-server.sessions</code>
| Пользовательские подключения и активные сессии.
|-
| Блокировки
| <code>sql-server.locks.deadlocks.count</code><br><code>sql-server.locks.waits.count</code><br><code>sql-server.locks.waitTime.count</code>
| Взаимоблокировки, ожидания и их продолжительность.
|-
| Память
| <code>sql-server.memory.physical</code><br><code>sql-server.memory.virtual</code><br><code>sql-server.memory.grantsPending</code>
| Использование памяти и процессы, ожидающие её выделения.
|-
| Буферный кеш
| <code>sql-server.buffers.pageLifeExpectancy</code><br><code>sql-server.buffers.pageWrites.count</code>
| Время жизни страниц и операции записи.
|-
| Запросы
| <code>sql-server.sql.batchRequests.count</code><br><code>sql-server.sql.compilations.count</code><br><code>sql-server.sql.recompilations.count</code>
| Пакеты запросов, компиляции и повторные компиляции.
|-
| Базы данных
| <code>sql-server.databases.state</code><br><code>sql-server.databases.transactions.count</code>
| Состояние баз данных и количество транзакций.
|-
| Транзакционные журналы
| <code>sql-server.databases.log.percentUsed</code><br><code>sql-server.databases.log.filesSize</code><br><code>sql-server.databases.log.growths.count</code>
| Использование, размер и рост журналов.
|-
| Резервное копирование
| <code>sql-server.databases.backup.age</code><br><code>sql-server.databases.backup.size</code>
| Возраст и размер последней резервной копии.
|-
| Файлы базы данных
| <code>sql-server.databases.file.size</code><br><code>sql-server.databases.file.usedSpace</code><br><code>sql-server.databases.file.emptySpace</code>
| Общий, занятый и свободный объём файлов.
|}
 
== Сбор логов ==
 
Часть подробной информации передаётся в виде записей логов:
 
* наиболее продолжительные запросы;
* крупнейшие файлы баз данных;
* текущие задания;
* задания, завершившиеся с ошибкой;
* сведения об отдельных резервных копиях.
 
Для получения наиболее продолжительных запросов должны быть включены:
 
* набор <code>Queries</code>;
* Query Store в целевой базе;
* разрешение <code>VIEW DATABASE STATE</code>;
* приём логов расширения.
 
Значение <code>Longest queries timeout</code> определяет, сколько времени контроллер ожидает завершения служебного запроса. Увеличивайте его только при регулярных тайм-аутах сбора.
 
== Always On ==
 
Набор <code>Always On</code> доступен для SQL Server 2016 и новее.
 
Расширение собирает:
 
* состояние и работоспособность группы доступности;
* роли и состояние подключения реплик;
* режим доступности и переключения;
* состояние синхронизации баз данных;
* размер и скорость обработки очередей отправки и восстановления;
* скорость передачи FILESTREAM.
 
Для работы набора требуются права чтения представлений <code>sys.availability_*</code> и <code>sys.dm_hadr_*</code>.
 
В версии <code>2.5.4</code> для реплик стандартного экземпляра используется значение <code>MSSQLSERVER</code>. Это позволяет корректно связывать реплику Always On с соответствующим экземпляром SQL Server.
 
== Обнаруживаемые сущности ==
 
Расширение создаёт следующие сущности:
 
* <code>SQL Server Host</code>;
* <code>SQL Server Instance</code>;
* <code>SQL Server Database</code>;
* <code>SQL Server Availability Group</code>;
* <code>SQL Server Availability Replica</code>;
* <code>SQL Server Availability Database</code>.
 
Базы данных связываются с экземплярами, экземпляры — с хостами, а базы доступности — с соответствующими репликами и группами.
 
Для связывания экземпляра с хостом адрес, указанный в конфигурации, должен совпадать с IP-адресом хоста, контролируемого ЕдинымАгентом.
 
== Обзорная панель ==
 
В состав расширения входит панель <code>SQL Server Overview</code>. Она содержит:
 
* наиболее загруженные экземпляры и базы данных;
* базы данных, находящиеся не в состоянии <code>ONLINE</code>;
* группы и реплики доступности;
* количество компиляций и повторных компиляций;
* состояние синхронизации Always On.
 
== Шаблоны оповещений ==
 
Расширение содержит готовые шаблоны:
 
* <code>SQL Server low buffer cache hit rate</code> — низкий коэффициент попаданий в буферный кеш;
* <code>SQL Server high log usage</code> — высокий уровень заполнения транзакционного журнала.
 
После установки шаблоны необходимо проверить и адаптировать под рабочую нагрузку конкретной среды.
 
== Проверка работы ==
 
После активации конфигурации проверьте:
 
# состояние конфигурации расширения;
# успешность подключения к конечной точке;
# появление сущности экземпляра SQL Server;
# обнаружение баз данных;
# поступление метрик с префиксом <code>sql-server</code>;
# наличие данных на панели <code>SQL Server Overview</code>.
 
Базовую доступность SQL Server можно проверить с хоста АктивногоШлюза:
 
<pre>
sqlcmd -S tcp:&lt;адрес&gt;,&lt;порт&gt; -d master -U keyastrom_monitor -Q "SELECT @@SERVERNAME"
</pre>
 
Проверить доступность основных системных представлений можно запросами:


* Ресурсы: 2 '''vCPU''', 4 ГБ '''RAM''', 30 ГБ '''HDD'''
<pre>
* Поддерживаемые ОС: '''RHEL''', '''CentOS''', '''Oracle Linux''', '''Ubuntu''', '''SUSE''', '''Windows''', '''Астра Линукс''' и др.
SELECT TOP (1) * FROM sys.dm_os_sys_info;
SELECT TOP (1) * FROM sys.dm_os_performance_counters;
SELECT name, state_desc FROM sys.databases;
</pre>


=== Необходимые разрешения ===
== Устранение неисправностей ==
Для пользователя мониторинга требуются:


* <code>VIEW SERVER STATE</code> (<code>VIEW SERVER PERFORMANCE STATE</code> для '''SQL''' 2022+)
{| class="wikitable"
* <code>VIEW DATABASE STATE</code>
! Проблема
* <code>VIEW ANY DEFINITION</code>
! Возможная причина и решение
|-
| Не удаётся подключиться к серверу
| Проверьте адрес, порт, правила межсетевого экрана, работу TCP/IP в SQL Server Configuration Manager и доступность сервера с АктивногоШлюза.
|-
| Ошибка аутентификации
| Проверьте тип аутентификации, имя пользователя, пароль и наличие пользователя в указанной базе данных.
|-
| Поступает только часть метрик
| Проверьте выбранные наборы функций и права пользователя на соответствующие системные представления.
|-
| Не отображаются все базы данных
| Подключайтесь к <code>master</code> и проверьте право <code>VIEW ANY DATABASE</code>.
|-
| Не поступают наиболее продолжительные запросы
| Включите Query Store, набор <code>Queries</code>, приём логов и право <code>VIEW DATABASE STATE</code>.
|-
| Не поступают резервные копии или задания
| Проверьте доступ пользователя к таблицам базы <code>msdb</code> и включение наборов <code>Backups</code> и <code>Jobs</code>.
|-
| Не собираются метрики Always On
| Проверьте версию SQL Server, набор <code>Always On</code> и права на представления <code>sys.availability_*</code> и <code>sys.dm_hadr_*</code>.
|-
| Экземпляр не связывается с хостом
| Убедитесь, что в конфигурации указан тот же IP-адрес, который обнаружен ЕдинымАгентом.
|-
| Служебный запрос завершается по тайм-ауту
| Увеличьте <code>Longest queries timeout</code>. Значение должно быть целым числом и не должно превышать <code>290</code> секунд.
|}


=== Процесс установки ===
== История изменений ==


# Перейдите в раздел '''Расширения''' интерфейса Ключ-АСТРОМ.
{| class="wikitable"
# Загрузите расширение '''MSSQL''' через UI (перетаскивание или выбор файла).
! Версия
# Введите параметры подключения:
! Изменения
#* Хост и порт базы данных
|-
#* Имя базы данных
| 2.5.4
#* Логин и пароль пользователя
|
# Сохраните конфигурацию и проверьте соединение.
* Начало поддержки расширения
* Для измерения <code>availability.replica.instance</code> добавлено значение по умолчанию <code>MSSQLSERVER</code>.
* Исправлено связывание реплик Always On со стандартными экземплярами SQL Server.
|-


Примечание: Расширение выполняет только '''SELECT'''-запросы к системным представлениям (<code>sys.*</code>, <code>msdb</code>). Нагрузка на БД минимальна благодаря кэшированию.
|}

Текущая версия от 03:33, 30 сентября 2026

Microsoft SQL Server

Расширение предназначено для удалённого мониторинга состояния и производительности экземпляров Microsoft SQL Server с помощью SQL-запросов, выполняемых контроллером расширений.

Идентификатор: ru.ruscomtech.extension.sql-server.

Расширение контролирует экземпляры и базы данных SQL Server, блокировки, память, транзакционные журналы, резервное копирование, задания SQL Server Agent и группы доступности Always On.

Возможности

Расширение выполняет:

  • мониторинг экземпляров и отдельных баз данных SQL Server;
  • сбор показателей подключений, сессий, памяти и производительности запросов;
  • обнаружение блокировок, взаимоблокировок и длительных ожиданий;
  • контроль заполнения и роста транзакционных журналов;
  • контроль возраста и размера резервных копий;
  • мониторинг файлов баз данных;
  • сбор информации о выполняющихся и завершившихся с ошибкой заданиях;
  • сбор наиболее продолжительных запросов;
  • мониторинг групп, реплик и баз данных Always On;
  • построение топологии экземпляров, баз данных и компонентов Always On;
  • формирование готовой обзорной панели;
  • применение готовых шаблонов оповещений.

Мониторинг выполняется удалённо. Устанавливать ЕдиныйАгент непосредственно на сервер SQL Server не обязательно.

Поддерживаемые системы

Официально поддерживаются:

  • Microsoft SQL Server редакций Enterprise, Standard, Developer, Web и Express на Windows;
  • Azure SQL Database;
  • Azure SQL Managed Instance;
  • группы доступности Always On.

Расширение рассчитано на версии SQL Server, находящиеся на основной или расширенной поддержке Microsoft.

Работа с SQL Server на Linux и AWS RDS возможна, но зависит от доступности используемых системных представлений.

Не рекомендуется одновременно контролировать один экземпляр с помощью нескольких конфигураций или разных основных версий расширения: это может привести к дублированию метрик и сущностей.

Схема работы

Microsoft SQL Server
        |
        | TCP, SQL-запросы
        v
АктивныйШлюз / EEC
        |
        | метрики, логи и топология
        v
Ключ-АСТРОМ

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

Требования к подключению

Перед настройкой подготовьте:

  • адрес сервера SQL Server;
  • TCP-порт экземпляра, обычно 1433;
  • имя базы данных;
  • отдельную учётную запись мониторинга;
  • группу АктивныхШлюзов, с которой доступен сервер;
  • разрешение сетевого доступа между АктивнымШлюзом и SQL Server;
  • доверенный сертификат, если используется шифрование TLS.

Для именованного экземпляра рекомендуется указывать фактический TCP-порт. Если экземпляр использует динамический порт, его изменение потребует обновления конфигурации мониторинга.

Для получения общей информации об экземпляре в качестве базы подключения рекомендуется использовать master.

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

Создание пользователя мониторинга

Набор разрешений зависит от включённых наборов функций. Не выдавайте учётной записи административные роли без необходимости.

Пример создания отдельной учётной записи:

USE [master];
GO

CREATE LOGIN [keyastrom_monitor]
WITH PASSWORD = 'ЗАМЕНИТЕ_НА_НАДЕЖНЫЙ_ПАРОЛЬ';
GO

CREATE USER [keyastrom_monitor]
FOR LOGIN [keyastrom_monitor];
GO

GRANT VIEW ANY DATABASE TO [keyastrom_monitor];
GRANT VIEW ANY DEFINITION TO [keyastrom_monitor];
GO

Для SQL Server 2019 и более ранних версий:

GRANT VIEW SERVER STATE TO [keyastrom_monitor];
GO

Для SQL Server 2022 и более новых версий:

GRANT VIEW SERVER PERFORMANCE STATE TO [keyastrom_monitor];
GO

Для чтения сведений о резервных копиях и заданиях создайте пользователя в базе msdb и предоставьте права чтения:

USE [msdb];
GO

CREATE USER [keyastrom_monitor]
FOR LOGIN [keyastrom_monitor];
GO

ALTER ROLE [db_datareader]
ADD MEMBER [keyastrom_monitor];
GO

Для сбора сессий и данных Query Store добавьте пользователя в контролируемую базу:

USE [имя_базы_данных];
GO

CREATE USER [keyastrom_monitor]
FOR LOGIN [keyastrom_monitor];
GO

GRANT VIEW DATABASE STATE TO [keyastrom_monitor];
GO

Если пользователь уже существует в нужной базе, повторно выполнять CREATE USER не требуется.

Для Azure SQL Database права назначаются с учётом используемой модели аутентификации и уровня службы. Для просмотра всех баз рекомендуется подключаться к базе master.

Подготовка Query Store

Сбор наиболее продолжительных запросов требует включённого Query Store.

Проверить его состояние можно запросом:

SELECT actual_state_desc
FROM sys.database_query_store_options;

При необходимости Query Store включается администратором базы данных:

ALTER DATABASE [имя_базы_данных]
SET QUERY_STORE = ON;

Query Store необходимо включать отдельно в каждой базе, из которой должны собираться запросы.

Установка и настройка

  1. Загрузите пакет расширения в Ключ-АСТРОМ.
  2. Откройте установленное расширение Microsoft SQL Server.
  3. Создайте конфигурацию мониторинга.
  4. Укажите имя конфигурации.
  5. Выберите группу АктивныхШлюзов.
  6. Добавьте конечную точку SQL Server.
  7. Укажите адрес сервера и TCP-порт.
  8. Укажите базу данных.
  9. Введите имя пользователя и пароль либо выберите учётные данные из хранилища секретов.
  10. При необходимости включите защищённое соединение.
  11. Выберите наборы функций.
  12. Сохраните и активируйте конфигурацию.

Основные параметры подключения

Параметр Описание
Адрес DNS-имя или IP-адрес сервера SQL Server.
Порт TCP-порт экземпляра SQL Server. Стандартное значение — 1433.
База данных База, используемая для подключения. Для общего мониторинга экземпляра рекомендуется master.
Имя пользователя Учётная запись с правами чтения необходимых системных представлений.
Пароль Пароль пользователя мониторинга или ссылка на запись в хранилище секретов.
Шифрование Использование TLS при подключении к SQL Server.
Наборы функций Группы метрик и логов, которые должна собирать конфигурация.
Longest queries timeout Максимальное время выполнения запроса сбора наиболее продолжительных запросов. Значение по умолчанию — 120 секунд. Рекомендуемый максимальный предел — 290 секунд.

Наборы функций

Набор Назначение
Always On Группы доступности, реплики, состояние синхронизации, очереди отправки журналов и восстановления.
Backups Возраст, размер, тип и состояние резервных копий.
Database files Размер, занятое и свободное пространство файлов баз данных.
Jobs Текущие задания SQL Server Agent и задания, завершившиеся с ошибкой.
Latches Ожидания защёлок и их средняя продолжительность.
Locks Блокировки, взаимоблокировки, ожидания и тайм-ауты.
Memory Физическая, виртуальная и выделенная память, показатели буферного кеша.
Queries Компиляции, повторные компиляции и наиболее продолжительные запросы.
Replication Обмен данными с репликами SQL Server.
Sessions Активные сессии по пользователям и доменам.
Transaction logs Размер, заполнение, рост, усечение и ожидания сброса транзакционного журнала.

Основные показатели экземпляра и состояние баз данных собираются независимо от дополнительных наборов.

Большинство метрик обновляется раз в минуту. Информация о продолжительных запросах, файлах, резервных копиях и заданиях собирается раз в пять минут.

Основные группы метрик

Группа Примеры метрик Описание
Подключения и сессии sql-server.general.userConnections
sql-server.sessions
Пользовательские подключения и активные сессии.
Блокировки sql-server.locks.deadlocks.count
sql-server.locks.waits.count
sql-server.locks.waitTime.count
Взаимоблокировки, ожидания и их продолжительность.
Память sql-server.memory.physical
sql-server.memory.virtual
sql-server.memory.grantsPending
Использование памяти и процессы, ожидающие её выделения.
Буферный кеш sql-server.buffers.pageLifeExpectancy
sql-server.buffers.pageWrites.count
Время жизни страниц и операции записи.
Запросы sql-server.sql.batchRequests.count
sql-server.sql.compilations.count
sql-server.sql.recompilations.count
Пакеты запросов, компиляции и повторные компиляции.
Базы данных sql-server.databases.state
sql-server.databases.transactions.count
Состояние баз данных и количество транзакций.
Транзакционные журналы sql-server.databases.log.percentUsed
sql-server.databases.log.filesSize
sql-server.databases.log.growths.count
Использование, размер и рост журналов.
Резервное копирование sql-server.databases.backup.age
sql-server.databases.backup.size
Возраст и размер последней резервной копии.
Файлы базы данных sql-server.databases.file.size
sql-server.databases.file.usedSpace
sql-server.databases.file.emptySpace
Общий, занятый и свободный объём файлов.

Сбор логов

Часть подробной информации передаётся в виде записей логов:

  • наиболее продолжительные запросы;
  • крупнейшие файлы баз данных;
  • текущие задания;
  • задания, завершившиеся с ошибкой;
  • сведения об отдельных резервных копиях.

Для получения наиболее продолжительных запросов должны быть включены:

  • набор Queries;
  • Query Store в целевой базе;
  • разрешение VIEW DATABASE STATE;
  • приём логов расширения.

Значение Longest queries timeout определяет, сколько времени контроллер ожидает завершения служебного запроса. Увеличивайте его только при регулярных тайм-аутах сбора.

Always On

Набор Always On доступен для SQL Server 2016 и новее.

Расширение собирает:

  • состояние и работоспособность группы доступности;
  • роли и состояние подключения реплик;
  • режим доступности и переключения;
  • состояние синхронизации баз данных;
  • размер и скорость обработки очередей отправки и восстановления;
  • скорость передачи FILESTREAM.

Для работы набора требуются права чтения представлений sys.availability_* и sys.dm_hadr_*.

В версии 2.5.4 для реплик стандартного экземпляра используется значение MSSQLSERVER. Это позволяет корректно связывать реплику Always On с соответствующим экземпляром SQL Server.

Обнаруживаемые сущности

Расширение создаёт следующие сущности:

  • SQL Server Host;
  • SQL Server Instance;
  • SQL Server Database;
  • SQL Server Availability Group;
  • SQL Server Availability Replica;
  • SQL Server Availability Database.

Базы данных связываются с экземплярами, экземпляры — с хостами, а базы доступности — с соответствующими репликами и группами.

Для связывания экземпляра с хостом адрес, указанный в конфигурации, должен совпадать с IP-адресом хоста, контролируемого ЕдинымАгентом.

Обзорная панель

В состав расширения входит панель SQL Server Overview. Она содержит:

  • наиболее загруженные экземпляры и базы данных;
  • базы данных, находящиеся не в состоянии ONLINE;
  • группы и реплики доступности;
  • количество компиляций и повторных компиляций;
  • состояние синхронизации Always On.

Шаблоны оповещений

Расширение содержит готовые шаблоны:

  • SQL Server low buffer cache hit rate — низкий коэффициент попаданий в буферный кеш;
  • SQL Server high log usage — высокий уровень заполнения транзакционного журнала.

После установки шаблоны необходимо проверить и адаптировать под рабочую нагрузку конкретной среды.

Проверка работы

После активации конфигурации проверьте:

  1. состояние конфигурации расширения;
  2. успешность подключения к конечной точке;
  3. появление сущности экземпляра SQL Server;
  4. обнаружение баз данных;
  5. поступление метрик с префиксом sql-server;
  6. наличие данных на панели SQL Server Overview.

Базовую доступность SQL Server можно проверить с хоста АктивногоШлюза:

sqlcmd -S tcp:<адрес>,<порт> -d master -U keyastrom_monitor -Q "SELECT @@SERVERNAME"

Проверить доступность основных системных представлений можно запросами:

SELECT TOP (1) * FROM sys.dm_os_sys_info;
SELECT TOP (1) * FROM sys.dm_os_performance_counters;
SELECT name, state_desc FROM sys.databases;

Устранение неисправностей

Проблема Возможная причина и решение
Не удаётся подключиться к серверу Проверьте адрес, порт, правила межсетевого экрана, работу TCP/IP в SQL Server Configuration Manager и доступность сервера с АктивногоШлюза.
Ошибка аутентификации Проверьте тип аутентификации, имя пользователя, пароль и наличие пользователя в указанной базе данных.
Поступает только часть метрик Проверьте выбранные наборы функций и права пользователя на соответствующие системные представления.
Не отображаются все базы данных Подключайтесь к master и проверьте право VIEW ANY DATABASE.
Не поступают наиболее продолжительные запросы Включите Query Store, набор Queries, приём логов и право VIEW DATABASE STATE.
Не поступают резервные копии или задания Проверьте доступ пользователя к таблицам базы msdb и включение наборов Backups и Jobs.
Не собираются метрики Always On Проверьте версию SQL Server, набор Always On и права на представления sys.availability_* и sys.dm_hadr_*.
Экземпляр не связывается с хостом Убедитесь, что в конфигурации указан тот же IP-адрес, который обнаружен ЕдинымАгентом.
Служебный запрос завершается по тайм-ауту Увеличьте Longest queries timeout. Значение должно быть целым числом и не должно превышать 290 секунд.

История изменений

Версия Изменения
2.5.4
  • Начало поддержки расширения
  • Для измерения availability.replica.instance добавлено значение по умолчанию MSSQLSERVER.
  • Исправлено связывание реплик Always On со стандартными экземплярами SQL Server.