Ноя 10 2009

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

Правильная настройка логов(системных журналов событий) один из важных моментов в системном администрировании. В логах находится все, что нужно сисадмину для поиска проблем в системе. В базовой системе 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.

  • By gx, 17.11.2009 @ 16:14

    >> И соответсвенно syslogd умеет принимать сообщения от удаленной системы
    а куда будут записываться сообщения syslogd на 192.168.1.1, которые мы посылаем к ней?

  • By hilik, 17.11.2009 @ 21:16

    В соответствии с настройками syslogd.conf Там фильтрации по хосту нет. Поэтому все сообщения от, допустим mail.*, будут валиться в общий /var/log/maillog
    То есть syslogd все равно пришло сообщение от удаленного хоста или от локального, все он будет писать в одну кучу.

  • By ddk, 26.01.2010 @ 10:48

    +172.16.1.30
    *.* /var/log/syslog_ip/172.16.1.30.log
    +*
    +@

    и будет сыпать в отдельный файл

Other Links to this Post


Украинская Баннерная Сеть