Prometheus Federation 匹配参数不起作用
Prometheus Federation match params do not work
我一直在尝试在我的 Prometheus 设置中实现联合。在执行此操作时,我想排除一些指标以供我的抓取工具 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
标签的指标,并检索其余指标。但是,当我部署我的配置时,没有指标被抓取。
这是 Prometheus 中的错误还是我只是误解了匹配参数的工作原理?
作为一项安全措施,以避免您不小心编写了 returns Prometheus 中所有时间序列的即时向量,选择器必须至少包含一个与空字符串不匹配的匹配器。你的选择器没有这样的匹配器(job!="kubernetes-nodes"
匹配一个空的 job
标签),所以这会给你一个错误。
您可以添加一个选择器,例如 __name__=~".+"
,但在更高级别,这是对联合的滥用,因为它并不意味着拉取整个 Prometheus 服务器。参见 https://www.robustperception.io/federation-what-is-it-good-for/
如果您真的需要这样做,您需要一个包含结果的主向量选择器。
否则你会得到错误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
我一直在尝试在我的 Prometheus 设置中实现联合。在执行此操作时,我想排除一些指标以供我的抓取工具 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
标签的指标,并检索其余指标。但是,当我部署我的配置时,没有指标被抓取。
这是 Prometheus 中的错误还是我只是误解了匹配参数的工作原理?
作为一项安全措施,以避免您不小心编写了 returns Prometheus 中所有时间序列的即时向量,选择器必须至少包含一个与空字符串不匹配的匹配器。你的选择器没有这样的匹配器(job!="kubernetes-nodes"
匹配一个空的 job
标签),所以这会给你一个错误。
您可以添加一个选择器,例如 __name__=~".+"
,但在更高级别,这是对联合的滥用,因为它并不意味着拉取整个 Prometheus 服务器。参见 https://www.robustperception.io/federation-what-is-it-good-for/
如果您真的需要这样做,您需要一个包含结果的主向量选择器。
否则你会得到错误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