Настройка syslogd
Демон syslogd (файл конфигурации /etc/syslog.conf) протоколирует события, информацию о которых ему поставляют другие процессы, вызывая функцию syslogd (). В файле /etc/syslog.conf определяется, какие события нужно протоколировать и как.
Синтаксис записи в /etc/syslog.conf таков:
источник.уровень действие
Источник - это условное название процесса или группы процессов, которые могут генерировать сообщения о событиях. Уровень - это степень серьезности сообщения (ошибка, фатальный сбой, предупреждение, информационное сообщение и т.п.). Источник в оригинальной документации называется facility , в переводной литературе используют понятие "средство". Однако мы будем использовать термин "источник ", так как речь идет именно об источнике сообщений. Два этих поля (источник.уровень и действие) отделяются друг от друга табуляцией.
Общими для большинства систем UNIX являются источники , перечисленные в табл. 16.1. Полный перечень источников и уровней для вашей системы приведен в man syslog.conf.
user | сообщения от пользовательских процессов |
kern | ядро |
почтовые программы | |
daemon | демоны, например, in.ftpd |
auth | login, su, getty и другие, связанные с аутентификацией |
lpr | подсистема печати, в т.ч. lpr, lpc |
news | зарезервировано для программ телеконференций типа inn |
cron | cron, crontab, at (в настоящее время в Solaris не используется) |
local0-local7 | зарезервировано для других программ |
mark | специальный источник для добавления меток времени в файл протокола демоном syslogd |
Если в поле источника стоит знак "звездочка"(*), например *.info, это означает все события всех источников уровня info, за исключением событий источника mark.
Уровень сообщения соответствует степени его серьезности, в таблице 16.2 уровни расположены в порядке убывания серьезности:
emerg | Состояние совершенного ужаса, надо сообщить всем пользователям, что дело - табак |
alert | Нехорошее состояние; надо срочно исправлять положение, иначе быть беде, например, испортился важный системный файл |
crit | Сообщение о критической ошибке, например сбоит жесткий диск |
err | Прочие ошибочные состояния |
warning | Предупреждение (например, место на диске заканчивается, но дело еще не пахнет керосином) |
notice | Предупреждение о какой-то проблеме, это не рассматривается как ошибка |
info | Информационное сообщение - так, чтобы мы были в курсе дел |
debug | Сообщение при отладке программы (или её файла конфигурации) |
none | Требование не выполнять действий в отношении сообщений от указанного источника ; например, *.debug;mail.none означает, "выполнить действие в отношении всех сообщений уровня debug, кроме сообщений от источника mail:" |
Если в поле уровня стоит знак "звездочка" (*), например, mail. *, это означает события всех уровней данного источника . Такое указание не имеет смысла, поскольку при указании некоего уровня разрешается передача всех сообщений этого уровня и более серьезных, т.е. уровень info фактически означает "info и все остальные".
С сообщением могут быть выполнены следующие действия:
Обычно информация записывается в файл. Принято файлы протоколов держать в /var/log или /var/adm. Имя файла, записанное в поле "действие", приводит к записи информации в этот файл.
Для активации изменений, внесенных в файл конфигурации /etc/syslog.conf, требуется послать сигнал HUP демону syslogd. За размером файлов протокола надо следить, иначе они займут все свободное место на разделе. Уровень протоколирования следует выбирать из соображений разумной достаточности. Незачем протоколировать все события с уровнем info или notice: если сервер уже настроен, вполне достаточно протоколировать события большинства источников с уровнем error.
Указанный в строке /etc/syslog.conf уровень - это минимальный уровень, который должно иметь событие, чтобы быть занесенным в протокол. Стало быть, если вы указали уровень событий info, то все более серьезные уровни (warning, error и т.д.) тоже будут отвечать этой же строке syslog.conf и события будут записаны туда же, куда и сообщения о событиях уровня info.
Пример минимального файла syslog.conf:
# Log all kernel messages to the console. # Logging much else clutters up the screen. #kern.* /dev/console # Log anything (except mail) of level info or higher. # Don't log private authentication messages! *.info;mail.none;authpriv.none /var/log/messages # The authpriv file has restricted access. auth.* /var/log/secure # Log all the mail messages in one place.mail.* /var/log/maillog # Everybody gets emergency messages, plus log them on another # machine. *.emerg * # Save mail and news errors of level err and higher in a # special file. mail,news.crit /var/log/spooler #All Other #*.* /var/log/all