Динамические значения меток в правилах оповещения 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
    
Другие вопросы по тегам