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

Оповещения InfluxDB

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

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

Прежде чем начать

Перед созданием оповещений с помощью InfluxDB убедитесь, что у вас есть:

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

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

Оповещения InfluxDB поддерживают все три языка запросов: InfluxQL, SQL и Flux. Запросы должны возвращать данные временных рядов, чтобы Grafana могла оценивать значения во времени и запускать оповещения при пересечении порогов.

Совместимость языков запросов

Язык запросов Поддержка оповещений Примечания
InfluxQL Да Используйте агрегатные функции с GROUP BY time.
Flux Да Используйте aggregateWindow() для агрегации по времени.
SQL Да Используйте макросы $__timeFilter и $__dateBin для фильтрации по времени.

Создание правила оповещения

Чтобы создать правило оповещения с помощью InfluxDB:

  1. Перейдите в Alerting > Alert rules.
  2. Нажмите New alert rule.
  3. Введите имя правила оповещения.
  4. Выберите ваш источник данных InfluxDB.
  5. Постройте запрос с помощью редактора запросов.
  6. Настройте условие оповещения (например, когда среднее значение превышает порог).
  7. Задайте интервал оценки и период ожидания (pending period).
  8. Настройте уведомления и метки.
  9. Нажмите Save rule.

Подробные инструкции см. в разделе Создание правила оповещения под управлением Grafana.

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

Следующие примеры демонстрируют типичные сценарии оповещений с InfluxDB.

InfluxQL: оповещение о высокой загрузке CPU

Отслеживайте загрузку CPU и получайте оповещение при превышении порога:

  1. Query: выберите измерение cpu с агрегацией mean("usage_system").
  2. GROUP BY: time($__interval)
  3. Condition: когда среднее значение выше 90.

В режиме необработанного запроса:

SQL
SELECT mean("usage_system") FROM "cpu" WHERE $timeFilter GROUP BY time($__interval) fill(null)

Flux: оповещение о нехватке памяти

Отслеживайте использование памяти с помощью запроса Flux:

flux
from(bucket: "telegraf")
  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
  |> filter(fn: (r) => r["_measurement"] == "mem")
  |> filter(fn: (r) => r["_field"] == "used_percent")
  |> aggregateWindow(every: v.windowPeriod, fn: mean)
  |> yield(name: "mean")

Задайте условие так, чтобы оповещение срабатывало, когда среднее значение превышает 85.

SQL: оповещение об использовании диска

Отслеживайте использование диска с помощью SQL-запроса:

SQL
SELECT $__dateBin(time), mean(used_percent)
FROM disk
WHERE $__timeFilter(time)
GROUP BY $__dateBin(time)

Задайте условие так, чтобы оповещение срабатывало, когда среднее значение превышает 80.

Ограничения

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

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

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

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

Сложность запроса

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

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

Обработка временных ошибок и тайм-аутов

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

Чтобы сделать правила оповещений устойчивыми к временным ошибкам:

  1. В настройках правила оповещения разверните Configure no data and error handling и задайте для Alert state if execution error or timeout значение Keep Last State. Правило сохраняет предыдущее состояние при кратковременных сбоях оценки, а не отправляет оповещение об ошибке.
  2. Задайте Pending period, чтобы условие оповещения должно было выполняться в течение устойчивого периода на нескольких оценках, прежде чем оповещение сработает.
  3. Если оценки завершаются неудачно из-за нехватки времени на выполнение запросов, увеличьте тайм-аут источника данных. Подробности см. в разделе Расширенные настройки HTTP.
  4. Упростите или сузьте запросы оповещений, чтобы они успевали завершаться с запасом. Рекомендации см. в разделе Сложность запроса.

Дополнительные сведения об обработке состояний ошибок см. в разделе Обработка отсутствия данных и ошибок.

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

При создании оповещений InfluxDB следуйте этим рекомендациям:

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

Если при создании или оценке правил оповещений возникают ошибки, см. раздел Устранение неполадок источника данных InfluxDB.