Rsyslog 설치 · 7 min read · Oct 17, 2025
CentOS 5.x에 전체 기능이 포함된 Rsyslog 5.7.x 설치하기
CentOS 5.x에 전체 기능이 포함된 Rsyslog 5.7.x 설치하기
이 튜토리얼은 Rsyslog를 사용하여 새로운 세대의 syslog 서버를 설치하는 방법을 보여줍니다. Rsyslog 웹사이트(www.rsyslog.com)에 따르면, Rsyslog는 MySQL, PostgreSQL, 장애 조치 로그 목적지, syslog/tcp, 세밀한 출력 형식 제어, 고정밀 타임스탬프, 대기 작업 및 메시지의 모든 부분에 대한 필터링 기능을 지원하는 향상된 syslogd입니다. 기본 sysklogd와 매우 호환되며 드롭인 대체로 사용할 수 있습니다. 고급 기능 덕분에 기업급 암호화 보호 syslog 릴레이 체인에 적합하면서도 초보자가 설정하기 매우 쉽습니다.
목표
이 튜토리얼은 CentOS 5.5 서버에 전체 기능이 포함된 Rsyslog 5.7.9를 컴파일하고 설치하는 방법을 보여줍니다. 이 방법이 귀하에게 효과가 있을 것이라는 보장은 하지 않습니다!
설치 전 준비
먼저 다음 패키지를 설치해야 합니다:
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를 실행하면 확인할 수 있습니다.
다음 명령은 압축, 멀티스레딩, MySql, SNMP, 메일, RELP 지원 등과 같은 대부분의 rsyslog 기능을 활성화합니다.
./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 데이터베이스 준비:
syslog 기록을 데이터베이스에 저장하려면 MySQL 설치가 필수입니다. 그렇지 않으면 이 부분을 건너뛰십시오.
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;
init 스크립트 구성
vi /etc/init.d/rsyslog
#!/bin/bash
#
# rsyslog Starts rsyslogd/rklogd.
#
#
# chkconfig: - 12 88
# description: Syslog is the facility by which many daemons use to log \
# messages to various system log files. It is a good idea to always \
# run 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: Enhanced system logging and kernel message trapping daemons
# Description: Rsyslog is an enhanced multi-threaded syslogd supporting,
# among others, MySQL, syslog/tcp, RFC 3195, permitted
# sender lists, filtering on any message part, and fine
# grain output format control.
### END INIT INFO
# Source function library.
. /etc/init.d/functions
RETVAL=0
start() {
[ -x /usr/local/sbin/rsyslogd ] || exit 5
#[ -x /usr/local/sbin/rklogd ] || exit 5
# Do not start rsyslog when sysklogd is running
if [ -e /var/run/syslogd.pid ] ; then
echo "$Shut down sysklogd before you run rsyslog";
exit 1;
fi
# Source config
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 "Reloading system logger..."
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 "Reloading kernel logger..."
#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
init 스크립트는 이란 호넷넷 프로젝트 - Rsyslog에서 다운로드할 수 있습니다.
Rsyslog 구성
기능을 개략적으로 설명하는 일부 구성은 Rsyslog.com 웹사이트에서 확인할 수 있습니다.
vi /etc/rsyslog.conf
# Input Modules -----------------------------------이 줄은 주석입니다
#--------------------------------------------------이 줄은 주석입니다
$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 # UDP syslog 수신 제공
$UDPServerAddress * # 모든 로컬 인터페이스
$UDPServerRun 514 # UDP 서버 시작 (로그 서버 수신기)
#--------------------------------------------------이 줄은 주석입니다
$ModLoad imtcp.so # TCP syslog 수신 및 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를 통한 메시지
# Output Modules ----------------------------------이 줄은 주석입니다
#--------------------------------------------------이 줄은 주석입니다
$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,"disk problem on %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 # 일반 DB 출력을 통한 로그 기록
#$ModLoad omgss.so # GSS 지원 출력
# Globals -----------------------------------------이 줄은 주석입니다
$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%"
# 전통적인 벽 메시지 형식을 닮은 템플릿:
$template wallmsg,"\r\n\7Message from syslogd@%HOSTNAME% at %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:::drop-last-lf%\n"
$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 DB에 저장:
#*.* :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 구성 파일은 이란 호넷넷 프로젝트 - Rsyslog에서 다운로드할 수 있습니다.
Rsyslog 시작
chmod 640 /etc/rsyslog.conf
service rsyslog start
tail -f /var/log/messages
Rsyslog 테스트
logger “this is a test message”
logger -p local0.info -t testtag “this is a test message”
링크
이란 호넷넷 프로젝트: http://www.honeynet.ir/
Rsyslog 프로젝트: http://www.rsyslog.com/
CentOS: http://www.centos.org/
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.