Monitoring Promethues警报规则中的动态标签值
我对监控世界有点陌生。这是我的问题 我只想根据asset-id为一组资产发出警报 我的指标如下所示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
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
- 让您正在使用的任何部署工具(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