【问题标题】:Domain Regex for PrometheusePrometheus 的域正则表达式
【发布时间】:2021-05-20 21:15:29
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: regex wildcard wildcard-subdomain


    【解决方案1】:

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

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

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

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

    希望这能回答你的问题!

    -Eivind

    【讨论】:

      【解决方案2】:

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

      Prometheus 查询问题:

      【讨论】:

        【解决方案3】:

        在 regex101.com 上,我已经放置了我正在寻找的过滤器(通过“presto.worker”匹配),它确实显示出很好的匹配,但是当我在 Prometheus 监控系统上运行时,它出现“未知转义序列”错误"

        我猜正斜杠需要转义。怎么做?

        【讨论】:

          【解决方案4】:

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

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

          注意实例=之后的~

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2011-12-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多