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

Jul*_*tel 5 prometheus prometheus-node-exporter

现在我正在从节点导出器中抓取指标。节点导出器导出的一些指标具有标签mountpoint

我想删除具有此标签且与正则表达式不匹配的时间序列。我尝试使用该keep操作(因为我想保留与此正则表达式匹配的时间序列,但这也会删除所有其他没有mountpoint标签的指标。

metric_relabel_configs:
  - source_labels: ['mountpoint']
    regex: '(\/home|\/var\/domains)\/something.*'
    action: keep
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用该drop操作,但这需要我使用负向前瞻来反转正则表达式(这不受支持,因为 Prometheus 当然是用 Go 编写的)。

我对此有何选择?

重要的是,我无法控制节点导出器的配置方式,因此我无法将节点导出器本身配置为不导出某些特定安装点的指标(如果可能的话)。

Mic*_*las 2

如果我理解正确的话,那么以下内容应该可以满足您的需求。我在Relabeler在线工具中对其进行了测试,似乎可以满足您的要求?

使用这些重新标记规则:

- source_labels: ['mountpoint']
  regex: '(\/home|\/var\/domains)\/something.*'
  target_label: __tmp_keep_me
  replacement: true
- source_labels: [__tmp_keep_me]
  regex: true
  action: keep
Run Code Online (Sandbox Code Playgroud)

将保留以下(示例)对象标签:

mountpoint: "/home/something/"
job: "node"
fstype: "ext4"
Run Code Online (Sandbox Code Playgroud)

虽然这些会被删除:

mountpoint: "/tmp"
job: "node"
fstype: "ext4"
Run Code Online (Sandbox Code Playgroud)

请注意,我使用了 Brian Brazil 在Or in relabelling文章中分享的技巧并进行了修改。

  • 这并不是因为问题仍然存在,没有“挂载点”标签的时间序列也会被丢弃。我不知道“__tmp_”约定/重新标记技术,所以谢谢! (2认同)