Алертинг Microsoft SQL Server
Вы можете использовать Grafana Alerting с Microsoft SQL Server для создания алертов на основе данных SQL Server. Это позволяет отслеживать метрики, обнаруживать аномалии и получать уведомления при выполнении определённых условий.
Общую информацию о Grafana Alerting см. в разделе Grafana Alerting.
Перед началом
Перед созданием алертов с Microsoft SQL Server убедитесь, что у вас есть:
- Настроенный источник данных Microsoft SQL Server
- Соответствующие разрешения для создания правил алертинга
- Понимание метрик, которые вы хотите отслеживать
Поддерживаемые типы запросов
Алертинг Microsoft SQL Server работает с запросами временных рядов, возвращающими числовые данные за период времени. Запросы в табличном формате не поддерживаются в условиях правил алертинга.
Чтобы создать корректный запрос алертинга:
- Включите столбец
time, возвращающий SQLdatetime/datetime2или метку времени Unix epoch - Возвращайте числовые значения для метрик, по которым хотите получать алерты
- Сортируйте результаты по столбцу времени
Дополнительные сведения о написании запросов временных рядов см. в разделе Microsoft SQL Server query editor.
Требования к формату запроса
Создание правила алертинга
Чтобы создать правило алертинга с помощью Microsoft SQL Server:
- Перейдите в Alerting > Alert rules.
- Нажмите New alert rule.
- Введите имя правила алертинга.
- Выберите ваш источник данных Microsoft SQL Server.
- Постройте запрос с помощью редактора запросов:
- Установите Format в Time series.
- Включите столбец времени с помощью макроса
$__timeGroup()или$__timeGroupAlias(). - Добавьте числовые столбцы для значений, которые нужно отслеживать.
- Используйте
$__timeFilter()для фильтрации данных по диапазону времени вычисления.
- Настройте условие алертинга (например, когда среднее значение выше порога).
- Задайте интервал вычисления и период ожидания (pending period).
- Настройте уведомления и метки.
- Нажмите Save rule.
Подробные инструкции см. в разделе Create a Grafana-managed alert rule.
Примеры запросов алертинга
Следующие примеры показывают типичные сценарии алертинга с Microsoft SQL Server.
Алерт при высоком числе ошибок
Отслеживайте количество ошибок за период времени:
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:
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 (миллисекунд).
Алерт при низком объёме заказов
Обнаруживайте падения активности заказов:
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
Отслеживайте метрики ресурсов сервера:
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, прежде чем создавать алерт.
- Задавайте реалистичные пороги: основывайте пороги алертов на исторических закономерностях данных.
- Используйте осмысленные имена: давайте правилам алертинга описательные имена, указывающие, что они отслеживают.