BufferSendの意味について

BufferSendの意味についてご教授願います。

オンラインマニュアルに、
 「バッファにデータを保持する期間(秒単位)を指定します。」
との記載がありますが、これは、
 「現在時刻より指定期間(秒)の過去データを保持する。」
の意味でよろしいのでしょうか。

Zabbix2.0.6において、現在、以下の挙動を確認しております。
#Zabbixサーバ+Zabbixエージェント(アクティブ)
  1)BufferSend=10に設定、他は標準値
  2)Zabbixエージェントからサーバへの監視データ正常送信をエージェントログで確認
  3)サーバプロセスを停止
  4)監視データ送信失敗をエージェントログで確認
  [0x0000274D] 対象のコンピュータによって拒否されたため、接続できませんでした。
  5)サーバプロセスを起動
  6)監視データ送信成功をエージェントログで確認
  JSON before sending [{
   "request":"agent data",
   "data":[
    ...
  JSON back [{
   "response":"success",
   "info":"Processed 28 Failed 0 Total 28 Seconds spent 0.000252"}]

 3)から5)の期間を5分取った場合、4)時点で送信失敗した監視データが欠落すると考えていたのですが、エージェントログを見る限り、3)から送信不可となった全監視データが6)で送信されています。
http://www.zabbix.jp/node/1487
を参照させていただきましたが、BufferSendの指定が何に影響しているかを理解できておりません。

 情報をお持ちの方、よろしくお願いいたします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

BufferSendは、アイテムのタイプとして「Zabbixエージェント(ア
クティブ)」を選択していた場合に、Zabbixエージェントから
Zabbixサーバ側に取得したデータを送る時間間隔と考えて頂けば良
いと思います。

ソースを見るかぎり、キューがたまっておらず、前回送信した時か
らの時間経過がBufferSendで指定した値よりも小さい場合は、送信
処理をスキップしているようです。
恐らく、頻繁にZabbixサーバへの送信が行われるよりも、ある程度
間隔を空けて、まとめてZabbixサーバへ送ることで、Zabbixサーバ
への負荷を抑えるようにと考慮されているのだと思われます。

他にもBufferSizeという設定があったかと思いますが、アイテムの
タイプとして「Zabbixエージェント(アクティブ)」を選択していた
場合は、ZabbixエージェントからZabbixサーバに値を引き渡すとき、
Zabbixサーバに接続できずに送れないと、BufferSizeに指定した範
囲内であれば、バッファにキューイングされ、次の送信タイミング
でリトライが行われます。

送信できない値の数が、BufferSizeを超えてしまうような場合は、
バッファに新規データを追加できずにZabbixサーバ側に送るべきデ
ータが欠損することになります。

頻繁に、ZabbixサーバとZabbixエージェント間で通信ができないよ
うなことが発生するようであれば、それにかかる時間を考慮して、
BufferSizeを拡大しておくことが有効かもしれません。

ユーザー misasaki の写真

コメントありがとうございます。

TNK様のおっしゃる通り、送信処理をスキップしているログは確認できました。
#BufferSendは10に設定しています。

7669 4228:20130614:124512.965 In send_buffer() host:'192.168.222.130' port:10051 values:1/100
7670 4228:20130614:124512.965 Will not send now. Now 1371181512 lastsent 1371181503 < 10
7671 4228:20130614:124512.965 End of send_buffer():SUCCEED

なお、実際に送信されるタイミングはItem登録時に指定する「更新間隔(秒)」に沿っています。
例えば、更新間隔を30秒に設定し、毎分0秒と30秒に送信されている場合、上記ログが毎分50秒と20秒から出力され始めるという感じです。
ですので、送信タイミングは更新間隔とBufferSendの両方を満たす場合に送信する、という感じでしょうか。

サーバが障害から復旧した際、エージェントがどこまでデータを保持でき再送できるか、BufferSendを変更しつつ確認していた次第です。いただいたコメントより、BufferSendよりもBufferSizeの方が目的に合致するようですね。
更新間隔が30秒、BufferSizeが100で監視項目が1つの場合、単純計算で50分(30秒×100÷60秒)ほどは過去データを保持できそうだということだと理解しました。

以上、ありがとうございました。