【问题标题】:Dynamic label values in Promethues alerting rulesPrometheus 警报规则中的动态标签值
【发布时间】:2018-08-22 02:38:03
【问题描述】:

我对监控领域有点陌生。这是我的问题。

我只想根据资产 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 在开发时是未知的,我不希望我的客户创建规则。

【问题讨论】:

    标签: monitoring prometheus prometheus-alertmanager


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-03-03
      • 1970-01-01
      • 2022-01-26
      • 2021-04-23
      • 2021-11-23
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多