如何在Prometheus中创建告警:当指标值与expected_value标签值不一致时触发
在Prometheus中创建指标值与expected_value标签不一致的告警规则
要实现当my_metric的数值和它的expected_value标签取值不一致时触发告警,核心是把字符串类型的标签值转成数值,再和指标值做比较。以下是具体的告警规则配置:
groups: - name: my_metric_alerts rules: - alert: MetricValueMismatchExpected expr: my_metric != strtofloat(label_replace(my_metric, "dummy", "$1", "expected_value", "(.*)")) for: 1m labels: severity: critical annotations: summary: "指标值与预期值不匹配" description: "实例 {{ $labels.instance }} 的指标 my_metric 当前值为 {{ $value }},预期值为 {{ $labels.expected_value }}"
关键说明:
strtofloat函数:将expected_value标签的字符串内容转换为数值类型,这样才能和指标的数值进行比较运算label_replace函数:用来提取expected_value标签的内容(创建的dummy标签仅为辅助提取,无实际作用)for: 1m:设置告警触发的持续时间,避免瞬时数值波动导致误报- 过滤非数值标签:如果
expected_value可能存在非数值内容,可以在表达式中添加过滤条件,比如my_metric{expected_value=~"^[0-9.]+$"} != strtofloat(...),防止转换失败
内容的提问来源于stack exchange,提问作者Will
相关产品推荐
相关产品推荐

