Prometheus 抑制但没有匹配的实例标签

Posted

技术标签:

【中文标题】Prometheus 抑制但没有匹配的实例标签【英文标题】:Prometheus inhibiting but no matching instance label 【发布时间】:2020-03-13 16:54:24 【问题描述】:

所以我有这种情况: Blackbox-icmp,其中实例标签为example.com Blackbox-http,其中实例标签为https://example.com 节点导出器,其中实例标签为example.com:9100

现在所有这些都引用同一个服务器,并且我创建了一个警报,当 blackbox-icmp 失败并且 node-exporter 关闭时触发,InstanceDown 警报。现在 blackbox-http 也会触发,因为 http 状态代码现在是错误的,但我不希望 blackbox-http 警报也触发,而 InstanceDown 警报已经触发。

我遇到的问题是,即使是同一台服务器,实例标签也是不同的。我怎样才能抑制这种情况?我能想出的唯一解决方法是为每个作业添加另一种冗余标签,例如“域”,这样我就可以在equals 列表中使用它来抑制。

【问题讨论】:

【参考方案1】:

您需要使用 Prometheus 的“relabel_config”功能,例如,您可以将所有不同的实例标签更改为仅“示例”。

Blackbox-icmp

relabel_configs:
  - source_labels: [__address__]
    regex: '([a-z]+)\.com'
    replacement: $1
    target_label: instance

黑盒-http

relabel_configs:
  - source_labels: [__address__]
    regex: 'https//([a-z]+)\.com'
    replacement: $1
    target_label: instance

节点导出器

relabel_configs:
  - source_labels: [__address__]
    regex: '([a-z]+)\..*'
    replacement: $1
    target_label: instance

重要

还保留常规的 Blackbox relabel_configs 规则,如示例 here

relabel_configs:
  - source_labels: [__address__]
    target_label: __param_target
  - source_labels: [__param_target]
    target_label: instance
  - target_label: __address__
    replacement: 127.0.0.1:9115  # The blackbox exporter's real hostname:port.

在 Prometheus 文档here 中查看更多信息。

【讨论】:

但这也会改变探测实际去往的地址或节点导出器的预期地址。 您需要保留常规的 Blackbox relabel_configs 规则,如 Blackbox README 中的示例中所述。我刚刚更新了答案。

以上是关于Prometheus 抑制但没有匹配的实例标签的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Prometheus 警报中匹配多个标签?

通过 Grafana 和 Prometheus 中的导出实例进行匹配

Prometheus 选择性地抑制警报

Prometheus标签的使用说明

使用 metric 值查询 prometheus 标签值

Prometheus(公制)使用逆正则表达式匹配/负前瞻重新标记配置