2003年12月08日

syslog-ngでの注意点

設定時にいくつか引っかかったのでメモ。

1) 謎のログ
syslog-ngに切り替えてしばらくしてから/var/log/messagesを見ていたら↓のようなログで埋まってました

Dec 4 11:54:46 xxxxxxxx syslog-ng[27081]: STATS: dropped 0
調べたところ、ネットワーク越しに送られてきたパケットが指定時間内でいくつ無視されたか報告する物らしいですが、デフォルトが10分刻みでそれはさすがに短いので、optionsの中でstats(86400);として1日に1回ずつ報告するようにしました。

2) パーミッション
何も指定しない場合syslog-ngでは作成するパーミッションは600ですが、コレじゃちょっと都合の悪いファイルがあったのでパーミッションを変更しました。
やり方は以下の通り

destination d_foo { file("/var/log/bar" perm(0604));};
なお、パーミッションの他に作成するユーザなども指定できます。
指定方法などは下記を参照してください。
3) logrotated
logroutatedを用いてログを回している場合は、切り替え後忘れずに設定を変更しておかねば成りません。
具体的には、/etc/logrotate.d/syslogを開いてsyslogd.pidになっている辺りを全てsyslog-ng.pidに書き換える必要があります。

4) プログラム
Destination driversでprogram()を指定した場合、syslog-ng起動と同時にプログラムを開きっぱなしにするようです。
なんで、psなどではずーっと動いている用に見えますので、要注意です。
(渡すプログラム側でも何らかの対応いるのかもしれませんが、perlでダイアモンド演算子使って読み込んでいる分にはちゃんと動いているようなので検証してません(笑))

Posted by Takuchan at 2003年12月08日 01:48 | トラックバック(1)

お手数でなかったら教えてください。

2台SUN Solaris 2.8のマシンがあります。
syslog-ng同士でのホストからログサーバへのログは問題なく送られています。が、ホストがsyslogの場合、ログサーバがsyslog-ngでもログの収集は可能でしょうか?

以上宜しくお願い致します。

Posted by: Masami at 2004年05月28日 10:23

可能です。

syslog-ng側は
source s_udp { udp(); };
destination d_host { file("/var/log/HOSTNAME"); };
filter f_host { level(info..emerg); };
log { source(s_udp); filter(f_host); destination(d_host); };
っていう感じです。

syslog側の設定についてはこちらをご覧ください。
http://www.atmarkit.co.jp/fsecurity/rensai/unix_sec08/unix_sec01.html

Posted by: Takuchan at 2004年05月28日 11:24

ありがとうございます!できました。
早速Ciscoでも試してみます。

Posted by: Masami at 2004年05月28日 14:16

それは良かったです( ̄▽ ̄)ノ
syslog-ngではキャリッジリターン付きのsyslogでもCR除去してログに書き込んでくれるので、外部機器からの受信には大変重宝しています。

Posted by: Takuchan at 2004年05月28日 16:18