Prometheus 警报规则中的动态标签值
Dynamic label values in Promethues alerting rules
我是监控界的新手。这是我的问题。
我只想针对一组基于资产 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 表达式不允许我使用模板。基本上,我正在寻找如下表达式。
表达式:test_value{asset_id=$1} >= 4.
1 美元的价值将来自其他地方(资产列表)。
有这种可能吗?我不想通过为每个资产创建相同的规则来硬编码表达式中的资产 ID。基本上资产 ID 在开发时是未知的,我不希望我的客户创建规则。
PromQL 本身不支持模板。不过,您确实有几种选择:
- 让您使用的任何部署工具(Ansible、Chef、Puppet)使用列出您感兴趣的所有资产的正则表达式填充
</code>(并使用 <code>=~
匹配器而不是 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
我是监控界的新手。这是我的问题。
我只想针对一组基于资产 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 表达式不允许我使用模板。基本上,我正在寻找如下表达式。
表达式:test_value{asset_id=$1} >= 4.
1 美元的价值将来自其他地方(资产列表)。
有这种可能吗?我不想通过为每个资产创建相同的规则来硬编码表达式中的资产 ID。基本上资产 ID 在开发时是未知的,我不希望我的客户创建规则。
PromQL 本身不支持模板。不过,您确实有几种选择:
- 让您使用的任何部署工具(Ansible、Chef、Puppet)使用列出您感兴趣的所有资产的正则表达式填充
</code>(并使用 <code>=~
匹配器而不是 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