Оповещения InfluxDB
Вы можете использовать Grafana Alerting вместе с InfluxDB для создания оповещений на основе данных временных рядов. Это позволяет отслеживать метрики, выявлять аномалии и получать уведомления при выполнении определённых условий.
Общую информацию о Grafana Alerting см. в разделе Grafana Alerting.
Прежде чем начать
Перед созданием оповещений с помощью InfluxDB убедитесь, что у вас есть:
- Источник данных InfluxDB, настроенный в Grafana
- Соответствующие права на создание правил оповещений
- Понимание метрик, которые вы хотите отслеживать
Поддерживаемые типы запросов
Оповещения InfluxDB поддерживают все три языка запросов: InfluxQL, SQL и Flux. Запросы должны возвращать данные временных рядов, чтобы Grafana могла оценивать значения во времени и запускать оповещения при пересечении порогов.
Совместимость языков запросов
Создание правила оповещения
Чтобы создать правило оповещения с помощью InfluxDB:
- Перейдите в Alerting > Alert rules.
- Нажмите New alert rule.
- Введите имя правила оповещения.
- Выберите ваш источник данных InfluxDB.
- Постройте запрос с помощью редактора запросов.
- Настройте условие оповещения (например, когда среднее значение превышает порог).
- Задайте интервал оценки и период ожидания (pending period).
- Настройте уведомления и метки.
- Нажмите Save rule.
Подробные инструкции см. в разделе Создание правила оповещения под управлением Grafana.
Примеры запросов для оповещений
Следующие примеры демонстрируют типичные сценарии оповещений с InfluxDB.
InfluxQL: оповещение о высокой загрузке CPU
Отслеживайте загрузку CPU и получайте оповещение при превышении порога:
- Query: выберите измерение
cpuс агрегациейmean("usage_system"). - GROUP BY:
time($__interval) - Condition: когда среднее значение выше 90.
В режиме необработанного запроса:
SELECT mean("usage_system") FROM "cpu" WHERE $timeFilter GROUP BY time($__interval) fill(null)
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-запроса:
SELECT $__dateBin(time), mean(used_percent)
FROM disk
WHERE $__timeFilter(time)
GROUP BY $__dateBin(time)
Задайте условие так, чтобы оповещение срабатывало, когда среднее значение превышает 80.
Ограничения
При использовании InfluxDB с Grafana Alerting учитывайте следующие ограничения:
Шаблонные переменные не поддерживаются
Запросы оповещений не могут содержать шаблонные переменные. Grafana оценивает правила оповещений на бэкенде без контекста дашборда, поэтому переменные вроде $hostname или $region не раскрываются.
Если в запросе вашего дашборда используются шаблонные переменные, создайте отдельный запрос для оповещений с жёстко заданными значениями.
Сложность запроса
Сложные запросы с множеством вложенных функций или большими наборами результатов могут завершаться по тайм-ауту или не выполняться. Упростите запросы для оповещений:
- Сократите диапазон времени
- Используйте подходящие интервалы агрегации
- Добавьте фильтры, чтобы ограничить объём просматриваемых данных
Обработка временных ошибок и тайм-аутов
Кратковременные всплески задержек InfluxDB или перебои сети могут приводить к сбою оценки правил оповещений. По умолчанию неудачная оценка переводит правило в состояние ошибки, что может вызвать сразу большое количество ложных уведомлений, хотя ваши данные в порядке.
Чтобы сделать правила оповещений устойчивыми к временным ошибкам:
- В настройках правила оповещения разверните Configure no data and error handling и задайте для Alert state if execution error or timeout значение Keep Last State. Правило сохраняет предыдущее состояние при кратковременных сбоях оценки, а не отправляет оповещение об ошибке.
- Задайте Pending period, чтобы условие оповещения должно было выполняться в течение устойчивого периода на нескольких оценках, прежде чем оповещение сработает.
- Если оценки завершаются неудачно из-за нехватки времени на выполнение запросов, увеличьте тайм-аут источника данных. Подробности см. в разделе Расширенные настройки HTTP.
- Упростите или сузьте запросы оповещений, чтобы они успевали завершаться с запасом. Рекомендации см. в разделе Сложность запроса.
Дополнительные сведения об обработке состояний ошибок см. в разделе Обработка отсутствия данных и ошибок.
Рекомендации
При создании оповещений InfluxDB следуйте этим рекомендациям:
- Используйте конкретные фильтры: добавляйте условия WHERE или фильтры Flux, чтобы сосредоточиться на нужных данных и повысить производительность запросов.
- Выбирайте подходящие интервалы: согласуйте интервал GROUP BY time с частотой оценки.
- Сначала проверяйте запросы: убедитесь, что запрос возвращает ожидаемые результаты в Explore, прежде чем создавать оповещение.
- Задавайте реалистичные пороги: основывайте пороги оповещений на исторических закономерностях данных.
- Используйте осмысленные имена: давайте правилам оповещений описательные имена, отражающие то, что они отслеживают.
Если при создании или оценке правил оповещений возникают ошибки, см. раздел Устранение неполадок источника данных InfluxDB.