syslogd. Настраиваем логи во FreeBSD

Правильная настройка логов(системных журналов событий) один из важных моментов в системном администрировании. В логах находится все, что нужно сисадмину для поиска проблем в системе. В базовой системе FreeBSD есть syslogd, он занимается записью в логи сообщений от разных сервисов системы. За настройку логирования отвечает конфигурационный файл syslogd.conf.

В файле настроек определяется в какой файл будут писаться сообщения. Сообщения фильтруются по priority(приоритету), по facility(это по сути от кого поступают сообщения, к примеру от ядра они помечаются как LOG_KERN), а так же по имени программы отправляющей сообщение.

Исходя из этих особенностей мы можем фильтровать сообщения, т.е. писать сообщения каждого типа в свой файл.

Например запись сообщений от ядра(фасилити LOG_KERN) с приоритетом критической ошибки(LOG_CRIT) в файл /var/log/kern.crit должна в syslogd.conf настроена так:

kern.crit /var/log/kern.crit

если есть необходимость любые сообщения с приоритетом LOG_ERR писать в файл, настраивается это так:

*.err /var/log/msg.err

То же самое относится к фасилити. Например, что бы все сообщения, с любыми приоритетами от почтовой системы писались в файл /var/log/maillog, нужно внести такие настройки:

mail.* /var/log/maillog

Следующая немаловажная возможность, это возможность писать в файл события попадающие под один из перечисленных фильтров. К примеру, если мы хотим писать в файл /var/log/error, события с приоритетом LOG_CRIT и LOG_ERR, то в syslogd.conf это запишется так:

*.crit;*.err /var/log/error

И в заврешении разговора о фильтрах, пример как логировать все события в один файл.

Настраивается это так:

*.* /var/log/all.log

Этот пример есть в файле syslog.conf

А теперь о другой, важной особенности syslogd. Все подсистемы работающие с syslogd отправляют сообщения только на локальную машину. Но, сам syslogd может перенаправлять эти сообщения на удаленную машину. И соответсвенно syslogd умеет принимать сообщения от удаленной системы. Только это все надо настроить.

К примеру перенаправим все сообщения почты на наш сервер логирования с адресом 192.168.1.1, в syslog.conf настройки будут такие:

mail.* @192.168.1.1

Вместо файла в который нужно писать, мы вписали адрес лог сервера с @ вначале.

Но удаленный сервер не булет принимать сообщения от кого попало. Для начала нужно настроить syslogd на хосте 192.168.1.1, что бы он принимал сообытия от нашей локальной сети. Для этого в rc.conf нужно задать соответствующие флаги для syslogd.

syslogd_flags="-a 192.168.1.0/24:*"

Важно так же убрать флаг -s на принимающей стороне, иначе опция -a будет игнорироваться. На отсылающей сообщения стороне, если будет указан флаг -ss, то сообщения отправляться не будут. Если вы хотите казать несколько сетей от которых нужно принимать сообщения или же просто несколько хостов, то нужно добавлять флаг -a для каждой сети или хоста.

И последнее. Удаленное логирование хорошо помогает обслуживать сеть и серверы, но из-за того, что в syslogd отсутствует фильтрация по адресу хоста, при большом количестве серверов, в логах будет довольно таки тяжело что либо найти. Поэтому нужно либо как то планировать логирование, либо использовать другие логгеры, например rsyslogd.

http://www.hilik.org.ua/syslogd-настраиваем-логи/

Обновлено: 12.03.2015