BufferSizeとBufferSendで制御されるバッファの動作仕様について
下記のような設定値であることを前提といたします。
zabbix2.4
エージェント(zabbix_agentd.conf)の設定
BufferSend=5 (5秒までバッファに保持)
BufferSize=100(100イベントまでバッファに保持)
下記のように、6秒間で1秒毎に6イベントが発生したと仮定すると、
00:00:01 イベント1
00:00:02 イベント2
00:00:03 イベント3
00:00:04 イベント4
00:00:05 イベント5
00:00:06 イベント6
バッファにはどのような順番で保管され、サーバへイベントを送信する際に、どのような順番で送信されるのでしょうか?
また、例えばNW障害が発生してイベント4が送信できなくなったような場合、
バッファに一旦戻されるのか、その場合どのような順番で保管され、どのような順番で送信されるのかもご教示いただきたく。
以下は仮説ですが、例えば、アルゴリズムが後入れ先出し法だとすると、
イベント5
イベント4
イベント3
イベント2
イベント1
の順にスタックされて、5秒を超過した時点で、イベント1から順番にサーバに送信されるかと思います。
サーバ側に届くイベント(時系列順)
イベント1
イベント2
イベント3
イベント4
イベント5
ネットワーク障害が発生してイベント4が送信できなくてバッファにもどってくるような動作仕様だった場合、
サーバ側に届くイベント(時系列順)
イベント1
イベント2
イベント3
イベント5
イベント4
イベント6
yanta1 - 投稿数: 15
Active 監視ですね。
Active 監視で取得した監視データは一旦バッファに入れらた後、Zabbix Server/Proxy に送られます。
バッファには古いものから新しいものへ順に保管されるようです。
バッファがいっぱいになって古いもの(ログ監視データ以外)を削除したときは、memmove()で詰めた後、最後にデータを入れています。
なので、新しい監視データが古い監視データより先に送られることはないはず。
バッファにある監視データは、複数まとめて送信されます。
(JSON形式: https://www.zabbix.org/wiki/Docs/protocols/zabbix_agent/2.4)