MSSQL

Microsoft SQL Server — реляционная СУБД от Microsoft. Мониторинг SQL Server позволяет отслеживать производительность запросов, использование ресурсов, состояние репликации, блокировки и другие критичные метрики для обеспечения стабильной работы базы данных.

Примечание

Данные с экспортеров могут использоваться для различных продуктов. Обратите внимание на использование тегов product и component в документации к конкретному продукту

Способы мониторинга

Для мониторинга MS SQL Server доступны два основных способа:

windows_exporter с коллектором mssql

windows_exporter с включенным коллектором mssql — рекомендуемый способ для мониторинга SQL Server на Windows-серверах. Использует счетчики производительности Windows для сбора метрик.

Примечание

Коллектор mssql выключен по умолчанию и требует явного включения через параметр --collectors.enabled.

Шаг 1: Подготовка SQL Server

Убедитесь, что SQL Server установлен и запущен на Windows-сервере. Коллектор mssql автоматически собирает метрики из счетчиков производительности Windows, поэтому дополнительная настройка SQL Server не требуется.

Важно

Для работы коллектора mssql требуется, чтобы SQL Server был установлен и запущен на том же сервере, где работает windows_exporter.

Шаг 2: Настройка агента

Добавьте windows_exporter с коллектором mssql в конфигурацию агента через UI или файл конфигурации.

Через UI:

  1. Откройте раздел настройки агента

  2. Добавьте экспортер windows-exporter

  3. В поле Args добавьте коллектор mssql к уже существующим аргументам:

    --collectors.enabled=[defaults],time,cs,system,mssql
    

Через файл конфигурации:

exporters:
  enabled: true
  exporters:
    - name: windows-exporter
      start_type: args
      args: --log.format=json --web.listen-address=0.0.0.0:9727 --collectors.enabled=[defaults],time,cs,system,mssql
      address: 127.0.0.1:9727
      labels:
        product: mssql
        component: database
        hostname: win_server_name
        instance: win_server_ip:9727

Примечание

Список коллекторов [defaults] включает базовые коллекторы. Добавление mssql активирует сбор метрик SQL Server.

Шаг 3: Проверка работы

Убедитесь, что метрики доступны:

curl http://localhost:9727/metrics | grep mssql

Должны отображаться метрики SQL Server с префиксом windows_mssql_*.

Шаг 4: Визуализация

Рекомендуемый дашборд для Grafana:

Примечание

Подробнее о настройке windows_exporter читайте в официальной документации и документации коллектора mssql.

sql_exporter

sql_exporter — альтернативное решение для мониторинга SQL Server через прямое подключение к базе данных. Позволяет выполнять произвольные SQL-запросы и преобразовывать результаты в метрики Prometheus.

Важно

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

Шаг 1: Подготовка SQL Server

Создайте пользователя для мониторинга с необходимыми правами:

-- Создайте пользователя для мониторинга
CREATE LOGIN exporter WITH PASSWORD = 'your_secure_password';

-- Предоставьте необходимые права
USE master;
GRANT VIEW SERVER STATE TO exporter;
GRANT VIEW ANY DEFINITION TO exporter;

Предупреждение

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

Шаг 2: Подготовка конфигурационного файла

Создайте файл конфигурации sql_exporter.yml:

jobs:
  - name: "mssql_stats"
    interval: "30s"
    connections:
      - "sqlserver://exporter:your_secure_password@localhost:1433?database=master"
    queries:
      - name: "connection_stats"
        sql: "SELECT COUNT(*) as connections FROM sys.dm_exec_sessions WHERE is_user_process = 1"
        metrics:
          - name: "mssql_connections"
            type: "gauge"
            help: "Number of active user connections"
            values: ["connections"]
      - name: "database_size"
        sql: "SELECT name, SUM(size) * 8 * 1024 as size_bytes FROM sys.master_files GROUP BY name"
        metrics:
          - name: "mssql_database_size_bytes"
            type: "gauge"
            help: "Database size in bytes"
            values: ["size_bytes"]
            labels:
              database: "name"

Шаг 3: Настройка агента

Добавьте экспортер в конфигурацию агента:

exporters:
  enabled: true
  exporters:
    - name: sql_exporter
      start_type: args
      args: "--config.file=/path/to/sql_exporter.yml --web.listen-address=0.0.0.0:9399"
      address: 127.0.0.1:9399
      labels:
        product: mssql
        component: database

Шаг 4: Проверка работы

Убедитесь, что метрики доступны:

curl http://localhost:9399/metrics

Шаг 5: Дополнительная информация

Подробнее о настройке sql_exporter читайте в документации экспортера и официальном репозитории.

Примечание

SQL exporter может использоваться для мониторинга различных типов баз данных:

  • MySQL

  • PostgreSQL

  • Microsoft SQL Server

  • Oracle Database

  • ClickHouse

  • Snowflake

  • Vertica

Ключевые метрики для мониторинга

При настройке мониторинга обратите внимание на следующие группы метрик:

  • Производительность: время выполнения запросов, количество запросов в секунду, медленные запросы

  • Ресурсы: использование CPU, памяти, дискового пространства, размер баз данных

  • Соединения: количество активных соединений, максимальное количество соединений, время ожидания

  • Репликация: состояние реплик, задержки репликации, лаг репликации

  • Блокировки: количество блокировок, время ожидания блокировок, deadlocks

  • Буферы и кэши: использование buffer pool, эффективность кэширования

  • Ошибки: количество ошибок в логах, ошибки подключений

Собираемые метрики windows_exporter (mssql коллектор)

Ниже представлен список основных метрик, собираемых коллектором mssql windows_exporter, с их описанием и назначением.

Метрики общего состояния (windows_mssql_*)

Метрика

Тип

Описание

windows_mssql_sqlstats_batch_requests_total

Counter

Количество пакетов SQL-запросов

windows_mssql_sqlstats_sql_compilations_total

Counter

Количество компиляций SQL

windows_mssql_sqlstats_sql_recompilations_total

Counter

Количество перекомпиляций SQL

windows_mssql_sqlstats_lock_waits_total

Counter

Количество ожиданий блокировок

windows_mssql_sqlstats_page_life_expectancy_seconds

Gauge

Ожидаемое время жизни страницы в секундах

windows_mssql_sqlstats_page_splits_total

Counter

Количество разделений страниц

Метрики производительности (windows_mssql_performance_*)

Метрика

Тип

Описание

windows_mssql_performance_cpu_usage_percent

Gauge

Использование CPU SQL Server (проценты)

windows_mssql_performance_memory_usage_kb

Gauge

Использование памяти SQL Server (КБ)

windows_mssql_performance_disk_io_reads_total

Counter

Количество операций чтения с диска

windows_mssql_performance_disk_io_writes_total

Counter

Количество операций записи на диск

windows_mssql_performance_disk_io_read_bytes_total

Counter

Объем прочитанных данных (байты)

windows_mssql_performance_disk_io_write_bytes_total

Counter

Объем записанных данных (байты)

Метрики соединений (windows_mssql_connections_*)

Метрика

Тип

Описание

windows_mssql_connections_user_connections

Gauge

Количество пользовательских подключений

windows_mssql_connections_logins_total

Counter

Общее количество входов в систему

windows_mssql_connections_logouts_total

Counter

Общее количество выходов из системы

Метрики баз данных (windows_mssql_database_*)

Метрика

Тип

Описание

windows_mssql_database_data_file_size_kb

Gauge

Размер файла данных базы данных (КБ)

windows_mssql_database_log_file_size_kb

Gauge

Размер файла лога базы данных (КБ)

windows_mssql_database_log_file_used_size_kb

Gauge

Использованный размер файла лога (КБ)

windows_mssql_database_transactions_total

Counter

Количество транзакций

windows_mssql_database_write_transactions_total

Counter

Количество транзакций записи

Метрики репликации (windows_mssql_replication_*)

Метрика

Тип

Описание

windows_mssql_replication_latency_seconds

Gauge

Задержка репликации в секундах

windows_mssql_replication_delivered_transactions_total

Counter

Количество доставленных транзакций

Метрики блокировок (windows_mssql_locks_*)

Метрика

Тип

Описание

windows_mssql_locks_lock_waits_total

Counter

Количество ожиданий блокировок

windows_mssql_locks_deadlocks_total

Counter

Количество обнаруженных deadlocks

windows_mssql_locks_lock_timeouts_total

Counter

Количество таймаутов блокировок

Метрики буферов (windows_mssql_buffer_*)

Метрика

Тип

Описание

windows_mssql_buffer_cache_hit_ratio

Gauge

Коэффициент попаданий в кэш буферов (0-1)

windows_mssql_buffer_page_life_expectancy_seconds

Gauge

Ожидаемое время жизни страницы в буфере (секунды)

windows_mssql_buffer_checkpoint_pages_total

Counter

Количество страниц, записанных во время checkpoint

Примечание

Важно: Данный список метрик может быть неполным или устаревшим, так как windows_exporter постоянно развивается и добавляет новые метрики. Для получения актуального и полного списка метрик рекомендуется обращаться к официальной документации коллектора mssql на GitHub, где представлен актуальный список всех собираемых метрик с подробными описаниями.

Дополнительная информация

Связанные разделы