システム運用管理

syslog-ngインストール手順

構築環境

OS                 : CentOS release 5.5 (Final)

サーバIP       : 192.168.0.100

syslog-ng     : syslog-ng-2.1.4-1.el5

 

事前準備

1.epelレポジトリの追加

syslog-ngはepelレポジトリにあるので、epelのパッケージを利用してインストールします。

なお、今後の競合を避けるため、基本的にepelのリポジトリは無効にし、

syslog-ngインストール時のみ一時的に有効にして利用します。

# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL
# vi /etc/yum.repos.d/epel.repo
### enabled=1 #<-コメントアウト br="">enabled=0 #<-追記 enabled="0に設定しておき、epelを利用したい時だけ、「--enablerepo=epel」として利用します。

 

2.libevtlogとlibdbiをインストール

syslog-ngを利用するために必要なlibevtlogとlibdbiをインストールしておきます。

# cd /usr/local/src
# wget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/pkgs/pool/e/eventlog/rhel-5_syslog-ng-2.1/libevtlog0-0.2.8-1.i386.rpm
# rpm -ivh libevtlog0-0.2.8-1.i386.rpm
# wget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/pkgs/pool/l/libdbi8/rhel-5_syslog-ng-2.1/libdbi8-0.8.2bb2-3.rhel5.i386.rpm
# rpm -ivh libdbi8-0.8.2bb2-3.rhel5.i386.rpm

 

syslog-ngインストール、設定

サーバ・クライアント共にsyslog-ngをインストールし、

クライアントから送信したsyslogメッセージをサーバ側で確認する方法を以下に示します。

 

1.syslog-ngインストール

yumコマンドのオプションでepelのリポジトリを有効にし、syslog-ngをインストールします。

# yum install --enablerepo=epel syslog-ng

 

2.syslog-ng設定ファイル(/etc/syslog-ng/syslog-ng.conf)の編集(共通)

2-1.optionsタグの編集

# vi /etc/syslog-ng/syslog-ng.conf
options {
(省略)
stats (86400); # <- syslog-ng="" 1="" 86400="" br="">perm (0644); # <- pre="">

 

2-2.syslog-ng内部で生成されるメッセージ出力の定義を追加

source s_internal { internal(); };# <- syslog-ng="" br="">destination d_syslognglog { file("/var/log/syslog-ng.log"); };	# <- var="" log="" syslog-ng="" br="">log { source(s_internal); destination(d_syslognglog); }; # <- source="" destination="" pre="">

 

3.syslog-ng設定ファイル(/etc/syslog-ng/syslog-ng.conf)の編集(サーバ)

3-1.sourceタグの追加

リモートからsyslogメッセージの受信を行うための設定を追記します。

# tcp,udp共に514ポートで待ち受け(ログの受信に関する設定) 
source s_remote {
tcp(ip(0.0.0.0) port(514));
udp(ip(0.0.0.0) port(514));
}

 

3-2.destinationタグの追加

 リモートから受信したsyslogメッセージをファイルに保存する設定を追記します。

 # /var/log/syslog-ng//message.YYYY-MM-DDでファイルを作り
# syslogメッセージを保存する。
destination d_separatedbyhosts {
file("/var/log/syslog-ng/$HOST/messages.$YEAR-$MONTH-$DAY" owner("root") group("root") perm(0640) dir_perm(0750) create_dirs(yes));
};

 

3-3.logタグの追加

3-1,3-2で追加したsourceとdestinationを紐付けます。

 log { source(s_remote); destination(d_separatedbyhosts); };

 

3-4.設定したsyslog-ng.confに問題がないことを確認

# syslog-ng -s
(何も表示されないこと)

 

4.syslog-ng設定ファイル(/etc/syslog-ng/syslog-ng.conf)の編集(クライアント)

サーバに対してsyslogメッセージを送信するために、以下の設定を追加します。

4-1.destinationタグの追加

#syslogメッセージを対象のサーバへudpの514で送信する設定
 
destination d_loghost { udp("192.168.0.100" port(514)); }; #<-tcpにしたい場合は、udpの部分をtcpに編集する span="">


4-2.logタグの追加

 # sourceとfilterとdestinationを関連付ける設定
log { source(s_sys); filter(f_default); destination(d_loghost); };

#なお、filterのf_defaultはデフォルトで用意されているものを利用します。

 

4-3.設定したsyslog-ng.confに問題がないことを確認

# syslog-ng -s
(何も表示されないこと) 

 

5.logrotateスクリプトの編集

既存のsyslogのローテーション設定を引き継ぐため、/etc/logrotate.d/syslogファイルの設定を編集します。

# vi /etc/logrotate.d/syslog 
### /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true #<-コメントアウト br=""> /etc/rc.d/init.d/syslog-ng reload > /dev/null 2>&1 #<-追記 pre="">

 

6.自動起動設定

6-1.syslogの自動起動設定

既存で動作しているsyslogdの自動起動の設定をオフに変更します。

# chkconfig --list syslog
syslog          0:off   1:off   2:off   3:off   4:off   5:off   6:off #<-offになっていることを確認します pre="">

 

6-2.syslog-ngの自動起動設定

 # chkconfig syslog-ng on
# chkconfig --list syslog-ng
syslog-ng       0:off   1:off   2:on    3:on    4:on    5:on    6:off #<-2,3,4,5がonになっていることを確認します pre="">

 

6-3.既存で動作しているsyslogを停止

# /etc/init.d/syslog stop
# /etc/init.d/syslog status
syslogd は停止しています #<-syslogdが停止していることを確認します br=""> klogd は停止しています

 

6-4.syslog-ngを起動

 # /etc/init.d/syslog-ng start
Starting syslog-ng:                                        [  OK  ]
# /etc/init.d/syslog-ng status
syslog-ng (pid  13824) を実行中... #<-syslog-ngが起動していることを確認します pre="">

 

7.syslogメッセージ転送確認

7-1.クライアント側からloggerコマンドでsyslogメッセージを送信

 # logger -p kern.info "test"

 

7-2.サーバ側で転送されたsyslogメッセージを確認

# cat /var/log/syslog//messages.YYYY-MM-DD
Mar  4 17:5516 test-client root: test #<-メッセージが受信できていること確認します pre="">



 

3.syslog-ng設定ファイル(/etc/syslog-ng/syslog-ng.conf)の編集(サーバ)

 

3-1.sourceタグの追加

リモートからsyslogメッセージの受信を行うための設定を追記します。

 

# tcp,udpあああああああああああああああああああああああああああああああああ共に514ポートで待ち受け(ログの受信に関する設定)

source s_remote {

tcp(ip(0.0.0.0) port(514));

udp(ip(0.0.0.0) port(514));

}