Prometheus 的域正则表达式

Domain Regex for Prometheuse

我正在尝试编写一个正则表达式,它将忽略前两个八位字节 'name.name-name.presto.worker' 但会匹配其余的 'presto.worker'.

我有两个不同的域名,它们遵循与上面所示相同的结构,我需要监控系统使用最后两个八位字节捕获这两个域 presto.worker。

我发现几乎可以工作的最后一个正则表达式是:

count(up{instance="/[A-Za-z.]+[A-Za-z.-]+(presto.)+(worker)/g"})

用于Prometheuse监控系统。 谢谢您的帮助 亚尼夫

我不确定您所说的忽略前两个八位字节是什么意思。如果您对匹配它们不感兴趣,您可以在正则表达式中使用“presto\.worker”,这将匹配每个实例。

如果您还想获取前两个八位字节并将其过滤掉,这里是它的正则表达式:

([A-Za-z]+\.[A-Za-z]+-[A-Za-z]+\.)(presto\.worker)

前两个八位字节现在在一个单独的组(第 1 组)中。我不确定 Prometheuse 监控系统将如何输出这些匹配项(通常你会得到每个组的数组)。尝试将正则表达式粘贴到 regex101.com 中以了解我的意思。

希望这能回答您的问题!

-埃文德

我已经尝试了两种解决方案,但都有不同的问题

Prometheus 查询问题:

在 regex101.com 我已经放置了我正在寻找的过滤器(以匹配“presto.worker”)并且它确实显示了一个很好的匹配但是当我 运行 在普罗米修斯监控系统出现“未知转义序列”错误

我想 so.How 的正斜杠需要转义才能完成?

我已经找到了答案,感谢您的指导。为了让 prometheus 将代码视为正则表达式,我们需要在开头插入 ~ 使代码像这样:

count(up{instance=~[A-Za-z.]+[A-Za-z.-]+(presto.)+(worker)"}) BY (presto_failuredetector_HeartbeatFailureDetector_ActiveCount ) < 0.90

注意实例后的~=