Я ищу лучший способ регистрировать cronjobs. Большинство cronjobs, как правило, рассылают спам по электронной почте или консоли, игнорируются или создают еще один файл журнала.
В этом случае у меня есть сценарий Nagios NSCA, который отправляет данные на центральный сервер Nagios. Этот сценарий send_nsca также выводит одну строку состояния в STDOUT, указывая успех или неудачу.
0 * * * * root /usr/local/nagios/sbin/nsca_check_disk
Это отправляет на адрес root @ localhost следующее сообщение, которое затем пересылается моей команде системных администраторов. Спам.
forwarded nsca_check_disk: 1 пакет (-ы) данных успешно отправлен на хост.
Я ищу метод ведения журнала, который:
В процессе написания этого вопроса я ответил сам. Так что я отвечу сам "Опасный стиль". Это расширяет ответ, предоставленный Деннисом Уильямсоном.
Следующее отправит любой вывод Cron в /usr/bin/logger
(включая stderr, который преобразуется в stdout с использованием 2>&1
), который будет отправлен в системный журнал с тегом 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, потому что он хорошо работает с существующей конфигурацией и инфраструктурой syslog и включен в большинство дистрибутивов Unix. Большинство дистрибутивов * nix уже выполняют ротацию журналов и делают это хорошо.
Подключите выход через регистратор.
0 * * * * root /usr/local/nagios/sbin/nsca_check_disk | logger -p local0.notice
Редактировать: Ваше обновление выглядит правильным.
Вы также можете запустить crond
с опцией -s
(или -S
в Busybox), чтобы вывод отправлялся на syslog
.