Лучшая регистрация для cronjobs? Отправить вывод cron в системный журнал?

43

Я ищу лучший способ войти cronjobs. Большинство cronjobs обычно спамят по электронной почте или на консоли, игнорируются или создают еще один файл журнала.

В этом случае у меня есть сценарий Nagios NSCA, который отправляет данные на центральный сервер Nagios. Этот сценарий send_nsca также печатает одну строку состояния в STDOUT, указывая на успех или неудачу.

0 * * * * root    /usr/local/nagios/sbin/nsca_check_disk

Это отправляет по электронной почте следующее сообщение root @ localhost, которое затем пересылается моей команде системных администраторов. Спам.

forwarded nsca_check_disk: 1 пакет данных успешно отправлен на хост.

Я ищу метод регистрации, который:

  1. Не спамит сообщения на электронную почту или консоль
  2. Не создавайте еще один файл журнала, который требует очистки месяцев или лет спустя.
  3. Захватите информацию журнала где-нибудь, таким образом, это может быть просмотрено позже при желании.
  4. Работает на большинстве юниксов
  5. Вписывается в существующую лог-инфраструктуру.
  6. Использует общие соглашения системного журнала, такие как «средство» и «приоритет»
  7. Может работать со сторонними скриптами, которые не всегда выполняют внутреннюю регистрацию.
Стефан Ласевский
источник

Ответы:

69

В процессе написания этого вопроса я ответил сам. Так что я отвечу самому себе « Стиль опасности ». Это расширяет ответ, предоставленный Деннисом Уильямсоном.

Следующая команда отправит любой вывод Cron /usr/bin/logger(включая stderr, который преобразуется в stdout с использованием 2>&1), который отправит в системный журнал с тегом «of» nsca_check_disk. Системный журнал обрабатывает это оттуда. Поскольку в этих системах (CentOS и FreeBSD) уже есть встроенные механизмы ротации журналов, мне не нужно беспокоиться о журнале, таком как var/log/mycustom.logзаполнение диска.

*/5 * * * * root    /usr/local/nagios/sbin/nsca_check_disk 2>&1 | /usr/bin/logger -t nsca_check_disk

/ var / log / messages теперь есть одно дополнительное сообщение, которое говорит это:

Apr 29, 17:40:00 192.168.6.19 nsca_check_disk: 1 data packet(s) sent to host successfully.

Мне нравится / usr / bin / logger, потому что он хорошо работает с существующей конфигурацией и инфраструктурой системного журнала и включен в большинство дистрибутивов Unix. Большинство дистрибутивов * nix уже делают ротацию логов и делают это хорошо.

Стефан Ласевский
источник
1
Что делает команда 2> & 1? что это означает? Спасибо.
Бретцки
с systemd в Ubuntu 00 00 * * * systemd-cat -t "tagname" /path/to/app.shпослеsudo crontab -u root -e
дашесы
5

Передайте вывод через логгер .

0 * * * * root    /usr/local/nagios/sbin/nsca_check_disk | logger -p local0.notice

Изменить: ваше обновление выглядит как правильный путь.

Приостановлено до дальнейшего уведомления.
источник
Благодарность! После того, как я опубликовал свой вопрос, я увидел, что Apache направляет вывод журнала в / usr / bin / logger. Я не понимал, что мы можем передать вывод в logger (1) - его нет в man-странице!
Стефан Ласевский
2
msgstr "сообщение - напишите сообщение в журнал; если не указано и флаг -f не указан, стандартный ввод регистрируется."
Приостановлено до дальнейшего уведомления.
1

Вы также можете запустить crondс опцией -s(или -Sв Busybox), чтобы выходные данные отправлялись syslog.

Стюарт Кардалл
источник