- PR -

syslog-ngのdroppedに関して

1
投稿者投稿内容
zono
会議室デビュー日: 2007/01/15
投稿数: 2
投稿日時: 2007-01-15 22:01
初めて投稿させていただきます。

現在、syslog-ngを使用してログの収集を行っており
その設定ファイルであるsyslog-ng.confの中のoptionsで
sync()オプションの値を0にして動作させています。
以下にsyslog-ng.confのoptions部分を抜粋します。

------------
# First, set some global options.
options {
sync(0);
time_reopen (10);
log_fifo_size (1000);
long_hostnames(off);
use_dns (yes);
use_fqdn (yes);
create_dirs (yes);
# keep_hostname (yes);
};
------------

上記設定でsyslog-ngを動作させた場合の/var/log/messagesのsyslog-ngのログは
下記のように出力されております。

------------
Jan 15 17:23:55 XXXXXX syslog-ng[750]: STATS: dropped 167
Jan 15 17:33:55 XXXXXX syslog-ng[750]: STATS: dropped 161
Jan 15 17:43:55 XXXXXX syslog-ng[750]: STATS: dropped 167
Jan 15 17:53:55 XXXXXX syslog-ng[750]: STATS: dropped 171
Jan 15 18:03:55 XXXXXX syslog-ng[750]: STATS: dropped 175
Jan 15 18:13:55 XXXXXX syslog-ng[750]: STATS: dropped 168
Jan 15 18:23:55 XXXXXX syslog-ng[750]: STATS: dropped 170
------------

ここで、"dropped"についてWebで検索したところ、
「バッファ出力に失敗したログの数」という記述を見かけました。

ここでいう「バッファ出力」というのは

1.「受信したメッセージのバッファへの出力」
2.「バッファされたメッセージのログファイルへの出力」

この、どちらなのかという点について悩んでおります。

sync(0)を設定した状態で、仮に2.であるとすると、messagesログに上記のような
droppedが0でないログが出力されることはありえるのではないかと思うのですが、
1.であるとした場合、sync(0)を設定した時点でメッセージをバッファリングしない
(出力に失敗することがない)ということになるので、messagesには「dropped 0」しか
出力されないのではないか、と考えております。

sync()オプションについて検索してみたところ、sync()の値を0に設定した場合は、
同じくoptionsにおいてstats()の値を0に設定する、という記述がいくつか見つかりました。
ここで、stats()の値を0にすると、このdroppedに関するログの出力を行わないことになりますが、
どうも、これらのサイトの情報を見る限りでは、「バッファ出力」に関して1.の意味で捉えており、
"sync()を0に設定しているのだからdroppedは常に0なるはずなのでdroppedに関する出力は必要ない"と
いっているように思えます。

しかし、現状のわたし環境下ではsync()の値を0に設定している状態で
droppedが0にはなっておりません。

本件について、何かご存知の方がいればご教授願えませんでしょうか。
よろしくお願いします。

以下、当方の環境です。
----------------------------
Debian GNU/Linux 3.1(sarge)
syslog-ng 1.6.5-2.2
anights
ぬし
会議室デビュー日: 2003/05/22
投稿数: 277
お住まい・勤務地: 東京
投稿日時: 2007-01-16 01:17
引用:

zonoさんの書き込み (2007-01-15 22:01) より:
ここでいう「バッファ出力」というのは

1.「受信したメッセージのバッファへの出力」
2.「バッファされたメッセージのログファイルへの出力」

この、どちらなのかという点について悩んでおります。


1.だと思います。多分。。。
引用:

1.であるとした場合、sync(0)を設定した時点でメッセージをバッファリングしない
(出力に失敗することがない)ということになるので、messagesには「dropped 0」しか
出力されないのではないか、と考えております。


別にsyncオプションの値だけがバッファではありません。
log_fifo_sizeとsyncの値の大きい方がqueueの最大値となります。
ちなみに、droppedの数値はqueueが溢れた回数です。
それにsync(0)だからdroppedが0になるなんてことはないんじゃないでしょうか。
そもそも出力に失敗することがないとかあり得ないかと。
引用:

"sync()を0に設定しているのだからdroppedは常に0なるはずなのでdroppedに関する出力は必要ない"と
いっているように思えます。


深読みしすぎでは?
dropped 0がずっと出るので表示させたくないだけではないでしょうか?

_________________
桃李不言 下自成蹊
zono
会議室デビュー日: 2007/01/15
投稿数: 2
投稿日時: 2007-01-17 20:56
anightsさん

返信が遅くなり申し訳ございません。
ご回答ありがとうございました。

なるほど、"log_fifo_size"については全くノータッチでした・・・。

ということは、私のoptionsの設定では"sync(0)"の設定ではなく
"log_fifo_size (1000)"の方が効いているということになるのですね。

早速、設定を変更して確認してみたいと思います。
進展がありましたらご連絡いたします。
1

スキルアップ/キャリアアップ(JOB@IT)