Последнее обновление: августа 10, 2026

Алертинг Microsoft SQL Server

Вы можете использовать Grafana Alerting с Microsoft SQL Server для создания алертов на основе данных SQL Server. Это позволяет отслеживать метрики, обнаруживать аномалии и получать уведомления при выполнении определённых условий.

Общую информацию о Grafana Alerting см. в разделе Grafana Alerting.

Перед началом

Перед созданием алертов с Microsoft SQL Server убедитесь, что у вас есть:

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

Алертинг Microsoft SQL Server работает с запросами временных рядов, возвращающими числовые данные за период времени. Запросы в табличном формате не поддерживаются в условиях правил алертинга.

Чтобы создать корректный запрос алертинга:

  • Включите столбец time, возвращающий SQL datetime/datetime2 или метку времени Unix epoch
  • Возвращайте числовые значения для метрик, по которым хотите получать алерты
  • Сортируйте результаты по столбцу времени

Дополнительные сведения о написании запросов временных рядов см. в разделе Microsoft SQL Server query editor.

Требования к формату запроса

Формат запроса Поддержка алертинга Примечания
Time series Да Требуется для алертинга
Table Нет Преобразуйте в формат временных рядов для алертов

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

Чтобы создать правило алертинга с помощью Microsoft SQL Server:

  1. Перейдите в Alerting > Alert rules.
  2. Нажмите New alert rule.
  3. Введите имя правила алертинга.
  4. Выберите ваш источник данных Microsoft SQL Server.
  5. Постройте запрос с помощью редактора запросов:
    • Установите Format в Time series.
    • Включите столбец времени с помощью макроса $__timeGroup() или $__timeGroupAlias().
    • Добавьте числовые столбцы для значений, которые нужно отслеживать.
    • Используйте $__timeFilter() для фильтрации данных по диапазону времени вычисления.
  6. Настройте условие алертинга (например, когда среднее значение выше порога).
  7. Задайте интервал вычисления и период ожидания (pending period).
  8. Настройте уведомления и метки.
  9. Нажмите Save rule.

Подробные инструкции см. в разделе Create a Grafana-managed alert rule.

Примеры запросов алертинга

Следующие примеры показывают типичные сценарии алертинга с Microsoft SQL Server.

Алерт при высоком числе ошибок

Отслеживайте количество ошибок за период времени:

SQL
SELECT
  $__timeGroupAlias(created_at, '1m'),
  COUNT(*) AS error_count
FROM error_logs
WHERE $__timeFilter(created_at)
  AND level = 'error'
GROUP BY $__timeGroup(created_at, '1m')
ORDER BY 1

Условие: когда error_count выше 100.

Алерт при высоком среднем времени отклика

Отслеживайте время отклика API:

SQL
SELECT
  $__timeGroupAlias(request_time, '5m'),
  AVG(response_time_ms) AS avg_response_time
FROM api_requests
WHERE $__timeFilter(request_time)
GROUP BY $__timeGroup(request_time, '5m')
ORDER BY 1

Условие: когда avg_response_time выше 500 (миллисекунд).

Алерт при низком объёме заказов

Обнаруживайте падения активности заказов:

SQL
SELECT
  $__timeGroupAlias(order_date, '1h'),
  COUNT(*) AS order_count
FROM orders
WHERE $__timeFilter(order_date)
GROUP BY $__timeGroup(order_date, '1h')
ORDER BY 1

Условие: когда order_count ниже 10.

Алерт при высокой загрузке CPU

Отслеживайте метрики ресурсов сервера:

SQL
SELECT
  $__timeGroupAlias(recorded_at, '5m'),
  AVG(cpu_percent) AS avg_cpu
FROM sys_metrics
WHERE $__timeFilter(recorded_at)
GROUP BY $__timeGroup(recorded_at, '5m')
ORDER BY 1

Условие: когда avg_cpu выше 85.

Ограничения

При использовании Microsoft SQL Server с Grafana Alerting учитывайте следующие ограничения.

Переменные шаблонов не поддерживаются

Запросы алертинга не могут содержать переменные шаблонов. Grafana вычисляет правила алертинга на бэкенде без контекста дашборда, поэтому такие переменные, как $hostname или $environment, не разрешаются.

Если ваш запрос дашборда использует переменные шаблонов, создайте отдельный запрос для алертинга с жёстко заданными значениями.

Табличный формат не поддерживается

Запросы, использующие формат Table, нельзя применять для алертинга. Установите формат запроса Time series и убедитесь, что запрос возвращает столбец времени.

Тайм-аут запроса

Сложные запросы с большими наборами данных могут завершаться по тайм-ауту во время вычисления алерта. Оптимизируйте запросы для алертинга следующим образом:

  • Добавляйте подходящие предложения WHERE для ограничения данных
  • Используйте индексы по столбцам времени и фильтрации
  • Сокращайте вычисляемый диапазон времени

Аутентификация Current User не поддерживается

Если ваш источник данных использует аутентификацию Azure Entra ID Current User, алертинг, отчётность и записанные запросы (recorded queries) не поддерживаются. Эти функции требуют учётных данных уровня бэкенда, не зависящих от сессии конкретного пользователя.

Рекомендации

При создании алертов Microsoft SQL Server следуйте этим рекомендациям:

  • Используйте формат временных рядов: всегда устанавливайте для запросов алертинга формат time series.
  • Включайте фильтры времени: используйте макрос $__timeFilter() для ограничения данных окном вычисления.
  • Используйте макросы MSSQL: предпочитайте $__timeGroupAlias() и $__timeGroup() ручным выражениям группировки по времени.
  • Оптимизируйте запросы: добавляйте индексы по столбцам, используемым в предложениях WHERE и GROUP BY.
  • Сначала протестируйте запросы: убедитесь, что запрос возвращает ожидаемые результаты в Explore, прежде чем создавать алерт.
  • Задавайте реалистичные пороги: основывайте пороги алертов на исторических закономерностях данных.
  • Используйте осмысленные имена: давайте правилам алертинга описательные имена, указывающие, что они отслеживают.