是否可以将 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,但弄清楚如何将消息定向到相关日志应该相当简单。