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

Алертинг MySQL

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

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

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

Прежде чем создавать правила алертинга с MySQL, убедитесь, что у вас есть:

  • Источник данных MySQL, настроенный в Grafana.
  • Соответствующие разрешения на создание правил алертинга.
  • Понимание метрик, которые вы хотите отслеживать.

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

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

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

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

Подробнее о написании запросов временных рядов см. в разделе Редактор запросов MySQL.

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

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

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

Чтобы создать правило алертинга с использованием MySQL:

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

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

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

Приведённые ниже примеры иллюстрируют типичные сценарии алертинга с MySQL.

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

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

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

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

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

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

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

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

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

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

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

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

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

Отслеживайте метрики хранилища базы данных:

SQL
SELECT
  $__timeGroup(recorded_at, '5m') AS time,
  AVG(disk_used_percent) AS disk_usage
FROM system_metrics
WHERE $__timeFilter(recorded_at)
  AND metric_type = 'disk'
GROUP BY time
ORDER BY time

Условие: когда disk_usage превышает 85.

Ограничения

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

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

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

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

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

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

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

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

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

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

Придерживайтесь этих рекомендаций при создании алертов MySQL:

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