Rsyslog インストール · 5 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 (Reliable Event Logging Protocol Library) は、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,"%hostname% のディスク問題"
#$template mailBody,"RSYSLOG アラート\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,"すべてのプロパティを持つデバッグ行:\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\7syslogd@%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:::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

# すべてのメールメッセージを 1 か所にログします。
mail.*                                                  -/var/log/maillog

# cron の内容
cron.*                                                  /var/log/cron

# すべての人が緊急メッセージを受け取ります
*.emerg                                                 *

# 特別なファイルにレベル crit 以上のニュースエラーを保存します。
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 “これはテストメッセージです”
logger -p local0.info -t testtag “これはテストメッセージです”

リンク

イランホーネットプロジェクト: http://www.honeynet.ir/
Rsyslog プロジェクト: http://www.rsyslog.com/
CentOS: http://www.centos.org/

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。