Расширение Microsoft SQL Server

Материал из Документация Ключ-АСТРОМ

Улучшите мониторинг работоспособности и производительности ваших серверов Microsoft SQL.

Обзор

Мониторинг баз данных Microsoft SQL Server основан на подходе удалённого мониторинга, реализованном в виде расширения Ключ-АСТРОМ АктивныйШлюз. Это расширение запрашивает ключевые показатели производительности и работоспособности баз данных MS SQL, расширяя вашу прозрачность и позволяя ИИ выявлять аномалии и анализировать проблемы.

  • Получите обзор мониторинга вашего SQL Server с помощью новых панелей мониторинга, которые поставляются вместе с расширением после активации. (6026E849-7AFD-4C31-8428-4D2A8F2C8A22).png
  • Просматривайте самые большие файлы в среде SQL Server с помощью логов, принимаемых расширением. (9BC3DCF6-E24B-430F-AA59-4432387B8E9A).png
  • Просматривайте самые долго выполняющиеся запросы в среде SQL Server с помощью логов, полученных расширением. (F077949E-B9DC-4F57-A9D9-CCA7FC151200).png
  • Вид фрагмента (34F97B98-D15B-42E7-8784-7CB8AB961CF3).png
  • Диаграммы блокировок и SQL-операторов (9EC6C001-F09E-4C5F-ACF7-25E6512341BE).png
  • Мониторинг памяти (B8BF0605-4BCF-4F06-989C-F818BD7D31BB).png

Старт

Активация

  • Активируйте расширение в : Ключ-АСТРОМ → SQL Server → Добавить в среду.
  • Добавьте конфигурацию мониторинга с конечными точками, которые подключаются к отдельным экземплярам SQL Server.
    • Более подробную информацию о быстром старте можно найти в документации.
  • Включение мониторинга логов активирует логи состояния расширений и позволит отслеживать самые продолжительные запросы и самые большие файлы базы данных.

Варианты использования

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

Информация о совместимости

Поддерживаемые типы SQL Server

  • SQL Server (редакции: Enterprise, Standard, Developer, Web, Express) на серверах Windows.
  • База данных Azure SQL.
  • Управляемый экземпляр Azure SQL.

Важное примечание: сообщается, что расширение работает с другими типами SQL Server, такими как AWS RDS или SQL Server на Linux, но официально они не поддерживаются.

Поддерживаемые типы HA или репликации

  • Всегда включен

Важное примечание: другие типы репликации и мониторинга высокой доступности, включая модель «издатель/подписчик», пока не поддерживаются.

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

Это расширение поддерживает любую версию SQL Server с активной расширенной поддержкой Microsoft. Сведения о сроках жизненного цикла SQL Server см . в официальной документации Microsoft.

Одновременное использование разных версий расширения

  • Запуск двух или более различных версий расширения на одном и том же SQL Server не поддерживается.
  • Запуск разных основных версий расширения (например, версии 1 и версии 2) на одном клиенте крайне не рекомендуется и не поддерживается . Это нарушит модель топологии.

Совместимость с OneAgent

  • Для связи сущности «Экземпляр SQL Server» с сущностью «Хост» они должны иметь один и тот же IP-адрес. Если конфигурация мониторинга SQL Server настроена на другой IP-адрес, два экземпляра не будут связаны друг с другом.

Использование DQL и журналов

Популярные запросы

Как включить?

С помощью набора функций Queries можно включить сбор самых популярных запросов, упорядоченных по общей длительности.

Требования

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

Как часто обновляется информация?

Самые популярные запросы выбираются расширением каждые 5 минут.

Как составить список популярных запросов?

При выполнении приведенного ниже запроса в журналах и событиях отображаются самые популярные запросы, наблюдавшиеся за последние 5 минут, с использованием DQL:

fetch logs, from:now()-60m

| filter matchesValue(dt.extension.name, "com.dynatrace.extension.sql-server")

| filter matchesValue(event.group, "longest_queries")

| fields total_duration, avg_duration, content, server, instance, num_executions, query_plan

| sort asDouble(total_duration) desc

Описание полей:

  • total_duration поле представляет собой сумму всех выполнений этого запроса за указанный 5-минутный период в секундах
  • avg_duration представляет собой среднее время выполнения этого запроса за заданный 5-минутный период в секундах
  • content поле содержит текст SQL-запроса

В Managed клиентах: записи логов можно получить, отфильтровав логи с использованием двух атрибутов.

  • dt.extension.name: com.dynatrace.extension.sql-server; и
  • event.group: longest_queries.

Самые большие файлы

Как включить?

Сбор самых больших по размеру файлов базы данных можно осуществить с помощью набора функций Database files.

Как часто обновляется информация?

Самые большие по размеру файлы баз данных по расширению извлекаются каждые 5 минут.

Как составить список самых больших файлов баз данных по размеру?

При выполнении приведенного ниже запроса в журналах и событиях отображаются самые большие файлы базы данных, наблюдавшиеся за последние 5 минут, по размеру с использованием DQL:

fetch logs, from:now()-5m

| filter matchesValue(dt.extension.name, "com.dynatrace.extension.sql-server")

| filter matchesValue(event.group, "largest_files")

| fields content, file_size, file_type_desc, file_state_desc, database, server, instance, file_used_space, file_empty_space

| sort asDouble(file_size) desc


Описание полей:

  • content поле представляет физическое имя файла, обрабатываемое хост-ОС
  • file_size сообщается в КБ
  • file_used_space указывается в КБ и представляет собой объем пространства, занимаемого выделенными страницами в определенном файле
  • file_empty_space указывается в КБ и представляет собой объем свободного места в определенном файле

В Managed клиентах: записи логов можно получить, отфильтровав журналы с использованием двух атрибутов.

  • dt.extension.name: com.dynatrace.extension.sql-server; и
  • event.group: largest_files.

Текущие Jobs

Как включить?

С помощью набора функций Jobs можно включить мониторинг текущих заданий.

Как часто обновляется информация?

Текущие задания загружаются расширением каждые 5 минут.

Как составить список текущих мест работы?

Приведенный ниже запрос при выполнении в логах и событиях отображает текущие задания, наблюдаемые за последние 5 минут, с использованием DQL:

fetch logs, from:now()-5m

| filter matchesValue(dt.extension.name, "com.dynatrace.extension.sql-server")

| filter matchesValue(event.group, "current_jobs")

| fields job_name, job_status, content, enabled, last_run_outcome, duration, instance, server, start_execution_date, stop_execution_date, job_category, category_name

| sort asDouble(duration) desc


Описание полей:

  • content поле представляет собой последнее сообщение о результате выполнения.
  • job_status и last_run_outcome идентичны, за исключением двух ситуаций:
    • Когда задание job_status еще не было выполнено, то равно Idle
    • Когда задание job_status в данный момент выполняется, то равно In Progress
  • duration представляет собой полную продолжительность работы в секундах после завершения выполнения
  • category_id представляет идентификатор категории работы
  • category_name представляет собой имя, присвоенное идентификатору категории

В Managed клиентах: записи логов можно получить, отфильтровав логи с использованием двух атрибутов.

  • dt.extension.name: com.dynatrace.extension.sql-server; и
  • event.group: current_jobs.

Неудачные Jobs

Как включить?

Мониторинг невыполненных заданий можно включить с помощью набора функций Jobs.

Как часто обновляется информация?

Невыполненные задания извлекаются расширением каждые 5 минут.

Как составить список невыполненных работ?

Приведенный ниже запрос при выполнении в логах и событиях отображает невыполненные задания, зафиксированные за последние 5 минут, с использованием DQL:

fetch logs, from:now()-5m

| filter matchesValue(dt.extension.name, "com.dynatrace.extension.sql-server")

| filter matchesValue(event.group, "failed_jobs")

| fields job_name, step_name, outcome, content, duration, instance, server, sql_severity, retries_attempted, start_execution_date, stop_execution_date

| sort stop_execution_date desc


Описание полей:

  • content поле представляет собой сообщение последнего выполненного шага и обычно содержит ошибку.
  • outcome представляет собой окончательное сообщение о состоянии задания, составленное агентом SQL Server.
  • duration представляет собой полную продолжительность работы в секундах после завершения выполнения

В Managed клиентах: записи логов можно получить, отфильтровав логи с использованием двух атрибутов.

  • dt.extension.name: com.dynatrace.extension.sql-server; и
  • event.group: failed_jobs.

Разрешения

Каждый доступный набор функций поддерживается соответствующим набором типов SQL Server. Подробную информацию об отдельных разрешениях, которые необходимо предоставить пользователю расширения для каждого набора функций, см. в разделе « Задействованные представления и таблицы» , а подробную информацию о разрешениях для каждого системного представления см. ниже.

Поддерживаемые системы и используемые системные представления для каждого набора функций

default

Supported on:

  • SQL Server (all versions)
  • Azure SQL Database
  • Azure SQL Managed Instance
  • Azure Synapse Analytics
  • Analytics Platform System (PDW)

Views and tables involved:

  • sys.dm_os_sys_info
  • sys.dm_os_performance_counters
  • sys.databases

Memory

Supported on:

  • SQL Server (all versions)
  • Azure SQL Database
  • Azure SQL Managed Instance
  • Azure Synapse Analytics
  • Analytics Platform System (PDW)

Involved Views and Tables:

  • sys.dm_os_performance_counters

Locks

Supported on:

  • SQL Server (all versions)
  • Azure SQL Database
  • Azure SQL Managed Instance
  • Azure Synapse Analytics
  • Analytics Platform System (PDW)

Involved Views and Tables:

  • sys.dm_os_performance_counters

Latches

Supported on:

  • SQL Server (all versions)
  • Azure SQL Database
  • Azure SQL Managed Instance
  • Azure Synapse Analytics
  • Analytics Platform System (PDW)

Involved Views and Tables:

  • sys.dm_os_performance_counters

Queries

  • Monitoring query performance stats Supported on:
    • SQL Server (all versions) Involved Views and Tables:
    • sys.dm_os_performance_counters
  • Monitoring TOP longest queries Supported on:
    • SQL Server (2016 and later)
    • Azure SQL Database
    • Azure SQL Managed Instance
    • Azure Synapse Analytics Involved Views and Tables:
    • sys.query_store_runtime_stats
    • sys.query_store_plan
    • sys.query_store_query
    • sys.query_store_query_text

Replication

Supported on:

  • SQL Server (all versions)
  • Azure SQL Database
  • Azure SQL Managed Instance
  • Azure Synapse Analytics
  • Analytics Platform System (PDW)

Involved Views and Tables:

  • sys.dm_os_performance_counters

Sessions

Supported on:

  • SQL Server (all versions)
  • Azure SQL Database
  • Azure SQL Managed Instance
  • Azure Synapse Analytics
  • Analytics Platform System (PDW)
  • SQL analytics endpoint in Microsoft Fabric
  • Warehouse in Microsoft Fabric

Involved Views and Tables:

  • sys.dm_exec_sessions

Transaction logs

Supported on:

  • SQL Server (all versions)
  • Azure SQL Database
  • Azure SQL Managed Instance
  • Azure Synapse Analytics
  • Analytics Platform System (PDW)

Involved Views and Tables:

  • sys.dm_os_performance_counters

Backups

  • Monitoring age of latest backup and individual backups per database Supported on:
    • SQL Server (all versions)
    • Azure SQL Managed Instance Involved Views and Tables:
    • sys.databases
    • msdb.dbo.backupset
    • msdb.dbo.backupmediafamily
    • msdb.dbo.backupmediaset
  • Monitoring backup files size per database Supported on:
    • SQL Server (all versions) Involved Views and Tables:
    • sys.databases
    • msdb.dbo.backupset
    • msdb.dbo.backupmediafamily
    • msdb.dbo.backupmediaset
    • msdb.dbo.backupfile
    • sys.master_files
  • Monitoring individual Azure SQL Database backups Supported on:
    • Azure SQL Database Involved Views and Tables:
    • sys.db_database_backups

Database files

  • Monitoring database files stats Supported on:
    • SQL Server (all versions)
    • Azure SQL Managed Instance
    • Analytics Platform System (PDW) Involved Views and Tables:
    • sys.master_files
  • Monitoring largest database files on Azure SQL Database Supported on:
    • Azure SQL Database Involved Views and Tables:
    • sys.database_files
  • Monitoring largest database files on other SQL Server types Supported on:
    • SQL Server (all versions)
    • Azure SQL Managed Instance
    • Analytics Platform System (PDW) Involved Views and Tables:
    • sys.master_files

Always On

Supported on:

  • SQL Server (2016 and later)

Involved Views and Tables:

  • sys.availability_groups
  • sys.availability_replicas
  • sys.availability_databases_cluster
  • sys.dm_hadr_availability_group_states
  • sys.dm_hadr_availability_replica_states
  • sys.dm_hadr_database_replica_states

Jobs

Supported on:

  • SQL Server (all versions)

Involved Views and Tables

  • msdb.dbo.sysjobs
  • msdb.dbo.sysjobsteps
  • msdb.dbo.sysjobhistory
  • msdb.dbo.sysjobservers
  • msdb.dbo.sysjobactivity
  • msdb.dbo.systargetservers
  • msdb.dbo.syscategories

Required permissions:

Specific permissions required per system view

sys.dm_os_sys_info

sys.dm_os_performance_counters

sys.databases

  • Azure SQL Database
    • Connect to master database for all databases to be visible.
    • When connecting to a user database, only the current database and the master database are visible.
  • Other supported types of SQL Server
    • To see just the database extension is connected to:
      • No additional permissions are required.
    • To see all ONLINE databases:
      • VIEW ANY DATABASE (default permission for the public role)
    • To see all OFFLINE databases as well:
      • ALTER ANY DATABASE on server level; or
      • CREATE DATABASE permission in the master database.

sys.query_store_runtime_stats

  • All supported types of SQL Server
    • VIEW DATABASE STATE permission.

sys.query_store_plan

  • All supported types of SQL Server
    • VIEW DATABASE STATE permission.

sys.query_store_query

  • All supported types of SQL Server
    • VIEW DATABASE STATE permission.

sys.query_store_query_text

  • All supported types of SQL Server
    • VIEW DATABASE STATE permission.

sys.dm_exec_sessions

  • To see the sessions of the user extension connects with:
    • No additional permissions are required.
  • To see all sessions within the database extension is connected to:
    • VIEW DATABASE STATE permission.
  • To see all sessions on the server:
    • SQL Server (2022 and later)
      • VIEW SERVER PERFORMANCE STATE permission.
    • SQL Server (up to 2019)
      • VIEW SERVER STATE permission.

msdb.dbo.backupset

  • Available as read-only to any user with public level access to the instance.

msdb.dbo.backupfile

  • Available as read-only to any user with public level access to the instance.

msdb.dbo.backupmediafamily

  • Available as read-only to any user with public level access to the instance.

msdb.dbo.backupmediaset

  • Available as read-only to any user with public level access to the instance.

sys.master_files

  • All supported types of SQL Server:
    • VIEW ANY DEFINITION; or
    • CREATE DATABASE; or
    • ALTER ANY DATABASE.

sys.database_files

sys.availability_groups

  • All supported types of SQL Server:
    • VIEW ANY DEFINITION permission.

sys.availability_replicas

  • All supported types of SQL Server:
    • VIEW ANY DEFINITION permission.

sys.availability_databases_cluster

  • All supported types of SQL Server:
    • If the user with which extension makes the calls is the owner of the database, no additional permissions are required.
    • Otherwise:
      • VIEW ANY DATABASE; or
      • ALTER ANY DATABASE; or
      • CREATE DATABASE permission in master is required.

sys.dm_hadr_availability_group_states

  • SQL Server (2022 and later)
    • VIEW SERVER PERFORMANCE STATE permission.
  • SQL Server (up to 2019)
    • VIEW SERVER STATE permission.

sys.dm_hadr_availability_replica_states

  • SQL Server (2022 and later)
    • VIEW SERVER PERFORMANCE STATE permission.
  • SQL Server (up to 2019)
    • VIEW SERVER STATE permission.

sys.dm_hadr_database_replica_states

  • SQL Server (2022 and later)
    • VIEW SERVER PERFORMANCE STATE permission.
  • SQL Server (up to 2019)
    • VIEW SERVER STATE permission.

sys.db_database_backups

Потребление лицензии

DDU потребляются по 0,001 DDU из доступной квоты на каждую принятую точку данных. Каждый включенный набор функций увеличивает потребление DDU. Набор функций «по умолчанию» отключить нельзя.

Потребление DDU для каждой метрики (в час) рассчитывается следующим образом: number of unique associated entities * retrieval frequency per hour * 0.001 DDUs per data point

Пример:

  • Метрика: sql-server.databases.backup.size
  • Связанная сущность: База данных SQL Server
  • Количество уникальных связанных сущностей:
    • Предположим, мы отслеживаем 2 экземпляры, в каждом из которых есть база данных в размере 20.
    • Таким образом, всего существует множество 2 (SQL Server Instances) * 20 (SQL Server Databases in each) = 40 уникальных баз данных.
  • Частота извлечения в час: 60(метрика извлекается каждую минуту).
  • Общее потребление DDU для этого показателя в окружающей среде (в час): 40 * 60 * 0.001 = 2.4 DDUs.
  • Общее потребление DDU для этого показателя в окружающей среде (в год): 2.4 * 24 * 365 = 21,024 DDUs.

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

default

  • sql-server.memory.target
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.memory.physical
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.databases.state
    • Associated entity: SQL Server Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Databases in environment * 60
  • sql-server.uptime
    • Associated entity: SQL Server Instance
    • Frequency: 12 times per hour (every 5 minutes)
    • Data points per hour: number of SQL Server Instances in environment * 12
  • sql-server.databases.transactions.count
    • Associated entity: SQL Server Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Databases in environment * 60
  • sql-server.memory.total
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.cpu.kernelTime.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.general.userConnections
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.general.processesBlocked
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.general.logins.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.cpu.userTime.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.memory.virtual
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.host.cpus
    • Associated entity: SQL Server Host
    • Frequency: 12 times per hour (every 5 minutes)
    • Data points per hour: number of SQL Server Hosts in environment * 12

Always On

  • sql-server.always-on.ag.secondaryRecoveryHealth
    • Associated entity: SQL Server Availability Group
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Groups in environment * 60
  • sql-server.always-on.ag.primaryRecoveryHealth
    • Associated entity: SQL Server Availability Group
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Groups in environment * 60
  • sql-server.always-on.ar.failoverMode
    • Associated entity: SQL Server Availability Replica
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Replicas in environment * 60
  • sql-server.always-on.ag.synchronizationHealth
    • Associated entity: SQL Server Availability Group
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Groups in environment * 60
  • sql-server.always-on.ar.operationalState
    • Associated entity: SQL Server Availability Replica
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Replicas in environment * 60
  • sql-server.always-on.ar.connectedState
    • Associated entity: SQL Server Availability Replica
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Replicas in environment * 60
  • sql-server.always-on.db.filestreamSendRate
    • Associated entity: SQL Server Availability Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Databases in environment * 60
  • sql-server.always-on.db.state
    • Associated entity: SQL Server Availability Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Databases in environment * 60
  • sql-server.always-on.db.synchronizationHealth
    • Associated entity: SQL Server Availability Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Databases in environment * 60
  • sql-server.always-on.db.logSendQueueSize
    • Associated entity: SQL Server Availability Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Databases in environment * 60
  • sql-server.always-on.ar.role
    • Associated entity: SQL Server Availability Replica
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Replicas in environment * 60
  • sql-server.always-on.db.synchronizationState
    • Associated entity: SQL Server Availability Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Databases in environment * 60
  • sql-server.always-on.db.redoRate
    • Associated entity: SQL Server Availability Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Databases in environment * 60
  • sql-server.always-on.db.redoQueueSize
    • Associated entity: SQL Server Availability Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Databases in environment * 60
  • sql-server.always-on.ar.synchronizationHealth
    • Associated entity: SQL Server Availability Replica
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Replicas in environment * 60
  • sql-server.always-on.db.logSendRate
    • Associated entity: SQL Server Availability Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Databases in environment * 60
  • sql-server.always-on.ar.availabilityMode
    • Associated entity: SQL Server Availability Replica
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Replicas in environment * 60
  • sql-server.always-on.ag.automatedBackupPreference
    • Associated entity: SQL Server Availability Group
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Groups in environment * 60
  • sql-server.always-on.ar.isLocal
    • Associated entity: SQL Server Availability Replica
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Replicas in environment * 60
  • sql-server.always-on.ar.recoveryHealth
    • Associated entity: SQL Server Availability Replica
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Availability Replicas in environment * 60

Backups

  • sql-server.databases.backup.age
    • Associated entity: SQL Server Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Databases in environment * 60
  • sql-server.databases.backup.size
    • Associated entity: SQL Server Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Databases in environment * 60

Database files

  • sql-server.databases.file.emptySpace
    • Associated entity: SQL Server Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Databases in environment * 60
  • sql-server.databases.file.size
    • Associated entity: SQL Server Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Databases in environment * 60
  • sql-server.databases.file.usedSpace
    • Associated entity: SQL Server Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Databases in environment * 60
  • largest_files
    • Associated Entity: SQL Server Instance
    • Frequency: 12 times per hour (Every 5 minutes)
    • Data points per hour: Up to 100 (num of files) * 12 * avg log size

Latches

  • sql-server.latches.waits.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.latches.averageWaitTime.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60

Locks

  • sql-server.locks.timeouts.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.locks.waits.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.locks.waitTime.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.locks.deadlocks.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60

Memory

  • sql-server.buffers.checkpointPages.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.memory.grantsOutstanding
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.memory.connection
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.buffers.pageWrites.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.buffers.pageLifeExpectancy
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.memory.grantsPending
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.buffers.cacheHitRatio
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.buffers.freeListStalls.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.buffers.pageReads.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60

Queries

  • sql-server.sql.recompilations.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.sql.compilations.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.sql.batchRequests.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • longest_queries
    • Associated Entity: SQL Server Instance
    • Frequency: 12 times per hour (Every 5 minutes)
    • Data points per hour: Up to 100 (num of queries) * 12 * avg log size
  • instance_locks_wait_time_type
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60

Replication

  • sql-server.replica.bytesSentToTransport.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.replica.sends.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.replica.sendsToTransport.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.replica.bytesReceived.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.replica.bytesSent.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.replica.resentMessages.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60
  • sql-server.replica.receives.count
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60

Sessions

  • sql-server.sessions
    • Associated entity: SQL Server Instance
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Instances in environment * 60

Transaction logs

  • sql-server.databases.log.flushWaits.count
    • Associated entity: SQL Server Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Databases in environment * 60
  • sql-server.databases.log.filesUsedSize
    • Associated entity: SQL Server Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Databases in environment * 60
  • sql-server.databases.log.growths.count
    • Associated entity: SQL Server Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Databases in environment * 60
  • sql-server.databases.log.truncations.count
    • Associated entity: SQL Server Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Databases in environment * 60
  • sql-server.databases.log.shrinks.count
    • Associated entity: SQL Server Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Databases in environment * 60
  • sql-server.databases.log.filesSize
    • Associated entity: SQL Server Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Databases in environment * 60
  • sql-server.databases.log.percentUsed
    • Associated entity: SQL Server Database
    • Frequency: 60 times per hour (every 1 minute)
    • Data points per hour: number of SQL Server Databases in environment * 60

Jobs

  • current_jobs
    • Associated Entity: SQL Server Instance
    • Frequency: 12 times per hour (Every 5 minutes)
    • Data points per hour: Number of currently enabled jobs * 12 * avg log size
  • failed_jobs
    • Associated Entity: SQL Server Instance
    • Frequency: 12 times per hour (Every 5 minutes)
    • Data points per hour: top 100 failed jobs * 12 * avg log size

Locks and waits

  • all_requests
    • Associated Entity: SQL Server Instance
    • Frequency: 60 times per hour (Every 1 minute)
    • Data points per hour: avg Number of active requests * 60 * avg log size
  • note on current_jobs, failed_jobs, longest_queries, all_requests, and largest_files: Эти метрики основаны на данных логов. Поскольку каждая среда отличается, расчет необходимо выполнять на стороне клиента. Затем рассчитайте объем полученных данных. В настоящее время на каждый загруженный ГБ потребляется 100 DDU. См. модель потребления DDU для управления логами и аналитики в документации. Если вы используете Log Monitoring Classic: каждая запись логов (строка, сообщение, запись) вычитает 0,005 DDU из доступной квоты. См. DDU для Log Monitoring Classic в документации.

Ограничения

Агрегированные показатели для файлов базы данных

Две метрики ниже

  • sql-server.databases.file.usedSpace
  • sql-server.databases.file.emptySpace

Данные выводятся только для той базы данных, к которой в данный момент подключено расширение. Это связано с тем, что в отчете sys.allocation_units содержится информация только об используемых страницах той базы данных, которая в данный момент используется в рамках подключения.

Самые загруженные запросы

  • Самые популярные запросы собираются только для одной базы данных.
  • Невозможно собрать самые популярные запросы для базы данных master (ограничение самого SQL Server).

Резервные копии Azure

Резервные копии Azure отслеживаются путем запроса представления sys.db_database_backups, которое в настоящее время доступно для всех уровней служб базы данных SQL Azure, за исключением Hyperscaler.

Всегда включен

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

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

В зависимости от действия и состояний более высокого уровня информация о состоянии базы данных может быть недоступна или устаревшей. Более того, значения имеют только локальную значимость. См. ограничения sys.dm_hadr_database_replica_states .

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

Если локальный экземпляр сервера не может взаимодействовать с отказоустойчивым кластером WSFC, например, из-за отказа кластера или потери кворума, возвращаются только строки для локальных реплик доступности. Эти строки будут содержать только те столбцы данных, которые локально кэшируются в метаданных.

Поиск неисправностей

  • Чтобы устранить неполадки этого расширения, воспользуйтесь руководством(ями) в сообществе Ключ-АСТРОМ.

Часто задаваемые вопросы

Как расширение влияет на целевую базу данных?

  • Расширение выполняет только запросы SELECT для получения данных мониторинга. База данных никогда не изменяется и не блокируется.
  • Расширение запрашивает только системные sys.* представления и базу данных msdb (при необходимости). Пользовательские базы данных и объекты остаются неизменными.
  • Все выполненные запросы являются статическими и кэшируются в целевой базе данных после их первого выполнения.
  • Даже при включении всех наборов функций влияние расширения на каждую целевую базу данных незначительно.

Как рассчитать АктивныеШлюзы для этого расширения?

  • Каждая конфигурация мониторинга автоматически назначается АктивнымШлюзом в назначенной группе АктивныхШлюзов.
  • Все конечные точки в рамках одной конфигурации мониторинга выполняются на одном АктивномШлюзе.
  • Миграция конфигурации мониторинга при отказе выполняется автоматически в случае выхода из строя одного из АктивногоШлюза. Миграция выполняется только в пределах одной группы АктивногоШлюза.
  • Каждая конфигурация мониторинга может обрабатывать сотни активных конечных точек одновременно на одном АктивномШлюзе с 2 vCPU и 4 ГБ ОЗУ.
  • Количество создаваемых конфигураций мониторинга ограничено. Гораздо более производительно и эффективно использовать ресурсы, если в одной конфигурации мониторинга находится много конечных точек, чем создавать слишком много конфигураций.

Существуют ли какие-либо особенности при мониторинге кластеров Always On?

  • При мониторинге кластера Always On рекомендуется создать две отдельные конфигурации мониторинга:
    • Первая конфигурация мониторинга, в которой включен только набор функций «Always On» и подключены исключительно к первичным репликам внутри кластера.
    • Вторая конфигурация мониторинга со всеми включенными наборами функций, за исключением «Always On» (отключена во второй конфигурации мониторинга) с подключением ко всем экземплярам в кластере.
    • Такая конфигурация гарантирует, что для каждого экземпляра кластера будет обеспечена полная наблюдаемость инфраструктуры, а данные, относящиеся к Always On, будут надежно собираться с первичных реплик.
  • Рекомендуется создать отдельную конфигурацию мониторинга для кластеров Always On и создавать конечные точки только для первичных реплик. Из-за встроенных ограничений Always On вторичные реплики не имеют полной информации обо всем кластере Always On, к которому они принадлежат.
  • Подключение к первичной и вторичной реплике в одном кластере Always On при включенном наборе функций «Always On» для обеих реплик приведет к дублированию показателей, а также к искажению мониторинга и крайне не рекомендуется.

Какие схемы аутентификации поддерживаются?

  • Поддерживаются следующие типы аутентификации
    • Basic authentication
    • Kerberos
    • NTLM

Поддерживаются ли самоподписанные SSL-сертификаты и хранилища доверенных сертификатов PKCS12?

  • Да, сертификаты, подписанные с использованием непубличной цепочки подписей, должны быть добавлены в доверенное хранилище.
  • Если сертификат шифрования создается с использованием непублично проверяемого центра сертификации, этот центр сертификации должен быть известен АктивномуШлюзу.
  • Пошаговые инструкции см. в разделе Инструкции по добавлению хранилища доверенных сертификатов.

Для чего нужно поле метаданных конечной точки?

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

Как добавить пользовательские интервалы?

  • Добавлены два поля query interval. Если вы хотите, чтобы запросы длительностью в 1 минуту выполнялись с интервалом более 1 минуты, например, каждые 10 минут, введите в это поле heavy query interval число 10.
  • Поле ввода heavy query interval работает так же, за исключением того, что вы меняете частоту запросов, которые запускаются каждые 5 минут.
  • Для получения более подробной информации см. описание под каждым полем ввода, в котором объясняется, на какие запросы это влияет.

Как просмотреть мои блокировки и ожидания?

  • Включите набор функций Locks and waits. Если вы используете SaaS-решение, у вас появится новая панель управления для просмотра этих данных в едином организованном окне. Если вы используете управляемое решение, вы будете получать журналы и просматривать запросы с блокировками или ожиданиями.