Главная | Контакты | Настройки СМЕНИТЬ ПАЛИТРУ:

Главная > Программы

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

Обновлена 5.11.2009

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

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

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

# /etc/rc.d/syslog reload

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

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

  • !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:
    logger 111111
    после этой команды в файле /var/log/messages появится запись:
    Feb  8 14:57:15 mycomp root: 111111
    Пример 2:
    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:
    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

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

  • исключение по категориям (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 с любых хостов
# (фильтр хоста отменён, фильтр программы продолжает действовать)
+*

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

Материал взят с сайта: https://skeletor.org.ua/?p=71

Главная > Программы