Fluentdバッファのテスト(3)-Bufferテストの進捗と結果


こんにちは!
私はカルビ餃子が好きな開発者の任太彬です.
今日はFluentdバッファをテストする最後の部分Bufferテストです

まず、2つのFluentdサーバを構築します.
2つのサーバの名前を区切るとわかりやすいのがFluentd 1とFluentd 2で説明

Fluentd 1は、Webサーバからログを受信し、バッファを使用してデータを収集して送信します.
fluentd 2の場合、fluentd 1出力バッファから収集されたデータの一部です.
Fluentd 2は出力のみを考慮し、バッファが完全かどうかをテストします.

Fluentd 1とFluentd 2のconfファイルを作成しましょう.
#vi fluentd1.conf
  <source>
    @type forward
    port 24224
  </source>
  <match *.log>
    @type forward
    send_timeout 60s
    recover_wait 10s
    <buffer>
      @type "file"
      flush_interval 5s
      path "/home/ubuntu/test_buffer"
      retry_wait 5s
      retry_type periodic
    </buffer>
    <server>
      name "ubuntu"
      host "192.168.25.56"
      port 24223
    </server>
  </match>
#vi fluentd2.conf
  <source>
    @type forward
    port 24224
    bind "0.0.0.0"
  </source>
  <match *.log>
    @type stdout
  </match>
これらのファイルを使用してテストしましょう.
gin Webサーバをローカルで実行し、ドッキングステーションを使用して各コンテナを作成します.
docker run -it --name fluentd1 -p 24224:24224 tae2089/fluentd:1.3
docker run -it --name fluentd2 -p 24223:24224 tae2089/fluentd:1.3
テストが始まる前に、k 6というload test toolを使用して複数のhttp通信を行い、より多くのデータを要求しました:)ページのリフレッシュもjmeterを使用して行うことができます.

それでは今からテストを始めましょう

最初に行うテストは、Fluentd 1がログを収集してFluentd 2にデータを送信するときに、Fluentd 2が何らかの理由で終了した場合、Fluentd 1のデータはどのようになりますか.

上の図は、サーバが開くまでFluentd 1がデータを収集していることを示しています.データが14~18秒に及ぶ場合、サーバが転送中に突然中断したため、データが失われる可能性があります.

2つ目のテストは、ginによってFluentd 1にデータが集中してFluentd 2に送信されたときに、Fluentd 1が閉じている場合、データを再実行してもデータが保持されているかどうかです.まず1枚目の写真では、Fluentd 1は、データが入ってから停止していることを示す写真です.

37秒で停止したため、データはFluentd 2に送信されませんでした.次にFluentd 1を再実行すると、Fluent 1のバッファ内のデータがFluentd 2に入ります.琥珀色のマークに関連するデータが表示されます.

この2つのテストでは、flush intervalが大きな影響を受けていることがわかります.ファイルバッファを使用しているためかもしれませんが、より多くのエンクロージャを追加するには、さまざまなオプションを使用してください.
この文章を読んで、间违いや好奇心のあるところがあれば、伝言を残してください.ありがとうございます.
https://github.com/tae2089/golang/tree/main/fluentdgin