Значения динамических меток в правилах предупреждений 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 доллара будет извлечена из другого источника (список активов).

Это возможность? Я не хочу жестко кодировать идентификатор актива в выражении и там, создавая одно и то же правило для каждого актива. В основном идентификатор ресурсов неизвестен во время разработки, и я не хочу, чтобы мой клиент создавал правила.


person TheMonkWhoSoldHisCode    schedule 22.08.2018    source источник


Ответы (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
    
person Alin Sînpălean    schedule 22.08.2018