普罗米修斯动态metrics_path

时间:2020-01-22 18:43:42

标签: kubernetes prometheus service-discovery

Prometheus允许我从像这样的.json文件中使用file_sd_config动态加载目标

#prometheus.yaml
- job_name: 'kube-metrics'
  file_sd_configs:
  - files:
    - 'targets.json'
[
  {
    "labels": {
      "job": "kube-metrics"
    },
    "targets": [
      "http://node1:8080",
      "http://node2:8080"
    ]
  }
]

但是我的目标在metrics_path而不是主机上有所不同(我想为<kube-api-server>/api/v1/nodes/<node-name>/proxy/metrics/cadvisor上的每个kubernetes节点抓取度量标准),但是我只能在作业级别设置metrics_path而不是每个目标。这是使用Prometheus甚至可以实现的,还是我必须编写自己的代码来抓取所有这些指标并将它们导出到单个目标。我也找不到所有受支持的自动发现机制的列表,我在文档中错过了什么吗?

1 个答案:

答案 0 :(得分:4)

您可以在Prometheus配置中使用relabel_config来更改__metrics_path__标签配置。

主要原则是以host:port/path/of/metrics的形式在目标中提供指标路径(注意:删除http://,它位于scheme的{​​{1}}参数中)< / p>

scrape_config

然后将相关的元标签替换为零件

[
  {
    "targets": [
      "node1:8080/first-metrics",
      "node2:8080/second-metrics"
    ]
  }
]

您可以在配置时已知的任何标签上重复使用此方法,以修改抓取的配置。

在Prometheus上,使用服务发现页面来检查您的配置是否已正确修改。

服务发现的官方列表在the configuration documentation中:在索引中查找- job_name: 'kube-metrics' file_sd_configs: - files: - 'targets.json' relabel_configs: - source_labels: [__address__] regex: '[^/]+(/.*)' # capture '/...' part target_label: __metrics_path__ # change metrics path - source_labels: [__address__] regex: '([^/]+)/.*' # capture host:port target_label: __address__ # change target