Check_MK 不读取本地 python 检查远程主机

Check_MK doesn't read local python check on remote host

我正在尝试编写一个本地 python 检查,它向 WSDL 服务发送 XML 请求并获得 XML 的响应。该脚本在服务器(Ubuntu 18.04.2 LTS 服务器)上运行良好,并打印出我想要的结果。但是 check_mk(安装在另一台服务器上)没有完全读取此输出。

我想要 运行 脚本 运行s Python 2.7.15rc1 Ubuntu 18.04.2 LTS 但 check_mk 服务器的服务器运行s Python CentOS Linux 7(核心)上的 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

您是要编写本地检查还是 check_mk 插件?这是两个完全不同的东西。您将此文件存储在哪里?

我的 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)

我的 python 脚本中使用的 dateutil 库无法被 check_mk 导入。该库是使用 pip 管理器安装的,在 运行 期间无法导入。

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

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