カテゴリー「fluentd」

fluentdのHTTP OUTPUTって、意外と使われてないのか、

マニュアルを見たのですが、ちょっと引っかかったので、

備忘録がてら設定晒そうかと。

(fluentd http out の公式マニュアル)

https://docs.fluentd.org/output/http


とりあえず、設定です。

なおバージョンは、1.16.2です。

<source>
  @type forward
  port 24224
</source>
<match **>
  @type http
  endpoint http://host.docker.internal:8080/Store/${tag}
  http_method post 
  json_array false
  open_timeout 3
  read_timeout 3
  retryable_response_codes [503]
  <format>
    @type json
  </format>
  <buffer tag>
    @type file
    path /fluentd/log/transfer/buffer/
    chunk_limit_size 1m
    retry_wait 10s
    retry_max_times 3
    flush_mode interval
    flush_interval 1m
    flush_at_shutdown true
  </buffer>
</match>

endpointに${tag}という変数を使う場合、

bufferに書かないといけないというのがまずつまりました。(必須というのがわからんかった)

あとは、endpointに環境変数とかも使えるのかと思いきや、どうやら使えないようで、

このあたりも同時にハマったポイントでした。

その他、いつのバージョンからか、bufferの書き方もかなり変わっており、

このあたりもマニュアル見つつ、動かしながら確認しました。

fluentdはバージョンアップすると、結構書き方が変わっていたり、

パラメータが変更になっていたりと、なかなか注意が必要です。

とはいえ、相変わらず重宝しているfluentdです。

ちなみに、個人的に作成しているFluentNettingなんてものもあります。

https://www.nuget.org/packages/FluentNetting/

こいつはFORWARD OUPUTを受信するサーバですが、

ヘルスチェックなんかも持っているので、おすすめです。

以上

投稿日時:2024年02月14日 23:51   カテゴリー:fluentd   [コメントがあればどうぞ]

ArmadaSuitさんが、fluentd / fluent-bit にfowardするC#クライアントを作成してくれました。

(Pigeon)

https://www.nuget.org/packages/Pigeon/

シンプルなライブラリではありますが、fluentdの4modeをサポートしています。

そのため、受け手側に合わせて柔軟な変更が対応が可能というものです。

基本的には、MessageModeで十分ですが、FluentNettingのようなリモートのサーバと直通信する場合は、

CompressedPackedForward Modeを使うことで、サイズを圧縮できるなどのメリットがあるかと思います。

ぜひ、FluentNettingと合わせておつかいください。

(FluentNetting)

https://www.nuget.org/packages/FluentNetting/

以上

投稿日時:2022年01月27日 19:12   カテゴリー:c#, fluentd   [コメントがあればどうぞ]

表題のとおり、fluentd / fluent-bitのoutput forwardを受信するC#のサーバライブラリを、

nugetにリリースしました。

(FluentNetting)

https://www.nuget.org/packages/FluentNetting/

これは、javaで作られているinfluentというライブラリをC#に移植したような感じのものです。

(influent)

https://github.com/okumin/influent

※私が作ったのではありません。すばらしいライブラリです。

で、FluentNettingでは、fluentdのv1プロトコルがサポートする4つのmodeに対応しつつ、

hostname / shared_key による認証までを対応しました。

さらにいうと、fluent-bitもテスト済みでございます。

このFluentNettingを使うといいことは、「遅延処理が自由自在」ということです。

アプリケーション → fluend / fluent-bit → FluentNettingを使った受信サーバ

のようにして、fluentd / fluent-bit でバッファリングしておけば特に良いのかなと思います。

メッセージキューイング系を使うのと同じじゃね?と思うかもしれませんが、

fluend / fluent-bit はアプリケーションと同一ホスト(k8sならサイドカー)にする形が多いので、

アプリケーションからの書き込みタイムが少なくできる利点があります。

プラグイン使えば良くない?と思うかもしれませんが、

プラグインはメンテナンスされていないものもあり、

場合によってはアプリケーションエンジニアが柔軟に変更するのが難しいケースがあります。

という事情を踏まえると、

fluentd / fluent-bit は forwardさえやればよく(設定が簡単)、

プラグインに悩まされずにデータを処理できる、

という利点があるのかと感じています。


各言語の対応ライブラリですが、基本的には公式が出しているものを使えば利用できます。

(fluentdのライブラリ)

https://docs.fluentd.org/language-bindings

ただし、確認した限りでは、PHPのライブラリはパーサがデフォルトJSONになっているので、

msgpackに変更する必要があります。

C#については、

(FluentdClient.Sharp)

https://www.nuget.org/packages/FluentdClient.Sharp/

というものがあるのですが、EventTimeがdouble型になっているようで、

fluent-bitではエラーとなってしまうようです。(fluentdでは大丈夫のようです)

各言語とFluentNettingの対応状況は後々確認していこうとおもいます。


最後になりましたが、今回ArmadaSuitさんにパーサ部分に尽力いただきました。

彼のおかげで、今回リリースまでこぎつけられました。感謝です。

その彼が、C#のクライアントライブラリを作成してくれているので、

近々nugetにアップされるのではないかと期待しています。

以上

投稿日時:2022年01月19日 17:57   カテゴリー:c#, fluentd   [コメントがあればどうぞ]