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
+*
+@
и будет сыпать в отдельный файл