Установка Rsyslog · 8 min read · Oct 17, 2025
Установка полнофункционального Rsyslog 5.7.x на CentOS 5.x
Установка полнофункционального Rsyslog 5.7.x на CentOS 5.x
Этот учебник показывает, как вы можете установить новое поколение серверов syslog, используя Rsyslog. Согласно веб-сайту Rsyslog (www.rsyslog.com), Rsyslog — это улучшенный syslogd, поддерживающий, среди прочего, MySQL, PostgreSQL, резервные журналы, syslog/tcp, тонкий контроль формата вывода, высокую точность временных меток, операции в очереди и возможность фильтрации по любой части сообщения. Он вполне совместим с обычным sysklogd и может использоваться в качестве замены. Его продвинутые функции делают его подходящим для корпоративных классов, защищенных шифрованием, цепочек пересылки syslog, в то время как он также очень прост в настройке для начинающего пользователя.
Цели
Этот учебник показывает, как вы можете скомпилировать и установить полнофункциональный Rsyslog 5.7.9 на сервере CentOS 5.5. Я не даю никаких гарантий, что это сработает для вас!
Предварительная установка
Сначала нам нужно установить следующие пакеты:
yum install -y pcre pcre-devel mysql-server mysql-devel gnutls gnutls-devel gnutls-utils net-snmp net-snmp-devel net-snmp-libs net-snmp-perl net-snmp-utils libnet libnet-devel
Загрузка дополнительного пакета:
librelp (Библиотека протокола надежного ведения событий) — это простая в использовании библиотека для протокола RELP. RELP, в свою очередь, обеспечивает надежное ведение событий по сети. RELP (и, следовательно) librelp гарантирует, что ни одно сообщение не будет потеряно, даже когда соединения разрываются, и одно из устройств становится недоступным. Обратите внимание, что RELP — это универсальный, расширяемый протокол ведения журнала. Хотя он был разработан для решения неотложной необходимости в коммуникации rsyslog-to-rsyslog, RELP поддерживает гораздо больше приложений.
cd /tmp
wget http://sourceforge.net/projects/libestr/files/libestr-0.1.0.tar.gz/download
tar -xvf libestr-0.1.0.tar.gz
cd libestr-0.1.0
./configure –prefix=/usr
make
make install
cd /tmp
wget http://www.libee.org/files/download/libee-0.1.0.tar.gz
tar -xvf libee-0.1.0.tar.gz
cd libee-0.1.0
./configure –prefix=/usr
make
make install
cd /tmp
wget http://honeynet.ir/software/rsyslog/librelp-1.0.0.tar.gz
tar -xvf librelp-1.0.0.tar.gz
cd librelp-1.0.0
./configure –prefix=/usr
make
make install
Загрузка пакета Rsyslog:
На момент написания этого учебника я считаю, что rsyslog 5.7.9 — это лучшая версия Rsyslog, которая поддерживает большинство хороших функций, которые могут вам понадобиться.
cd /tmp
wget http://www.rsyslog.com/files/download/rsyslog/rsyslog-5.7.9.tar.gz
tar -xvf rsyslog-5.7.9.tar.gz
cd rsyslog-5.7.9
Компиляция и установка Rsyslog:
Для получения дополнительной информации о параметрах, доступных в Rsyslog, вы можете запустить ./configure –help
Следующая команда включает большинство функций rsyslog, таких как сжатие, многопоточность, MySql, SNMP, Mail, поддержку RELP и т.д.
./configure –enable-regexp –enable-zlib –enable-pthreads –enable-klog –enable-inet –enable-unlimited-select –enable-debug –enable-rtinst –enable-memcheck –enable-diagtools –enable-mysql –enable-snmp –enable-gnutls –enable-rsyslogrt –enable-rsyslogd –enable-extended-tests –enable-mail –enable-imptcp –enable-omruleset –enable-valgrind –enable-imdiag –enable-relp –enable-testbench –enable-imfile –enable-omstdout –enable-omdbalerting –enable-omuxsock –enable-imtemplate –enable-omtemplate –enable-pmlastmsg –enable-omudpspoof –enable-omprog –enable-impstats
make
make install
Подготовка базы данных MySQL:
Установка mySQL обязательна, если вы хотите сохранить записи syslog в базе данных, в противном случае пропустите эту часть
mysql -u root -p < plugins/ommysql/createDB.sql
mysql -u root -p mysql
GRANT ALL ON Syslog.* TO rsyslog@localhost IDENTIFIED BY ‘your-mysql-password’;
flush privileges;
Настройка скрипта инициализации
vi /etc/init.d/rsyslog
#!/bin/bash
#
# rsyslog Запускает rsyslogd/rklogd.
#
#
# chkconfig: - 12 88
# description: Syslog — это служба, с помощью которой многие демоны используют для ведения журнала
# сообщений в различные системные журналы. Это хорошая идея всегда
# запускать rsyslog.
### BEGIN INIT INFO
# Provides: $syslog
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Stop: 0 1 2 3 4 5 6
# Short-Description: Улучшенные системные журналы и демоны захвата сообщений ядра
# Description: Rsyslog — это улучшенный многопоточный syslogd, поддерживающий,
# среди прочего, MySQL, syslog/tcp, RFC 3195, разрешенные
# списки отправителей, фильтрацию по любой части сообщения и тонкий
# контроль формата вывода.
### END INIT INFO
# Библиотека функций.
. /etc/init.d/functions
RETVAL=0
start() {
[ -x /usr/local/sbin/rsyslogd ] || exit 5
#[ -x /usr/local/sbin/rklogd ] || exit 5
# Не запускайте rsyslog, когда работает sysklogd
if [ -e /var/run/syslogd.pid ] ; then
echo "$Shut down sysklogd before you run rsyslog";
exit 1;
fi
# Исходный конфиг
if [ -f /etc/sysconfig/rsyslog ] ; then
. /etc/sysconfig/rsyslog
else
#SYSLOGD_OPTIONS="-c3"
SYSLOGD_OPTIONS="-c5"
#KLOGD_OPTIONS="-2"
fi
if [ -z "$SYSLOG_UMASK" ] ; then
SYSLOG_UMASK=077;
fi
umask $SYSLOG_UMASK
echo -n "$Starting system logger: "
daemon /usr/local/sbin/rsyslogd $SYSLOGD_OPTIONS
RETVAL=$?
echo
#echo -n "$Starting kernel logger: "
#daemon rklogd $KLOGD_OPTIONS
#echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/rsyslog
return $RETVAL
}
stop() {
#echo -n "$Shutting down kernel logger: "
#killproc rklogd
#echo
echo -n "$Shutting down system logger: "
killproc rsyslogd
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/rsyslog
return $RETVAL
}
reload() {
RETVAL=1
syslog=`cat /var/run/rsyslogd.pid 2>/dev/null`
echo -n "Перезагрузка системного журнала..."
if [ -n "${syslog}" ] && [ -e /proc/"${syslog}" ]; then
kill -HUP "$syslog";
RETVAL=$?
fi
if [ $RETVAL -ne 0 ]; then
failure
else
success
fi
echo
RETVAL=1
#echo -n "Перезагрузка ядра журнала..."
#klog=`cat /var/run/rklogd.pid 2>/dev/null`
#if [ -n "${klog}" ] && [ -e /proc/"${klog}" ]; then
#kill -USR2 "$klog";
# RETVAL=$?
#fi
#if [ $RETVAL -ne 0 ]; then
#failure
#else
#success
#fi
#echo
return $RETVAL
}
rhstatus() {
status rsyslogd
#status rklogd
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
reload|force-reload)
reload
;;
status)
rhstatus
;;
condrestart)
[ -f /var/lock/subsys/rsyslog ] && restart || :
;;
*)
echo "$Usage: $0 {start|stop|restart|reload|force-reload|condrestart}"
exit 2
esac
exit $?Примечание: убедитесь, что SYSLOGD_OPTIONS=”-c5” установлено!
Настройка Syslog и Rsyslog:
service syslog stop
chkconfig syslog off
chmod 755 /etc/init.d/rsyslog
chkconfig –add rsyslog
chkconfig rsyslog on
Скрипт инициализации доступен для загрузки на сайте Iran Honeynet Project - Rsyslog
Конфигурация Rsyslog
Некоторые конфигурации, которые описывают функции, доступны на веб-сайте Rsyslog.com.
vi /etc/rsyslog.conf
# Модули ввода -----------------------------------Эта строка является комментарием
#--------------------------------------------------Эта строка является комментарием
$ModLoad impstats.so
$PStatsInterval 300
syslog.info /var/log/rsyslog-stats
#--------------------------------------------------Эта строка является комментарием
$ModLoad immark.so # предоставляет возможность сообщения --MARK--
$ModLoad imuxsock.so # предоставляет поддержку для локального ведения журнала системы (через команду logger)
$ModLoad imklog.so # предоставляет поддержку ведения журнала ядра (ранее выполнялось rklogd)
#--------------------------------------------------Эта строка является комментарием
$ModLoad imudp.so # предоставляет прием syslog по UDP
$UDPServerAddress * # все локальные интерфейсы
$UDPServerRun 514 # запуск UDP сервера (приемник журнала)
#--------------------------------------------------Эта строка является комментарием
$ModLoad imtcp.so # предоставляет прием syslog по TCP и GSS-API (если скомпилировано)
$InputTCPServerRun 514 # запуск TCP сервера (приемник журнала)
#--------------------------------------------------Эта строка является комментарием
$ModLoad imrelp.so # Вход RELP
$InputRELPServerRun 20514 # запуск протокола RELP
#--------------------------------------------------Эта строка является комментарием
$ModLoad imfile.so # Вход текстового файла
$InputFileName /var/log/i-am-a-text-file.log
$InputFileTag my-text-file:
$InputFileStateFile stat-file1
$InputFileSeverity error
$InputFileFacility local7
$InputFilePollInterval 10 # проверка новых строк каждые 10 секунд
$InputRunFileMonitor
#--------------------------------------------------Эта строка является комментарием
#$ModLoad imgssapi.so # Простой TCP и GSSAPI
#$ModLoad im1395.so # Сообщения через RFC1395
# Модули вывода ----------------------------------Эта строка является комментарием
#--------------------------------------------------Эта строка является комментарием
$ModLoad omsnmp.so # Отправка SNMP ловушек
#$actionsnmptransport udp
#$actionsnmptarget 192.168.x.x
#$actionsnmptargetport 162
#$actionsnmpversion 1
#$actionsnmpcommunity public
#*.* :omsnmp:
#--------------------------------------------------Эта строка является комментарием
$ModLoad ommysql.so # Ведение журнала в MySQL
#$ModLoad ompgsql.so # Ведение журнала в PostgreSQL
#--------------------------------------------------Эта строка является комментарием
$ModLoad ommail.so # Отправка почты
#$ActionMailSMTPServer mail.example.net
#$ActionMailFrom [email protected]
#$ActionMailTo [email protected]
#$ActionMailTo [email protected]
#$template mailSubject,"проблема с диском на %hostname%"
#$template mailBody,"RSYSLOG Alert\r\nmsg='%msg%'"
#$ActionMailSubject mailSubject
#$ActionExecOnlyOnceEveryInterval 21600
#if $msg contains 'hard disk fatal failure' then :ommail:;mailBody
#--------------------------------------------------Эта строка является комментарием
$ModLoad omrelp.so # Отправка на другой хост через RELP
#$ModLoad omlibdbi.so # Ведение журнала через общий вывод БД
#$ModLoad omgss.so # Вывод с поддержкой GSS
# Глобальные параметры -----------------------------------------Эта строка является комментарием
$umask 0000
$DirCreateMode 0640
$FileCreateMode 0640
$RepeatedMsgReduction on
$WorkDirectory /var/log/rsyslog # место по умолчанию для рабочих (спул) файлов
$ActionQueueType LinkedList # использовать асинхронную обработку
$ActionQueueFileName queue # установить имя файла, также включает режим диска
$ActionResumeRetryCount -1 # бесконечные попытки при сбое вставки
$ActionQueueSaveOnShutdown on # сохранить данные в памяти, если rsyslog завершает работу
$MainMsgQueueMaxFileSize 100M
$ActionQueueMaxFileSize 5M
#--------------------------------------------------Эта строка является комментарием
# Ниже найдите несколько примеров того, что может сделать шаблон. Хорошего
# времени, чтобы выяснить, что они делают [или просто настроить их] ;)
# Шаблон, который напоминает традиционный вывод файла syslogd:
$template TraditionalFormat,"%timegenerated% %HOSTNAME% %syslogtag%%msg:::drop-last-lf%\n"
# шаблон, полезный для отладки проблем с форматом
$template DEBUG,"Debug line with all properties:\nFROMHOST: '%FROMHOST%', HOSTNAME: '%HOSTNAME%', PRI: %PRI%,\nsyslogtag '%syslogtag%', programname: '%programname%', APP-NAME: '%APP-NAME%', PROCID: '%PROCID%', MSGID: '%MSGID%',\nTIMESTAMP: '%TIMESTAMP%', STRUCTURED-DATA: '%STRUCTURED-DATA%',\nmsg: '%msg%'\nescaped msg: '%msg:::drop-cc%'\nrawmsg: '%rawmsg%'\n\n"
# Шаблон, который напоминает формат RFC 3164 в проводе:
# (да, между syslogtag и msg НЕТ пробела! это важно!)
$template RFC3164fmt,"<%PRI%>%TIMESTAMP% %HOSTNAME% %syslogtag%%msg%"
# шаблон, напоминающий традиционный формат сообщения wall:
$template wallmsg,"\r\n\7Сообщение от syslogd@%HOSTNAME% в %timegenerated% ...\r\n %syslogtag%%msg%\n\r"
# Шаблон ниже эмулирует формат winsyslog, но нам нужно проверить время
# метки, используемые. на данный момент это достаточно хорошо ;) Этот формат работает лучше всего с
# другими членами семейства продуктов MonitorWare. Это также хороший образец
# где вы можете увидеть заменитель свойств в действии.
$template WinSyslogFmt,"%HOSTNAME%,%timegenerated:1:10:date-rfc3339%,%timegenerated:12:19:date-rfc3339%,%timegenerated:1:10:date-rfc3339%,%timegenerated:12:19:date-rfc3339%,%syslogfacility%,%syslogpriority%,%syslogtag%%msg%\n"
# Шаблон, используемый для записи в базу данных (обратите внимание, что это *фактически*
# sql-запрос):
$template dbFormat,"insert into SystemEvents (Message, Facility,FromHost, Priority, DeviceReportedTime, ReceivedAt, InfoUnitID, SysLogTag) values ('%msg%', %syslogfacility%, '%HOSTNAME%',%syslogpriority%, '%timereported:::date-mysql%', '%timegenerated:::date-mysql%', %iut%, '%syslogtag%')",sql
$template FileFormat,"%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg%"
$template ForwardFormat,"<%PRI%>%TIMESTAMP:::date-rfc3339% %HOSTNAME% %syslogtag:1:32%%msg:::sp-if-no-1st-sp%%msg%"
# Строки селектора несколько отличаются от обычного syslogd. С
# rsyslog вы можете добавить точку с запятой ";" после цели, а затем
# имя шаблона. Это назначит этот шаблон соответствующему
# действию. Если имя шаблона не указано, используется жестко закодированный шаблон.
# Если имя шаблона указано, но шаблон не был определен, строка селектора отключается.
#--------------------------------------------------------------------
#--------------------------------------------------Эта строка является комментарием
# Переслать по TCP с максимальным сжатием:
#$AllowedSender TCP, 127.0.0.1, 192.0.2.0/24, [::1]/128, *.example.net, somehost.example.com
#*.* @@(z9)192.168.x.x:514
# Переслать по UDP с максимальным сжатием:
#$AllowedSender UDP, 127.0.0.1, 192.0.2.0/24, [::1]/128, *.example.net, somehost.example.com
#*.* @(z9)192.168.x.x:514
# Переслать по протоколу RELP :
#*.* :omrelp:192.168.2.4:20514;TraditionalFormat
# Сохранить все журналы в базе данных MySQL :
#*.* :ommysql:127.0.0.1,Syslog,rsyslog,your-mysql-password
#--------------------------------------------------Эта строка является комментарием
#--------------------------------------------------Эта строка является комментарием
# Вести все сообщения ядра в консоль.
# Ведение журнала многого другого загромождает экран.
#kern.* /dev/console;TraditionalFileFormat
# Вести любой (кроме почты) уровень информации или выше.
# Не ведите частные сообщения аутентификации!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# Файл authpriv имеет ограниченный доступ.
authpriv.* /var/log/secure
# Вести все сообщения почты в одном месте.
mail.* -/var/log/maillog
# Вести cron-данные
cron.* /var/log/cron
# Всем отправляются экстренные сообщения
*.emerg *
# Сохранить ошибки новостей уровня критического и выше в специальном файле.
uucp,news.crit /var/log/spooler
# Сохранить сообщения загрузки также в boot.log
local7.* /var/log/boot.log
#--------------------------------------------------Эта строка является комментарием
$IncludeConfig /etc/rsyslog.d/*.conf
#--------------------------------------------------Эта строка является комментарием
#if message contains 'network error' then run the restart-network.sh shell script!!!
#:msg, contains, "network error" ^/root/restart-network.shВажно: Для получения дополнительной информации, пожалуйста, проверьте Rsyslog.com
Файл конфигурации Rsyslog доступен для загрузки на сайте Iran Honeynet Project - Rsyslog
Запуск Rsyslog
chmod 640 /etc/rsyslog.conf
service rsyslog start
tail -f /var/log/messages
Тестирование Rsyslog
logger “это тестовое сообщение”
logger -p local0.info -t testtag “это тестовое сообщение”
Ссылки
Iran Honeynet Project: http://www.honeynet.ir/
Rsyslog Project: http://www.rsyslog.com/
CentOS: http://www.centos.org/
Get new posts in your inbox
No spam. Unsubscribe anytime.