有条件地删除标签

ITC*_*hap 2 prometheus

我想删除一个标签,但仅限于特定系列。从文档中我可以看到所需的操作是 labeldrop。

我的出发点是这样的

    - action: replace
      source_labels: [__name__, url_rule]
      regex: 'test_.+;(.+)'
      target_label: path
    - action: labeldrop
      regex: 'url_rule'
Run Code Online (Sandbox Code Playgroud)

如何确保第二个操作只会从以 test_ 开头的指标中删除 url_rule 标签(就像第一个操作一样)?

val*_*ala 9

Prometheus 不提供通过 条件标签删除的功能action: labeldrop。此操作无条件应用于每个指标的每个标签。但您可以使用以下解决方法url_rule从名称以 开头的指标中删除标签test_

- source_labels: [__name__, url_rule]
  regex: "test_.+;.+"
  replacement: ""
  target_label: url_rule
Run Code Online (Sandbox Code Playgroud)

它只是设置一个空值来url_rule标记名称从test_前缀开始的指标。然后,Prometheus 在重新标记后会丢弃带有空值的标签。

ifPS当使用 VictoriaMetrics - 我从事的类似 Prometheus 的监控解决方案时,可以通过条件简化重新标记规则:

- if: "{__name__=~'test_.+'}"
  action: labeldrop
  regex: url_rule
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅这些文档