Check_MK无法读取远程主机上的本地python检查

时间:2019-05-29 10:02:19

标签: python check-mk

我正在尝试编写本地python检查,该检查将XML请求发送到WSDL服务,并以XML形式获取响应。该脚本在服务器(Ubuntu 18.04.2 LTS服务器)上工作正常,并打印我想要的结果。但是check_mk(安装在另一台服务器上)不能完全读取此输出。

我要运行脚本的服务器在Ubuntu 18.04.2 LTS上运行Python 2.7.15rc1,而check_mk服务器在CentOS Linux 7(Core)上运行Python 2.7.5。另外,我注意到相同的脚本在check_mk服务器上的工作方式与我期望的不同。我应该更改try-except块以使脚本在Check_MK服务器上工作。

#!/usr/bin/python

import requests, base64, re

xml_file = 'request.xml'

hdr = {'Content-Type' : 'text/xml',
    'Authorization' : 'Basic somestring')
    }

with open(xml_file) as xml:
  req = requests.post('http://192.168.39.17:8080/GatewayWebservicesBean?wsdl', data=xml, headers=hdr)
  scode = req.status_code

try:
  resp = re.search(r'<message>(.*?)</message>', req.content).group(1)
except AttributeError:
  print '2 gw_check c=1;0;1;0 Cannot Access to Gateway! Status Code: %s' %scode       #Check_MK doesn't read this output
else:
  if resp == 'Access':
    print '0 eagw_check c=0;0;1;0 OK - Gateway works well'
  else:
    print '2 eagw_check c=1;0;1;0 Please check internal system! Respond from internal system: %s' %resp

2 个答案:

答案 0 :(得分:0)

您是否要编写本地支票或check_mk插件?那是两个完全不同的东西。您将文件存储在哪里?

答案 1 :(得分:0)

我的python脚本有一个类似的问题,该脚本作为本地检查添加到/usr/lib/check_mk_agent/local/目录中。此本地脚本已在一台服务器上成功执行,但在另一台服务器上失败。在服务器中手动调用check_mk_agent时,成功执行了脚本。但是当由check_mk调用时,输出未发送到服务发现。因此,我将python脚本包装在bash脚本中,并重定向了要输出的错误,如下所示: output=$(python /usr/lib/check_mk_agent/local/yuge.py 2>&1)

结果证明,check_mk无法导入我的python脚本中使用的dateutil库。该库是使用pip Manager安装的,无法在运行时导入。

因此,我不得不使用apt-get而不是pip post安装库,该库成功执行了本地检查脚本并将输出发送到服务发现。检查其他工作服务器,发现dateutil库已使用apt-get安装。

https://github.com/chaoss/grimoirelab-perceval/issues/27