Monitoring Promethues警报规则中的动态标签值

Monitoring Promethues警报规则中的动态标签值,monitoring,prometheus,prometheus-alertmanager,Monitoring,Prometheus,Prometheus Alertmanager,我对监控世界有点陌生。这是我的问题 我只想根据asset-id为一组资产发出警报 我的指标如下所示 test_value{asset_id="123"} 0.215 我的警报管理器规则如下所示 name: iot_rules rules: - alert: threshhold_alert expr: test_value >= 4 #for: 1m labels: severity: critical probable

我对监控世界有点陌生。这是我的问题

我只想根据asset-id为一组资产发出警报

我的指标如下所示

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美元的价值将来自其他地方(资产清单)


这有可能吗?我不想通过为每个资产创建相同的规则来硬编码表达式中的资产id。基本上,资产id在开发时是未知的,我不希望我的客户创建规则。

PromQL本身不支持模板化。不过,您确实有几种选择:

  • 让您正在使用的任何部署工具(Ansible、Chef、Puppet)使用正则表达式填充
    $1
    ,该正则表达式列出您感兴趣的所有资产(并使用
    =~
    匹配器,而不是ProMQ表达式中的
    =
  • 创建另一个度量(通过将其推送到Pushgateway或通过在单独的规则文件中定义它),并使用填充有您感兴趣的所有资产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
    

PromQL本身不支持模板化。不过,您确实有几种选择:

  • 让您正在使用的任何部署工具(Ansible、Chef、Puppet)使用正则表达式填充
    $1
    ,该正则表达式列出您感兴趣的所有资产(并使用
    =~
    匹配器,而不是ProMQ表达式中的
    =
  • 创建另一个度量(通过将其推送到Pushgateway或通过在单独的规则文件中定义它),并使用填充有您感兴趣的所有资产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