prometheus动态指标路径

问题描述 投票:0回答:1

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甚至可以实现吗?还是我必须编写自己的代码来抓取所有这些指标并将它们导出到单个目标。我也找不到所有受支持的自动发现机制的列表,我在文档中错过了什么吗?

kubernetes prometheus service-discovery
1个回答
0
投票

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

原则是在目标中以host:port/path/of/metrics格式提供指标路径(注意:删除http://,它位于schemescrape_config参数中]

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

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

- 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

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

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

服务发现的正式列表在the configuration documentation中:在索引中查找*_sd_config

© www.soinside.com 2019 - 2024. All rights reserved.