我一直在尝试在我的普罗米修斯设置中实现联邦。在这样做时,我想排除一些由我的刮刀Prometheus刮掉的指标。
这是我的联盟配置:
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'xxxxxxxx'
scrape_interval: 15s
honor_labels: true
metrics_path: '/federate'
params:
'match[]':
- '{job!="kubernetes-nodes"}'
static_configs:
- targets:
- 'my-metrics-source'
从配置中可以看出,我想排除任何包含kubernetes-nodes
job
标签的指标,并检索其余指标。但是,当我部署配置时,不会删除任何指标。
这是普罗米修斯的错误还是我误解了匹配参数是如何工作的?
谢谢!
答案 0 :(得分:4)
如果你真的需要这样做,你需要一个包含结果的主矢量选择器。
否则您将收到错误vector selector must contain at least one non-empty matcher
。
例如,对于这些匹配器,您将获得您想要实现的目标:
curl -G --data-urlencode 'match[]={job=~".+", job!="kubernetes-nodes"}' http://your-url.example.com/federate
答案 1 :(得分:1)
作为一种安全措施,为避免您不小心写入返回Prometheus中所有时间序列的即时向量,选择器必须包含至少一个与空字符串不匹配的匹配器。你的选择器没有这样的匹配器(job!="kubernetes-nodes"
匹配一个空的job
标签),所以这给你一个错误。
您可以添加一个选择器,例如__name__=~".+"
但是在更高级别这是滥用联盟,因为它不是用于拉动整个Prometheus服务器。见https://www.robustperception.io/federation-what-is-it-good-for/