我很难过这个问题。 nagios日志不再报告任何错误,但我的文件没有写入任何内容。
def log_something(host_name host_address, attempt_number):
with open('file', 'a+') as log:
log.write('called function at %s with args %s' %s (str(datetime.datetime.now()), locals()))
def main():
parser = argparse.ArgumentParser()
parser.add_argument('host_name')
parser.add_argument('host_address')
parser.add_argument('attempt_number')
args = parser.parse_args()
log_something(args.host_name, args.host_address, args.attempt_number)
if __name__ == "__main__":
main()
在我的commands.cfg
中define command {
command_name my_command
command_line $USER1$/my_command.py $HOSTNAME$ $HOSTADDRESS$ $HOSTATTEMPT$
}
在我的主机配置
中define host {
...
event_handler my_command
}
在nagios日志中(journalctl -xe)
OST ALERT: test-router;UP;HARD;5;PING OK - Packet loss = 0%, RTA = 0.96 ms
Jan 31 15:38:47 nagios-server.nagios[9212]: HOST EVENT HANDLER: test-router;UP;HARD;5;my_command
没有任何内容写入文件,也没有报告错误。当我的语法出错时,nagios日志会打印报告给stderr的错误,其中一个是文件权限问题。我通过在同一文件夹和chmod 777中创建文件来解决这个问题。除非这是一个问题,它应该被记录下来。
任何人都知道这里发生了什么?
答案 0 :(得分:0)
我想出了什么。看起来好像你定义了nagios事件处理程序的输出在nagios.cfg
文件中的位置。
# TEMP PATH
# This is path where Nagios can create temp files for service and
# host check results, etc.
temp_path=/tmp
我认为这意味着插件检查的输出会被发送到临时文件夹。但是,更改该路径似乎没有任何效果,我在python脚本中输出的结果仍然在{tmp文件夹中写为file
。这是CentOS7。
答案 1 :(得分:-1)
检查你的功能,似乎你错过了","在函数参数中。
def log_something( host_name host_address ,attempt_number): 打开('文件',' a +')作为日志: