如何解决Prometheus配置错误:文件服务发现配置必须至少包含一个路径名

如何解决Prometheus配置错误:文件服务发现配置必须至少包含一个路径名,prometheus,Prometheus,我一直在努力解决这个问题。我正试图在prometheus.yml文件中配置一个file\u sd\u 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

我一直在努力解决这个问题。我正试图在prometheus.yml文件中配置一个file\u sd\u 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格式)


我敢肯定这是件愚蠢的事情。

错误消息中对错误进行了详细描述:

文件服务发现配置必须至少包含一个路径名

因此,这意味着您的json文件应该至少有一个目标

  [
    {
      "targets": 
      "example.com"
      ],
    }
  ]

好的,多亏了奥利弗的问题,我们确定我运行的是一个旧版本的普罗米修斯(用apt-get-install-Prometheus安装)。安装一个现代版本是一件痛苦的事,但一旦我重新配置它,它就解决了问题


因此,如果有人在使用相同的错误时遇到问题,请检查日志,查看您的普罗米修斯二进制文件有多旧。截至2019年2月,如果您在Docker Ubuntu实例上使用apt get进行安装,您将获得一个非常非常旧的普罗米修斯副本。

[{“targets”:[“somegarbage.com”]}--相同的错误消息相同的错误,如果我还添加了“labels”部分:[{“targets”:[“somegarbage.com”],“标签”:{“作业”:“myprogramname”}]这不是问题所在。这是版本控制问题。请参阅上面与Oliver的对话。当您将浏览器导航到-时,它会显示agents.json的全名,包括路径。这是您所期望的以及文件所在的位置吗?普罗米修斯不会熬夜。我现在正在查看代码。不幸的是,我不是go程序员。有事实上,只有一次引用了该消息。这是在文件\u sd\u配置代码的解组过程中,错误发生了:如果len(c.files)==0。我认为这只是一个愚蠢的YAML问题。空格。破折号。冒号。引号。大括号。诸如此类。要使其复杂化,文档建议说“files:”,而我找到的所有示例都是“-files:“。但是如果我不包括破折号,我会得到一个YAML解析错误。你的YAML是100%正确的,我试过了,它对我有效。你在运行什么版本的普罗米修斯?