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(公制)使用逆正则表达式匹配/负前瞻重新标记配置的主要内容,如果未能解决你的问题,请参考以下文章