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甚至可以实现吗?还是我必须编写自己的代码来抓取所有这些指标并将它们导出到单个目标。我也找不到所有受支持的自动发现机制的列表,我在文档中错过了什么吗?
您可以在Prometheus配置中使用relabel_config来更改__metrics_path__
标签配置。
原则是在目标中以host:port/path/of/metrics
格式提供指标路径(注意:删除http://
,它位于scheme
的scrape_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
。