使用正则表达式解析警报“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 使用正则表达式检查列中的数值时出错

尝试在 C++ 中使用 boost 正则表达式匹配从字符串转换为 int 时出错

解析大文件时避免正则表达式回溯

jQuery选择器探究:正则表达式汇总

jQuery选择器探究:正则表达式汇总

Python Xpath的解析,应用