我一直在为此苦苦挣扎。我正在尝试在我的 prometheus.yml 文件中配置一个file_sd_configs部分。这是相关部分:
scrape_configs:
- job_name: ct_agents
file_sd_configs:
- files:
- agent_configs/agents.json
启动时,我收到此错误:
time="2019-02-07T16:15:21Z" level=error msg="Couldn't load configuration (-config.file=/etc/prometheus/prometheus.yml): file service discovery config must contain at least one path name" source="main.go:208"
我根据在其他地方找到的例子尝试了各种东西。我尝试将路径放在单引号中,例如一个例子。我尝试了完整的路径。我最初有一个通配符和一个空目录,希望普罗米修斯能找到可能动态的文件列表。
我已经多次检查间距。文件中没有选项卡(编辑 .yml 文件时最常见的问题(。
文件本身存在,尽管当前只是一个空数组(在 JSON 中(。
我很确定这是愚蠢的事情。
好的,多亏了奥利弗的问题,我们确定我运行的是旧版本的普罗米修斯(与 apt-get install prometheus 一起安装(。安装现代版本很痛苦,但一旦我再次配置它,它就解决了问题。
所以 - 如果有人在遇到同样的错误时遇到问题,请检查日志以查看您的普罗米修斯二进制文件的年龄。截至 2019 年 2 月,如果您在 Docker Ubuntu 实例上使用 apt-get 进行安装,您将获得一个非常非常旧的 Prometheus 副本。
中很好地描述了该错误:
文件服务发现配置必须至少包含一个路径名
因此,这意味着您的 json 文件应该至少有一个目标
[
{
"targets":
"example.com"
],
}
]