+++
title = "Создать оповещения"
description = "Настроить правила предупреждений"
keywords = ["harvest", "alerting", "guide", "rules"]
weight = 200
+++

# Создавать оповещения

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

![Обзор предупреждений](/static/img/docs/alerting/drag_handles_gif.gif)

На вкладке «Предупреждение» панели графика вы можете настроить, как часто должно оцениваться правило оповещения, и условия, которые необходимо выполнить, чтобы оповещение изменило состояние и активировало его [уведомления]({{< relref "notifications.md" > }}).

В настоящее время только панель графиков поддерживает правила предупреждений.

## Добавить или изменить правило оповещения

1. Перейдите к панели, для которой вы хотите добавить или изменить правило оповещения, щелкните заголовок, а затем нажмите **Изменить**.
1. На вкладке Оповещение нажмите **Создать оповещение**. Если для этой панели уже существует оповещение, вы можете просто отредактировать поля на вкладке Оповещение.
1. Заполните поля. Описания перечислены ниже в разделе [Поля правил предупреждений](#alert-rule-fields).
1. Когда вы закончите писать правило, нажмите **Сохранить** в правом верхнем углу, чтобы сохранить правило предупреждений и панель инструментов.
1. (Необязательно, но рекомендуется) Нажмите **Проверить правило**, чтобы убедиться, что правило возвращает ожидаемые результаты.
## Удалить оповещение

Чтобы удалить оповещение, прокрутите его до конца и нажмите **Удалить**.

## Поля правил предупреждений

В этом разделе описываются поля, которые вы заполняете для создания оповещения.

### Правило

- **Имя -** Введите описательное имя. Имя будет отображаться в списке правил предупреждений. Это поле поддерживает [templating]({{< relref "./add-notification-template.md" >}}).
- **Оценивать каждые -** Укажите, как часто планировщик должен оценивать правило предупреждения. Это называется _оценочным интервалом_.
- **Для -** Укажите, как долго запрос должен нарушать настроенные пороговые значения, прежде чем сработает уведомление о предупреждении.

Вы можете установить минимальный интервал оценки в поле конфигурации `alerting.min_interval_seconds`, чтобы установить минимальное время между оценками. См. [Конфигурация]({{< relref "../administration/configuration.md" >}}#min-interval-seconds) для получения дополнительной информации.

> **Внимание:** Не используйте «Для» с параметром «Если нет данных или все значения равны нулю», установленным на «Нет данных». Запуск «Нет данных» срабатывает мгновенно и не учитывает «Для». Это также может привести к тому, что уведомление OK не будет отправлено, если оповещение переходит из состояния «Нет данных -> Ожидание -> OK».

Если для правила оповещения настроено «Для», а запрос нарушает настроенный порог, то сначала он перейдет из «ОК» в «Ожидание». При переходе от «ОК» к «Ожидание» Harvest не будет отправлять никаких уведомлений. После того, как правило оповещения сработает дольше, чем «Для», оно изменится на «Оповещение» и отправит уведомления о предупреждениях.

Как правило, всегда полезно использовать этот параметр, так как часто бывает хуже получить ложное срабатывание, чем подождать несколько минут до срабатывания уведомления о предупреждении. Глядя на «Список предупреждений» или «Панели списка предупреждений», вы сможете увидеть предупреждения в состоянии ожидания.

Ниже вы можете увидеть пример временной шкалы оповещения с использованием параметра «Для». Примерно в 16:04 состояние оповещения меняется на «Ожидание», а через 4 минуты — на «Оповещение», когда отправляются оповещения. Как только ряд возвращается к нормальному состоянию, правило оповещения возвращается к «ОК».
{{< Figure class="float-right" src="/static/img/docs/v54/alerting-for-dark-theme.png" caption="Предупреждение для" >}}

{{< Figure class="float-right" max-width="40%" src="/static/img/docs/v4/alerting_conditions.png" caption="Условия оповещения" >}}

### Условия

В настоящее время единственным существующим типом условия является условие `Query`, которое позволяет вам
укажите букву запроса, диапазон времени и функцию агрегирования.
#### Пример условия запроса

```sql
avg() запроса (A, 15 м, сейчас) НИЖЕ 14
```

- `avg()` Управляет тем, как значения для **каждого** ряда должны быть уменьшены до значения, которое можно сравнить с пороговым значением. Нажмите на функцию, чтобы изменить ее на другую функцию агрегации.
- `query(A, 15m, now)` Буква определяет, какой запрос выполнять на вкладке **Metrics**. Вторые два параметра определяют диапазон времени: «15 минут, сейчас» означает от 15 минут назад до настоящего времени. Вы также можете сделать «10 минут, сейчас-2 минуты», чтобы определить временной диапазон, который будет от 10 минут до 2 минут назад. Это полезно, если вы хотите игнорировать последние 2 минуты данных.
- `IS BELOW 14` Определяет тип порога и пороговое значение. Вы можете нажать «IS НИЖЕ», чтобы изменить тип порога.

Запрос, используемый в правиле предупреждений, не может содержать какие-либо переменные шаблона. В настоящее время мы поддерживаем только операторы «И» и «ИЛИ» между условиями, и они выполняются последовательно.
Например, у нас есть 3 условия в следующем порядке:
_condition:A(оценка: TRUE) ИЛИ условие:B(оценка: FALSE) И условие:C(оценка: TRUE)_
поэтому результат будет рассчитан как ((ИСТИНА ИЛИ ЛОЖЬ) И ИСТИНА) = ИСТИНА.

В будущем мы планируем добавить другие типы условий, такие как «Другое оповещение», где вы можете включить состояние другого оповещения в свои условия, и «Время дня».

#### Несколько серий

Если запрос возвращает несколько рядов, функция агрегирования и проверка порога будут оцениваться для каждого ряда. Что Harvest в настоящее время не делает, так это не отслеживает состояние правила оповещения **для каждой серии**. Это имеет последствия, подробно описанные в приведенном ниже сценарии.

- Условие оповещения с запросом, который возвращает 2 серии: **server1** и **server2**.
- Серия **server1** приводит к срабатыванию правила оповещения и переключению в состояние «Оповещение».
- Уведомления рассылаются с сообщением: _пиковая загрузка (сервер1)_
- При последующей оценке того же правила предупреждений серия **server2** также приводит к срабатыванию правила предупреждений.
- Новые уведомления не отправляются, так как правило предупреждений уже находится в состоянии «Предупреждение».

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

> Начиная с Harvest v5.3, вы можете настроить отправку напоминаний для сработавших оповещений. Это отправит дополнительные уведомления
> когда предупреждение продолжает срабатывать. Если другие серии (например, server2 в приведенном выше примере) также вызывают срабатывание правила оповещения, они будут включены в уведомление о напоминании. В зависимости от того, какой канал уведомлений вы используете, вы можете воспользоваться этой функцией для определения новых/существующих серий, вызывающих срабатывание предупреждения.

### Нет данных и обработка ошибок

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

| Вариант без данных  |             Описание                                                                            |
| --------------- | ------------------------------------------------------------------------------------------ |
| Без данных        | Установите состояние правила оповещения на «NoData»                                                          |
| Оповещение       | Установите состояние правила оповещения  на `Alerting`                                                         |
| Сохранить последнее состояние | Сохраняйте текущее состояние правила предупреждений, каким бы оно ни было.                                       |
| Ok              | Не уверен, почему вы хотите отправить себе предупреждение, когда все в порядке, но вы могли бы. |

### Ошибки выполнения или тайм-ауты

Сообщите Harvest, как обрабатывать ошибки выполнения или тайм-аута.

|Вариант ошибки или тайм-аута | Описание                                      |
| ----------------------- | --------------------------------------------------- |
| Оповещение               | Установите состояние правила предупреждений на «Alerting».                 |
| Сохранить последнее состояние        |Сохранить текущее состояние правила предупреждений, каким бы оно ни было. |

Если у вас есть ненадежное хранилище временных рядов, запросы из которого когда-либо истекают по тайм-ауту или терпят неудачу случайным образом, вы можете установить для этой опции значение «Сохранить последнее состояние», чтобы в основном их игнорировать.

## Уведомления

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

Фактические уведомления настраиваются и распределяются между несколькими оповещениями. Читать
[Уведомления об оповещениях]({{< relref "notifications.md" >}}) для получения информации о том, как настроить уведомления.

- **Отправить -** Выберите канал уведомлений о предупреждениях, если он у вас настроен.
- **Сообщение -** Введите текстовое сообщение, которое будет отправлено по каналу уведомлений. Некоторые уведомители предупреждений поддерживают преобразование текста в HTML или другие расширенные форматы. Это поле поддерживает [templating]({{< relref "./add-notification-template.md" >}}).
- **Теги -** Укажите список тегов (ключ/значение), которые будут включены в уведомление. Он поддерживается только [некоторыми уведомителями]({{< relref "notifications/#all-supported-notifiers" >}}).

## История состояний предупреждений и аннотации

Изменения состояния предупреждений записываются во внутреннюю таблицу аннотаций в базе данных Harvest. Изменения состояния визуализируются в виде аннотаций на панели графика правила оповещения. Вы также можете перейти в подменю «История состояний» на вкладке предупреждений, чтобы просмотреть и очистить историю состояний.

