FreeBSD syslog: выбираем, что писать

Обновлена 5.11.2009

После долгого юзания ОС возникает такой момент, когда хочется всё контроллировать, в смысле писать события в файл. Для этих целей предназначен демон syslog. И так, всё по порядку.

Дело в том, что полной документации по syslogd вообще нет. Есть только общая, наиболее используемая. Поэтому по чуть-чуть с разных форумов, с гугла насобирал всё в кучу. 🙂

Все изменения будут производится в файле /etc/syslog.conf. После любых изменений нужно перегружать конфигурацию демона syslog:

#/etc/rc.d/syslog reload

1) Выбираем, что нужно писать.

писать по «ключевому слову». Наример, вы хотите писать все события связанные с ppptftpddhcpdили smbd_audit (аудит самбы). Для этого применяем такую конструкцию

!ppp
*.*                                             /var/log/ppp.log
!tftpd
*.*                                             /var/log/tftpd.log
!dhcpd
*.*                                             /var/log/dhcpd.log
!smbd_audit
*.*                                             /var/log/samba/audit/audit.log

категория журналирования local0-local7. Для этого применяем такое

local7.*                                        /var/log/local7.log

если нужно принимать журналирование с удалённого сервера, то применяем такую конструкцию (для того, что бы это заработало, syslogd должен стартовать с параметром «-a«):

#grep syslog /etc/rc.conf

syslogd_enable="YES"
syslogd_flags="-a 10.10.10.0/24 -a 10.11.11.0/24"    # означает принимать логи для любых машин с подсети 10.10.10.0/24, 10.11.11.0/24

а это добавляем уже в /etc/syslog.conf

+10.10.10.10
local7.*                                        /var/log/10.10.10.10.log
+*

сочетание +* означает конец привязки к хосту, с которого забираем логи.

логгированние только на локальную машину+@

Это сочетание ставится в начале зоны логгирования и означает, что всё, что логгироваться на локальную машину будет только то, что расположенно ниже.

логгированние на удалённую машину.

*.info                 @domain.com.ua

альтернативное логгирование (если вы не хотите использовать syslog для логгирование, а будете использовать другую программу)

mail.* | /usr/local/bin/mailstat.pl

— отправка сообщения в логи из консоли

#logger -sp [средство].[уровень] [-t имя_процесса] "текст"

Пример 1:
mycomp# logger 111111
после этой команды в файле /var/log/messages появится запись:
Feb  8 14:57:15 mycomp root: 111111

Пример 2:
mycomp# logger -p cron.debug this is test message 222222
после этой команды в файлах /var/log/cron и /var/log/debug.log появится запись:
Feb  8 15:07:02 msinhome root: this is test message 222222

Пример 3:
mycomp# logger -ps debug this is test message 333333
после этой команды в файлах /var/log/debug.log появится запись:
Feb  8 15:15:52 msinhome root: this is test message 333333, а также сообщение выведется на
консоль:
root: this is test message 3333333

2) Исключаем из логгирования.

исключение по категориям (auth, authpriv,console,cron,daemon,ftp,kern,lpr,mail,mark,news,ntp,security,syslog,user,uucp,local0-local7).
Если ваши логи попадают под одну из этих категорий, добавляем уровень none

*.*;authpriv.none /var/log/all.log

либо так

*.*;authpriv.!=* /var/log/all.log

приведёт к тому, что записи из категории authpriv в общий лог писатся не будут.

исключение по ключевому слову.
Для исключения применяем такую констукцию.

!ppp
*.* /var/log/ppp.log

!-ppp ### ОБРАТИТЕ ВНИМАНИЕ

...

!-ppp ### ОБРАТИТЕ ВНИМАНИЕ

где место под точки выделены те участки, куда пишется лог, если не «вырезать» его.
Мы как бы заключаем в своеобразные кавычки то, что не нужно включать. В данном примере всё упоминание про ppp логгируется в ppp.log и больше никуда не пишется.
Если нужно «вырезать» несколько ключей, тогда используем такую конструкцию

!dhcpd
*.* /var/log/dhcpd.log
!tftpd
*.* /var/log/tftpd.log
!smbd_audit
*.* /var/log/samba/audit/audit.log
!-dhcpd,tftpd,smbd_audit

… всё остальное, кудо не должно оно сыпаться.

Заключения

В качестве заключения приведу полный конфиг, в котором присутствует логгирования с удалённых машин, логирование по ключевому слову, альтернативное логирование и локальное логирование самого сервака. И каждый тип логов пишется только в отдельный файл.

#server1
+10.0.10.1
*.*                                       /var/log/remote/server1/all.log
+*

#server2
+10.0.10.2
*.*                                       /var/log/remote/server2/all.log
+*

# Выборка логов только локальной машины, +@ - только логи с текущей машины.
#Дальше будут идти только логи с локальной машины.

+@

!dhcpd
*.* /var/log/dhcpd.log

!-dhcpd
*.err;kern.warning;auth.notice;mail.crit                /dev/console
*.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err   /var/log/messages
security.*;auth.*;authpriv.*                    /var/log/security
auth.info;authpriv.info                         /var/log/auth.log
auth.info;authpriv.info                         | exec /usr/local/sbin/bruteblock -f /usr/local/etc/bruteblock/ssh.conf
mail.info                                       /var/log/maillog
lpr.info                                        /var/log/lpd-errs

Приведу краткую памятку:

# Правила применяются ко всем сообщениям с my.host
+my.host

# Правила применяются к сообщениям от logger
# (фильтр хоста продолжает действовать)
!logger

# Правила применяются от su к my.host
!+su

# Правила применяются к сообщениям от su с любых хостов
# (фильтр хоста отменён, фильтр программы продолжает действовать)
+*

# Правила применяются ко всем сообщениям (фильтр программы так же отменён)
!*

FreeBSD syslog: выбираем, что писать: 2 комментария

  1. Виталий

    Привет. Почитал статью сейчас — все хорошо расписано, но есть вопросик один: У меня не получается записать лог самбы в отдельный лог. Требуется логирование удаления, изменения и перемещения файлов в шаре в отдельный файл, который содержит информацию о IP компа, пути к папке или файлу, и действия совершенные с ними. Может есть у тебя ссылка на статью по подробной настройке или сам знаешь? Хотелось бы самому разобраться что и как там — но что-то не получается у меня нифига. На Убунту получилось.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *