我对监视世界有点新手。这是我的问题。
我只想根据资产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在开发时是未知的,我不希望我的客户创建规则。
答案 0 :(得分:1)
PromQL本身不支持模板。不过,您确实有几种选择:
$1
都会使用一个正则表达式填充,该正则表达式列出您感兴趣的所有资产(并使用=~
匹配器PromQL表达式中=
的值。使用asset_id
标签创建另一个指标(通过将其推送到Pushgateway或在单独的规则文件中定义),该标签中填充了您感兴趣的所有资产ID,例如:< / p>
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