Prometheus:如何根据Consul标记删除目标

时间:2016-11-02 09:54:08

标签: consul prometheus

我的普罗米修斯服务器从Consul获取目标列表(或者#34;服务",在Consul的语言中)。我只想监视这些目标的子集。这应该可以通过Prometheus的正则表达式机制实现,但正确的配置使我无法理解。这是怎么做到的?

2 个答案:

答案 0 :(得分:2)

我在网上搜索过,并没有一个例子显示它是如何完成的,所以对于后代 - 以下配置将删除所有标记为'ignore-at-prometheus'标记的领事服务

# ignore consul services with 'ignore_at_prometheus' tag
# https://www.robustperception.io/little-things-matter/
relabel_configs
- source_labels: ['__meta_consul_tags']
  regex: '(.*),ignore-at-prometheus,(.*)'
  action: drop

答案 1 :(得分:0)

我使用以下配置使用了一个非常类似的问题解决方案。它允许仅使用特定标记来抓取服务,而不是使用给定标记排除服务。

这是我配置的scrape_configs部分:

scrape_configs:
  - job_name: 'consul_registered_services'
    scrape_interval: 5s
    metrics_path: '/prometheus'
    consul_sd_configs:
    - server: 'my-consul-server:8500'
      token: 'xyz'
    relabel_configs:
    - source_labels: ['__meta_consul_tags']
      regex: '^.*,metrics_method=prometheus-servlet,.*$'
      action: keep
    - source_labels: ['__meta_consul_node']
      target_label: instance
    - source_labels: ['__meta_consul_service']
      target_label: service
    - source_labels: ['__meta_consul_tags']
      target_label: tags

然后我确保使用metrics_method=prometheus-servlet标记注册所有相关服务,其余的将被忽略。

重新标签配置的文档可在此处找到:https://prometheus.io/docs/operating/configuration/#relabel_config

Consul服务发现配置的文档可在此处获取:https://prometheus.io/docs/operating/configuration/#consul_sd_config