3

我的 Prometheus 服务器从 Consul 获取目标列表(或“服务”,用 Consul 的术语来说)。我只想监控这些目标的一个子集。这应该可以通过 Prometheus 的正则表达式机制实现,但正确的配置让我望而却步。这是怎么做到的?

4

2 回答 2

9

我已经搜索了网络并且没有一个示例显示它是如何完成的,因此对于后代 - 以下配置将删除所有标有“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
于 2016-11-02T09:56:44.380 回答
3

我使用以下配置对问题使用了非常相似的解决方案。它允许只抓取具有特定标签的服务,而不是排除具有给定标签的服务。

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 。

于 2017-06-12T12:23:55.470 回答