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
而不是主机(我想抓取每个 kubernetes 节点的指标)<kube-api-server>/api/v1/nodes/<node-name>/proxy/metrics/cadvisor
)但我只能设置metrics_path
在工作层面而不是在目标层面。这是否可以通过普罗米修斯实现,或者我是否必须编写自己的代码来抓取所有这些指标并将它们导出到单个目标。另外,我找不到所有支持的自动发现机制的列表,我是否错过了文档中的某些内容?
您可以使用重新标签配置 https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config在 Prometheus 配置中进行更改__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 上,使用服务发现页面检查您的配置是否已正确修改。
服务发现的官方列表位于配置文档 https://prometheus.io/docs/prometheus/latest/configuration/configuration/#configuration: 寻找*_sd_config
在索引中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)