Динамические значения меток в правилах оповещения Promethues
Я новичок в мире мониторинга. Вот мой вопрос
Я хочу активировать оповещение только для набора активов на основе идентификатора ресурса.
Моя метрика выглядит следующим образом.
test_value{asset_id="123"} 0.215
Мои правила диспетчера оповещений выглядят следующим образом.
name: iot_rules
rules:
- alert: threshhold_alert
expr: test_value >= 4
#for: 1m
labels:
severity: critical
probableCause: Communication failure
annotations:
summary: 'Error detected on {{$labels.assset_id}}'
Я получаю шаблонную функцию в аннотации. Тем не менее, мое выражение PromQL не позволяет мне шаблон. В основном, я ищу написание выражения, как показано ниже.
expr: test_value {asset_id = $ 1}> = 4.
Значение за 1 доллар будет приходить откуда-то еще (список активов).
Это возможно? Я не хочу жестко кодировать идентификатор ресурса в выражении и там, создавая одно и то же правило для каждого актива. По сути, идентификатор активов неизвестен во время разработки, и я не хочу, чтобы мой клиент создавал правила.
1 ответ
Сам PromQL не поддерживает шаблоны. У вас есть несколько вариантов сделать это, хотя:
- Укажите, какой инструмент развертывания вы используете (Ansible, Chef, Puppet).
$1
с регулярным выражением, которое перечисляет все активы, которые вас интересуют (и использовать=~
совпадение вместо=
в вашем выражении PromQL). Создайте другую метрику (либо нажав ее на Pushgateway, либо определив ее в отдельном файле правил) с помощью
asset_id
метка, заполненная всеми интересующими вас идентификаторами активов, например:should_alert{asset_id="123"} 1 should_alert{asset_id="124"} 1 should_alert{asset_id="125"} 1
и затем определите свое выражение оповещения как:
expr: test_value >= 4 and on (asset_id) should_alert