如何将 exec 命令的输出重定向到 monit 日志?

如何将 exec 命令的输出重定向到 monit 日志?

是否可以将 exec 命令的输出重定向到 monit 日志?

check host example.org with address example.org
   if failed port 80 protocol http for 2 cycles then
      exec "/root/cloudflare.py >> /var/log/monit.log"

这似乎不起作用:

[EST Mar  6 16:02:19] error    : 'example.org' failed, cannot open a connection to INET[example.org:80] via TCP
[EST Mar  6 16:02:24] info     : 'example.org' exec: /root/cloudflare.py
[EST Mar  6 16:02:24] error    : 'nginx' process is not running
[EST Mar  6 16:02:24] info     : 'nginx' trying to restart
[EST Mar  6 16:02:24] info     : 'nginx' start: /etc/init.d/nginx
[EST Mar  6 16:02:24] error    : monit: Error reading pid from file '/var/run/nginx.pid'

如您所见,它记录了它调用了脚本,并且脚本确实执行了预期的操作,但定向输出未捕获到日志中。当然,如果我从命令行运行,它会捕获到。

两个进程尝试附加到同一个日志是否存在问题?或者这对于 monit exec 来说是否太多了?

答案1

如果 monit 使用标准 syslog 工具,则查看记录器。您可以通过它来传输命令的输出,每行都会作为新消息出现在相关的日志文件中,例如

echo "Hello Sweetie" | logger

将日志消息放入我手头的 CentOS 系统上的 /var/log/messages 中。我不使用 monit,但弄清楚如何将消息定向到相关日志应该相当简单。

相关内容