使用正则表达式解析警报“expr”时出错
Posted
技术标签:
【中文标题】使用正则表达式解析警报“expr”时出错【英文标题】:Error parsing alert "expr" with regular expression in it 【发布时间】:2020-02-24 02:31:30 【问题描述】:我正在尝试使用包含正则表达式的“expr”定义警报规则
Metric: XYZ-POST-failure-400-1min-rate
- alert: alert_name_here
expr: __name__=~"(.*)-POST-failure-\d3-1min-rate" > 0
使用“promtool”进行单元测试
Error
group "group_name", rule 1, "alert_name_here": could not parse expression: parse error at char 10: unexpected character after '=': '~'
Prometheus 警报管理器是否支持这一点? 有人可以指导我实现这一目标的正确方法是什么?
谢谢
【问题讨论】:
您缺少括号__name__=~...
以匹配与正则表达式匹配的任何名称度量;这实际上是一个标签匹配表达式。
感谢您花时间回答。但是包含括号 会使 YAML 无效
引用表达式以将其解释为字符串:'__name__=~"..." > 0'
【参考方案1】:
表达式应该是一个有效的 PromQL 查询,您缺少花括号以使其成为 valid vector selector:
__name__=~"(.*)-POST-failure-\d3-1min-rate" > 0
您可以在 Prometheus 界面中对其进行测试。
关于前导花括号的 YAML 问题,您可以使用允许特殊字符序列的单引号:
- alert: alert_name_here
expr: '__name__=~"(.*)-POST-failure-\d3-1min-rate" > 0'
【讨论】:
以上是关于使用正则表达式解析警报“expr”时出错的主要内容,如果未能解决你的问题,请参考以下文章
使用 str.contains 使用正则表达式检查列中的数值时出错