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

Posted

技术标签:

【中文标题】Prometheus(公制)使用逆正则表达式匹配/负前瞻重新标记配置【英文标题】:Prometheus (metric) relabel config with inverse regex match / negative lookahead 【发布时间】:2021-09-03 03:03:21 【问题描述】:

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

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

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

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

我有哪些选择?

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

【问题讨论】:

【参考方案1】:

如果我对您的理解正确,那么以下应该满足您的需求。我在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

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

mountpoint: "/home/something/"
job: "node"
fstype: "ext4"

虽然这些将被删除:

mountpoint: "/tmp"
job: "node"
fstype: "ext4"

请注意,我使用了 Brian Brazil 在 Or in relabelling 文章中分享的提示并对其进行了改编。

【讨论】:

这不是因为问题仍然存在,没有“挂载点”标签的时间序列也会被丢弃。我不知道“_tmp”约定/重新标记技术,所以谢谢! 罗杰。也许你想在discuss.prometheus.io 中问这个问题……我相信那里会有人回答;) 会这样做,非常感谢您的帮助!真的很感激;-)

以上是关于Prometheus(公制)使用逆正则表达式匹配/负前瞻重新标记配置的主要内容,如果未能解决你的问题,请参考以下文章

Prometheus-PQL

普罗米修斯与正则表达式查询不匹配

Grafana + Prometheus 如何在查询指标中使用正则表达式?

Prometheus简单使用--promQL,QPS

Prometheus - 通过正则表达式聚合和重新标记

千分尺公制更新值慢?