Назад | Перейти на главную страницу

Как перенаправить вывод команды exec в журнал мониторинга?

Можно ли перенаправить вывод команды exec в журнал мониторинга?

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?

Если monit использует стандартные возможности системного журнала, взгляните на регистратор. Вы можете передать вывод своей команды через него, и каждая строка будет отображаться как новое сообщение в соответствующем файле журнала, например

echo "Hello Sweetie" | logger

помещает сообщение журнала в / var / log / messages в системе CentOS, которую я должен передать. Я не использую monit, но должно быть довольно просто выяснить, как направлять ваши сообщения в соответствующий журнал.