Ключевые слова:log, syslog, slackware, linux, (найти похожие документы)
From: Alexey Osiyuk aka Zmodem <zmodem@zmodem.tomsk.ru.>
Newsgroups: email
Date: Mon, 20 Feb 2006 14:31:37 +0000 (UTC)
Subject: Замена стандартного syslogd на syslog-ng в slackware linux.Преамбула
syslog-ng (syslog next generation) - это многофункциональный демон протоколирования
системных сообщений. По сравнению со стандартным демоном syslogd он имеет ряд отличий:
усовершенствованная схема конфигурации
фильтрация сообщений не только по приоритетам, но и по их содержанию
поддержка regexps (regular expressions)
более гибкое манипулирование и организация логов
возможность шифрования канала передачи данных с помощью IPSec/Stunnel
Нам понадобится
немного времени и чуть-чуть терпения :)
Подготовка
Скачиваем:
syslog-ng-1.6.9.tar.gz
Устанавливаем:
bison, flex, byacc, checkinstall. Эти пакеты уже есть в дистрибутиве
slackware, поэтому я просто установил их через swaret.
Сборка syslog-ng
Копируем syslog-ng-1.6.9.tar.gz, например, в /usr/src/syslog-ng, распаковываем и
собираем:
$ tar zxvf syslog-ng-1.6.9.tar.gz
$ cd syslog-ng-1.6.9/libol-0.3.17
$ ./configure
$ make
make install на этой стадии делать не обязательно, вместо этого мы просто
укажем путь к дереву libol для syslog-ng.
По желанию, через --prefix можно указать каталог, относительно которого будет
установлен syslog-ng.
$ cd ..
$ ./configure --with-libol=/usr/src/syslog-ng/syslog-ng-1.6.9/libol-0.3.17 --prefix=/
$ make
$ checkinstall
Настройка
Создаем директорию /etc/syslog-ng (в моем случае после установки она почему-то отсутствовала:) )
Конфигурационный файл syslog-ng.conf оперирует 4-мя основными директивами:
source - локальный/удаленный источник сообщений.
filter - фильтр сообщений по приоритетам, по имени программы,
по имени хоста или же с помощью regexp.
destination - указатель на приемник сообщений. Это может быть файл,
консоль, внешняя программа или TCP/UDP соединение.
log - служит для объединения 3-х предыдущих директив и
определяет, каким образом будет обработано сообщение.
Для более подробного описания всех доступных директив обратитесь к справочному
руководству по syslog-ng.
Ниже приводится пример конфигурационного файла для замены стандартного syslog.conf
в свежеустановленной системе slackware 10.2 (в вашем случае, набор параметров может
отличаться:) )
options { long_hostnames(off); sync(0); };
source src { unix-stream("/dev/log"); internal(); };
destination authlog { file("/var/log/secure"); };
destination syslog { file("/var/log/syslog"); };
destination warn { file("/var/log/syslog"); };
destination cron { file("/var/log/cron"); };
# Uncomment this to see kernel messages on the console.
#destination kern { file("/dev/console"); };
destination uucp { file("/var/log/spooler"); };
destination newscrit { file("/var/log/spooler"); };
destination mail { file("/var/log/maillog"); };
destination mailinfo { file("/var/log/maillog"); };
destination mailwarn { file("/var/log/maillog"); };
destination mailerr { file("/var/log/maillog"); };
destination debug { file("/var/log/debug"); };
destination messages { file("/var/log/messages"); };
filter f_auth { facility(auth); };
filter f_authpriv { facility(auth); };
filter f_syslog { not facility(mail); };
filter f_cron { facility(cron); };
# Uncomment this to see kernel messages on the console.
#filter f_kern { facility(kern); };
filter f_mail { facility(mail); };
filter f_uucp { facility(uucp); };
filter f_news { facility(uucp); };
filter f_debug { not facility(auth, authpriv, news, mail); };
filter f_messages { level(info)
and not facility(auth, authpriv, mail, news); };
filter f_info { level(info); };
filter f_notice { level(notice); };
filter f_warn { level(warn); };
filter f_crit { level(crit); };
filter f_err { level(err); };
log { source(src); filter(f_authpriv); destination(authlog); };
log { source(src); filter(f_syslog); destination(syslog); };
log { source(src); filter(f_warn); destination(syslog); };
log { source(src); filter(f_crit); destination(syslog); };
log { source(src); filter(f_err); destination(syslog); };
log { source(src); filter(f_cron); destination(cron); };
# Uncomment this to see kernel messages on the console.
#log { source(src); filter(f_kern); destination(kern); };
log { source(src); filter(f_mail); destination(mail); };
log { source(src); filter(f_uucp); destination(uucp); };
log { source(src); filter(f_mail); filter(f_info); destination(mailinfo); };
log { source(src); filter(f_mail); filter(f_warn); destination(mailwarn); };
log { source(src); filter(f_mail); filter(f_err); destination(mailerr); };
log { source(src); filter(f_news); filter(f_crit); destination(newscrit); };
log { source(src); filter(f_debug); destination(debug); };
log { source(src); filter(f_messages); destination(messages); };
Для запуска syslog-ng при старте ОС нам понадобится следующий скрипт, за основу взят "родной" rc.syslog:
#!/bin/sh
# Start/stop/restart the syslog-ng daemon.
#
syslog_ng_start() {
if [ -x /sbin/syslog-ng ]; then
echo -n "Starting syslog-ng daemon: "
echo "/sbin/syslog-ng "
/sbin/syslog-ng
fi
}
syslog_ng_stop() {
killall syslog-ng 2> /dev/null
}
syslog_ng_restart() {
syslog_ng_stop
sleep 1
syslog_ng_start
}
case "$1" in
'start')
syslog_ng_start
;;
'stop')
syslog_ng_stop
;;
'restart')
syslog_ng_restart
;;
*)
echo "usage $0 start|stop|restart"
esac
Сохраняем его в /etc/rc.d под именем rc.syslog-ng, устанавливаем права на запуск.
Добавляем в /etc/rc.d/rc.M:
# Start the next generation system logger.
if [ -x /etc/rc.d/rc.syslog-ng ]; then
. /etc/rc.d/rc.syslog-ng start
fi
Снимаем права на запуск у файла /etc/rc.d/rc.syslog и перезагружаемся.
Если все было сделано правильно, при запуске системы видим Starting syslog-ng daemon
и радуемся полчаса :)
Заключение
Все вышеизложенное производилось в системе Slackware Linux 10.2, kernel 2.6.15.
Пожелания/критика/ругательства - принимаются :)
//Zmodem