« toto BIG | メイン | 砂漠の狂王 »

CentOSでsyslog-ng

CentOS4.4のサーバにsyslog-ngをインストールしました。
標準で入っているsyslogdを完全に置き換えられます。互換性もばっちり。
ボクがインストールしたのはsyslog-ng v1.6です。
本家では、今年の1月に2.0もリリースされていますが、1.6の方が実績もあってかれていそう。

FC6のextrasパッケージの中にsyslog-ng v1.6.12のSRPM(~.src.rpm)があります。
これをダウンロードしてきて、リビルドするだけでRPMが出来上がり。

rpmbuild --rebuild syslog-ng-1.6.12-1.fc6.src.rpm

本来、syslog-ngをコンパイルするには、libolが必要なのですが、CentOSのには入っていません。
しかし、FC6のsyslog-ngのSRPMパッケージにはlibolも入っているので、何も考えずにリビルドするだけでOKです。
RPMパッケージができたら、rpmコマンドでインストール。

rpm -ivh /usr/src/redhat/RPMS/i386/syslog-ng-1.6.12-1.fc6.i386.rpm

この状態では、syslogdとsyslog-ngが一緒に入っています。
既存のsyslogdは消す必要はなく、止めるだけで問題ないです。
/etc/syslog-ng/syslog-ng.conf が /etc/syslog.conf の代わりになります。
syslog.conf をカスタマイズしていなければ、インストールされた syslog-ng.conf そのままで問題ありません。互換性を意識した設定が予め入っています。
カスタマイズしている人はサンプルファイルを元にsyslog-ng.confを修正してください。
サンプルは、/usr/share/doc/syslog-ng-~/に入っています。
次は、confファイルの構文チェックを行います。
syslog-ngには、apacheのようにconfのチェック機能がついています。
-sオプションがチェック機能です。チェックだけを行います。

/sbin/syslog-ng -s

エラーが表示されなければOKです。
いよいよ、既存のsyslogdを止めて、syslog-ngを起動します。

/etc/init.d/syslog stop
/etc/init.d/syslog-ng start

起動後、psコマンドでsyslog-ngが起動していることを確認してください。

tail -f /var/log/messages

でログを確認しつつ、logger コマンドでログを送信してみます。

logger test

ログが表示されればOK。
後は、サーバ再起動後もsyslog-ngが立ち上がるようにchkconfigを実行します。

/sbin/chkconfig syslog off
/sbin/chkconfig syslog-ng of

簡単。
同じ手順でFC1のsyslogもsyslog-ngに置き換えられました。

また、リモートのsyslogの送受信に関しては、syslog to syslog-ng、syslog-ng to syslog-gn どちらも問題なくできました。
特にsyslog to syslog-ng で全然問題なく転送できるので、受信サーバ側だけでもsyslog-ngに置き換えると、それだけでも恩恵を受けられます。
チューニング次第ですが、受信能力を高められます。
たぶんデフォルトでもsyslogdより多く受信できると思います。
use_dns()やlog_fifo_size()やsync()やgc_idle_threshold()やgc_busy_threshold()を調整して能力を上げられます。
もちろんトレードオフになる部分もあるので、よく考えて分かった上で調整してください。
syslog-ng の機能の一つで、DROPしたログの件数を表示してくれるので参考になります。
(ただし、そもそもサーバに届かなかったログはDROPした件数に含まれないのでご注意を。)

また、syslog-ng to syslog-ng なら TCP での送受信もできます。
UDPで取りこぼしていたログもTCPなら取りこぼさなかったり、取りこぼしが少なくなったりします。
なお、syslog-ng.confにtcpの設定を書く時に注意点があります。
ボクははまってなかなか上手く動きませんでした orz
ウェブのリファレンス・マニュアルのTCPのdestinationの設定で、『Example 3.12. Using the tcp() driver』には、

 destination d_tcp { tcp("10.1.2.3" port(1999); localport(999)); };

と書いてあるのですが、port(1999)の後ろの(セミコロン)は要りません。
オプションは空白区切りで列挙してください。この例のままセミコロン付きにすると構文エラーになります:-(
単純ゆえに気づくまで時間がかかるw


参考URL
syslogをsyslog-ngに置き換えるには (via @IT)
第9回 安全性の高いログ・サーバへの乗り換えのススメ(1) (via @IT)
 ~ syslogサーバからsyslog-ngへの乗り換え ~

トラックバック

このエントリーのトラックバックURL:
http://hagyroom.sakura.ne.jp/mt/mt-tb.cgi/666

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2007年03月08日 00:00に投稿されたエントリーのページです。

ひとつ前の投稿は「toto BIG」です。

次の投稿は「砂漠の狂王」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

アーカイブ

お薦めショップ

  • HagyShop   ボクの大好きな作品だけ、
      お薦めの本と映画をご紹介。