Datadog Agent检查找不到指定的路径

时间:2018-08-14 11:47:13

标签: python python-2.7 datadog

我已按照以下页面上的说明编写了Python中的Datadog Agent检查:https://docs.datadoghq.com/developers/agent_checks/

代理检查应该读取指定网络文件夹中的所有文件,然后将某些指标发送到Datadog。

要读取的文件夹在Yaml文件中指定如下:

init_config:
taskResultLocation: "Z:/TaskResults"

这是用于读取文件夹的代码,它是Python 2.7,因为Datadog要求

task_result_location = self.init_config.get('taskResultLocation')
# Loop through all the XML files in the specified folder
for file in os.listdir(task_result_location):

如果仅在IDE中运行Python脚本,则一切正常。 当将检查添加到与IDE处于同一台计算机上的Datadog Agent Manager中并且运行检查时,Datadog Agent Manager日志中会引发错误,提示:

  

2018-08-14 14:33:26 EEST |错误| (runner.go:277在工作)|运行检查TaskTaskErrorErrorReader时出错:[{“ message”:“ [错误3]系统找不到指定的路径:'Z:/ TaskResults / '”,“ traceback”:“ Traceback(最新最后调用):\ n文件\“ C:\ Program Files \ Datadog \ Datadog Agent \ embedded \ lib \ site-packages \ datadog_checks \ checks \ base.py \”,第294行,在运行\ n self.check(复制.deepcopy(self.instances [0]))\ n文件\“ c:\ programdata \ datadog \ checks.d \ TaskResultErrorReader.py \”,第42行,在check \ n中检查os.listdir(task_result_location)中的文件: \ nWindowsError:[错误3]系统找不到指定的路径:'Z:/ TaskResults / '\ n“}]

我尝试用单引号和双引号,正斜杠和反斜杠以及双斜杠以多种方式指定文件夹位置,但是会引发相同的错误。

有人会知道这是Yaml语法错误还是Datadog或Python的某种问题?

2 个答案:

答案 0 :(得分:0)

即使datadog是从同一台计算机运行的,它也在您的计算机上设置了单独的服务器。因此,听起来好像datadog代理无法访问您的z:/驱动程序。

尝试将“ TaskResults”文件夹放在根目录中(从datadog运行时-mycheck.yaml文件所在的位置),并相应地更改路径。

如果这行得通,并且您仍然希望有一个公用驱动器来将文件从计算机共享到datadog的代理,则必须找到一种将驱动器\文件夹安装到代理的方法。他们可能有办法在documentation

中做到这一点

答案 1 :(得分:0)

解决方案是在网络驱动器上创建文件共享,并使用该路径而不是完整的网络驱动器路径。 对于某些人来说可能是显而易见的,但对我而言却没有立即发生,因为正常的Python代码可以在Datadog之外正常工作而没有任何问题。

所以代替:

init_config:
taskResultLocation: "Z:/TaskResults"

使用

init_config:
taskResultLocation: '//FileShareName/d/TaskResults'