Появилась необходимость получать уведомления на почтовый ящик при сбоях в системе. Т.к. ежедневный отчет через periodic dayly в котором можно обнаружить неполадки порой не очень информативен и приходит раз в сутки. Выбор пал на Logcheck, как кандидат был еще опробован Zabbix, но для моих требований он оказался сильно избыточен. Для мониторинга кучи серверов, с гибкой настройкой оповещений, с возможностью создавать свои триггеры, желательно с выделением под сам сервер Zabbix отдельного сервера — очень достойный вариант.
Logcheck — представляет из себя bash-скрипт, с набором конфигурационных файлов. По cron запускается, проверяет указанные в настройке лог-файлы и если в лог-файлах имеются записи с [error, warn] отправляет сообщение на указанный почтовый ящик.
Установка Logcheck
Как всегда обновляем порты
# portsnap fetch update
Далее:
# cd /data/ports/security/logcheck # make install clean
Настройка
Редактируем конфигурационный файл:
# vi /usr/local/etc/logcheck/logcheck.conf
Единственное что я в нем изменил, это строка пользователь получатель.
Сменил logcheck на root (т.к. у меня в aliases указан форвард с почтового ящика root на мой).
SENDMAILTO="root"
По умолчанию Logcheck проверяет два лога:
- /var/log/messages
- /var/log/auth
# vi /usr/local/etc/logcheck/logcheck.logfilesТ.к. Logcheck при инсталляции создает одноименного пользователя и под ним работает, то необходимо для обрабатываемых логов установить возможность пользователю ‘‘logcheck» читать их.
# chmod 644 /var/log/auth.log
Остальные логи у меня имели соответствующие права.
Но выставленное нами разрешение слетит после ротации лога, чтобы этого не произошло, меняем маску 600 на 644 для /var/log/auth.log в newsyslog.conf
# vi /etc/newsyslog.conf /var/log/auth.log 644 7 100 * JC
Рестартуем процессы, заодно передёрнем крон, т.к. logcheck запускается из крона и по умолчанию имеет задание запускаться после рестарта и каждую вторую минута часа, проверить это можно командой
# crontab -e -u logcheck # crontab entries for the logcheck package PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin MAILTO=root @reboot if [ -x /usr/local/sbin/logcheck ]; then nice -n10 /usr/local/sbin/logcheck -R; fi 2 * * * * if [ -x /usr/local/sbin/logcheck ]; then nice -n10 /usr/local/sbin/logcheck; fi
Рестарт newsyslogd и cron:
# /etc/rc.d/cron restart # /etc/rc.d/newsyslog restart
Если все правильно сделали, то на почту Вам придет письмо с указанием найденных проблем Logcheck. Возможно, что придет письмо с описанием ошибки запуска Logcheck(мне пришло такое, с описанием что logcheck не может прочитать лог, как раз для этого мы выше устанавливали права 644 на лог-файл).
Ну вот собственно и все.
P.S. Домашний сайт Logcheck
Больше материалов о FreeBSD
лучше уж
chmod 640 /var/log/auth.log
и пользователя logcheck в группу wheel добавить
Ну можно и так:) Но я пасс, добавлять в wheel пользователей.