Импорт data source-managed правил в Grafana-managed правила
Вы можете конвертировать существующие правила оповещений из источников данных, таких как Mimir, Loki и Prometheus, в Grafana-managed правила оповещений. Это позволяет вам эксплуатировать и управлять этими правилами с помощью Grafana Alerting.
Это руководство объясняет два метода импорта data source-managed правил:
-
Использование пользовательского интерфейса Grafana Alerting для импорта правил из подключённых источников данных или YAML-файлов правил Prometheus.
-
Использование инструментов командной строки, таких как
mimirtoolиcortextool, для импорта правил из YAML-файлов.
Импорт правил — безопасная операция: исходные data source-managed правила остаются нетронутыми в их исходном расположении. Во время импорта правила конвертируются в Grafana-managed правила с сохранением их конфигурации и поведения.
Выберите метод, который лучше всего подходит для вашего рабочего процесса. В качестве лучшей практики протестируйте и проверьте ваш процесс импорта, прежде чем миграцировать все правила оповещений.
Как это работает
Когда вы используете любой из методов импорта, data source-managed правила копируются в другую папку как Grafana-managed правила.
Исходные data source-managed правила остаются нетронутыми в их исходном расположении.
Скопированные правила конвертируются в Grafana-managed правила, сохраняя их поведение за счёт использования эквивалентных Grafana-managed возможностей. Во время конвертации применяются следующие настройки:
-
Уникальные UID
Вновь созданным правилам присваиваются уникальные UID. Если вы не хотите, чтобы UID генерировался автоматически, вы можете указать его с помощью метки
__grafana_alert_rule_uid__. -
Смещение запроса
К каждому правилу применяется смещение запроса. Например, смещение
1mкорректирует временной диапазон запроса доTo: now-1m.Смещение запроса правила берётся из значения
query_offsetв конфигурации группы правил. Если оно пустое, по умолчанию используется настройкаrule_query_offset, которая по умолчанию равна1m. -
Конвертация запросов правил
Для правил оповещений добавляются выражения
prometheus_mathиthresholdдля сохранения поведения Prometheus при отсутствии данных, гарантируя, что оповещение остаётся в состоянии Normal, когдаqueryне возвращает данных. -
Missing series evaluations to resolve
Настройка Missing series evaluations to resolve устанавливается в
1, чтобы воспроизвести поведение вытеснения оповещений Prometheus. -
Метки группы правил
Метки, определённые на уровне группы правил, добавляются как метки к каждому импортированному правилу в группе.
-
Последовательное вычисление
Импортированные правила вычисляются последовательно внутри каждой группы правил, повторяя поведение Prometheus. Это отличается от нативных Grafana-managed правил оповещений, где порядок вычисления не навязывается. Подробнее см. в разделе стратегии вычисления.
-
Совместимость функций
Опция
limitгруппы правил и функцияqueryвнутри шаблонов правил оповещений в настоящее время не поддерживаются в Grafana-managed правилах. Если присутствует опцияlimit, импорт завершается с ошибкой. Однако правила сqueryв шаблонах импортируются.
Note
Правила с меткой
__grafana_originне включаются в импорт правил. Эти правила обычно создаются такими приложениями, как Kubernetes Monitoring, Synthetic Monitoring, и другими плагинами Grafana.
Импорт правил с помощью Grafana Alerting
Вы можете использовать пользовательский интерфейс Grafana Alerting для импорта правил из следующих источников:
- Подключённые источники данных Mimir и Loki с включённым API ruler
- YAML-файлы правил Prometheus
Импортированные этим методом правила доступны для редактирования в интерфейсе. Как и обычные Grafana-managed правила, вы позже можете экспортировать их для провижининга.
Перед началом
Чтобы использовать Grafana Alerting для миграции правил, вам нужны следующие разрешения RBAC:
-
Alerting:
Rules Writer,Set provisioning status. -
Datasources:
Reader. -
Folders:
Creator.Разрешение Folders необязательно и нужно только если вы хотите создавать новые папки для вашего целевого пространства имён. Если у вашей учётной записи нет разрешений на просмотр пространства имён, инструмент создаёт новое.
Чтобы конвертировать data source-managed правила оповещений в Grafana managed оповещения:
-
Перейдите в Alerting > Alert rules.
-
Перейдите в раздел Data source-managed alert rules и нажмите Import to Grafana-managed rules.
-
Выберите Import source, из которого хотите импортировать правила:
- Выберите Existing data source-managed rules, чтобы импортировать правила из подключённых источников данных Mimir или Loki с включённым API ruler.
- Выберите Prometheus YAML file, чтобы импортировать правила, загрузив YAML-файл правил Prometheus.
-
В выпадающем списке Data source выберите источник данных, к которому будут обращаться импортированные правила оповещений.
-
(Необязательно) В Additional settings выберите целевую папку или назначьте новую папку для импорта правил.
Если вы импортируете правила в существующую папку, не выбирайте папку с существующими правилами оповещений, так как их можно перезаписать.
-
(Необязательно) Выберите Namespace и/или Group, чтобы определить, какие правила импортируются.
-
(Необязательно) Включите Pause imported alerting rules.
Приостановка останавливает вычисление правил оповещений и не создаёт экземпляров оповещений для вновь созданных Grafana-managed правил оповещений.
-
(Необязательно) Включите Pause imported recording rules.
Приостановка останавливает поведение вычисления правил оповещений для вновь созданных Grafana-managed правил оповещений.
-
(Необязательно) В Target data source раздела Recording rules вы можете выбрать источник данных, в который импортированные recording-правила будут записывать метрики. По умолчанию это источник данных, выбранный в выпадающем списке Data source.
-
Нажмите Import.
Предпросмотр показывает правила, которые будут импортированы. Если ваша целевая папка содержит папки с теми же именами, что и импортируемые, отображается предупреждение, чтобы сообщить вам об этом. Вы можете изучить предупреждение, чтобы увидеть список папок, которые могут быть перезаписаны.
Нажмите Yes, import, чтобы импортировать правила.
Импорт правил с помощью инструментов командной строки
Вы также можете использовать инструменты командной строки для импорта data source-managed правил как Grafana-managed правил: используйте mimirtool для правил Mimir и Prometheus и cortextool для правил Loki.
Оба инструмента предоставляют команды rules для импорта групп правил. Например:
rules loadможет импортировать группы правил из файлов.rules syncможет читать файлы правил и применяет только различия по сравнению с существующими Grafana-managed правилами. Это полезно для автоматизированных рабочих процессов и конвейеров.
По умолчанию правила, импортированные с помощью API или инструментов командной строки, являются Provisioned и не редактируются в интерфейсе. Чтобы сделать их редактируемыми, включите заголовок X-Disable-Provenance.
Перед началом
Вам нужно установить mimirtool или cortextool (версии 0.11.3 или выше).
Вам нужна сервисная учётная запись со следующими разрешениями RBAC:
- Alerting:
Rules Reader,Rules Writer,Set provisioning status. - Datasources:
Reader. - Folders:
Creator,Reader,Writer.
Вам нужен токен сервисной учётной записи с вашей сервисной учётной записью. Подробнее см. в разделе сервисные учётные записи и токены сервисных учётных записей.
mimirtool
Чтобы конвертировать и импортировать их в экземпляр Grafana, вы можете использовать команду mimirtool rules load:
MIMIR_ADDRESS=<GRAFANA_BASE_URL>/api/convert/ \
MIMIR_AUTH_TOKEN=<SERVICE_ACCOUNT_TOKEN> \
MIMIR_TENANT_ID=1 \
mimirtool rules load rule_file.yaml \
--extra-headers "X-Grafana-Alerting-Datasource-UID=<DATASOURCE_UID_QUERY_TARGET>"
Эта команда импортирует правила оповещений Prometheus, определённые в rule_file.yaml, как Grafana-managed правила оповещений. Важно знать, что:
- При использовании конечной точки
<GRAFANA_BASE_URL>/api/convert/mimirtoolвзаимодействует с Grafana, а не с экземпляром Mimir. В этом случаеMIMIR_TENANT_IDвсегда должен быть установлен в1. - Заголовок
X-Grafana-Alerting-Datasource-UIDнастраивает источник данных, к которому будут обращаться импортированные правила оповещений. Используйте несколько флагов--extra-headers, чтобы добавить другие необязательные заголовки.
Аналогично, команда rules sync может импортировать и обновлять Grafana-managed правила оповещений.
MIMIR_ADDRESS=<GRAFANA_BASE_URL>/api/convert/ \
MIMIR_AUTH_TOKEN=<SERVICE_ACCOUNT_TOKEN> \
MIMIR_TENANT_ID=1 \
mimirtool rules sync rule_file.yaml \
--extra-headers "X-Grafana-Alerting-Datasource-UID=<DATASOURCE_UID_QUERY_TARGET>" \
--concurrency 1
Флаг --concurrency должен быть установлен в 1, так как значение по умолчанию 8 может вызывать ошибки API.
Эта команда sync читает правила из файла, сравнивает их с существующими Grafana-managed правилами в экземпляре и применяет только различия — создавая, обновляя или удаляя правила по необходимости.
## Sync Summary: 0 Groups Created, 1 Groups Updated, 0 Groups Deleted
Дополнительные сведения о других командах и опциях Mimirtool см. в документации Mimirtool и документации Mimir HTTP Rule API.
cortextool
Для правил оповещений Loki используйте cortextool (версии 0.11.3 или выше) с флагом --backend=loki. Например:
CORTEX_ADDRESS=<GRAFANA_BASE_URL>/api/convert/ \
CORTEX_AUTH_TOKEN=<SERVICE_ACCOUNT_TOKEN> \
CORTEX_TENANT_ID=1 \
cortextool rules load loki_rules.yaml \
--extra-headers "X-Grafana-Alerting-Datasource-UID=<LOKI_DATASOURCE_UID_QUERY_TARGET>" \
--backend=loki
Необязательные заголовки
Дополнительные заголовки конфигурации для более детального контроля импорта включают следующее:
X-Disable-Provenance
Когда этот заголовок установлен в true:
- Импортированные правила не помечаются как провижиненные.
- Затем их можно редактировать в интерфейсе Grafana.
- Они исключаются из операций
GETиDELETEна конечных точках/api/convert.
Не включайте этот заголовок при использовании команды rules sync, так как она полагается на операции GET и DELETE для обнаружения и обновления существующих правил.
X-Grafana-Alerting-Alert-Rules-Paused
Установите в true, чтобы импортировать правила оповещений в приостановленном состоянии.
X-Grafana-Alerting-Recording-Rules-Paused
Установите в true, чтобы импортировать recording-правила в приостановленном состоянии.
X-Grafana-Alerting-Datasource-UID
UID источника данных, который использовать для запросов правил оповещений.
Если не указан в заголовке, Grafana использует настроенное значение по умолчанию из unified_alerting.prometheus_conversion.default_datasource_uid. Если ни заголовок, ни опция конфигурации не предоставлены, запрос завершается с ошибкой.
X-Grafana-Alerting-Target-Datasource-UID
UID целевого источника данных для recording-правил. Если не указан, используется значение из X-Grafana-Alerting-Datasource-UID.
X-Grafana-Alerting-Folder-UID
Введите UID целевой папки назначения для импортированных правил.
X-Grafana-Alerting-Notification-Settings
JSON-кодированный объект AlertRuleNotificationSettings, позволяющий задать точку контакта для правил оповещений.
Объект AlertRuleNotificationSettings
Когда вы устанавливаете X-Grafana-Alerting-Notification-Settings, значение заголовка должно быть JSON-кодированным объектом со следующими ключами:
Совместимые конечные точки
Перечисленные в этом разделе конечные точки API поддерживаются в Grafana и используются mimirtool и cortextool, как показано ранее. Эти конечные точки совместимы с Mimir HTTP API.
В этих конечных точках “namespace” соответствует названию папки в Grafana.
Конечные точки POST можно использовать для импорта data source–managed правил оповещений. Они принимают запросы как в YAML, так и в JSON. Если тип носителя не указан, подразумевается YAML.
Конечные точки GET и DELETE работают только с провижиненными и импортированными правилами оповещений. Все конечные точки GET поддерживают как JSON, так и YAML форматы ответов в зависимости от заголовка Accept: используйте application/json для ответов JSON или application/yaml для ответов YAML. YAML — формат по умолчанию, когда заголовок Accept не указан.
Создание или обновление нескольких групп правил
POST /convert/prometheus/config/v1/rules
Создаёт или обновляет несколько групп правил в нескольких пространствах имён. Эта конечная точка ожидает запрос с картой названий пространств имён в массивы групп правил и возвращает 202 при успехе.
Эта конечная точка не имеет эквивалента в Mimir и является специфичной для Grafana для массовых операций.
Пример тела запроса
namespace1:
- name: MyGroupName1
rules:
- alert: MyAlertName1
expr: up == 0
labels:
severity: warning
namespace2:
- name: MyGroupName2
rules:
- alert: MyAlertName2
expr: rate(http_requests_total[5m]) > 0.1
labels:
severity: critical