@repeatedly
v0.14.0 2016/05/31
- API刷新
- 時間のナノ秒対応
- Windows
API
- Input/Output pluginのAPI
- 終了時にうまくシャットダウン出来ない
- バッファ
- APIの追加/削除
- bufferAPIについて刷新を行ったのでそのあたりは互換性がない
- v0.12 pluginのAPIはほぼ互換性がある
- かなり無理なハックをやっている場合はこの限りではない
v0.12 buffer design
- bufferのchunkは1つのキーに対して保存していた
- 値がなかったらキーだけ
- ESまわりで問題点
- 一つのチャンクに全部のレコードを突っ込み、そのあと解体する
- 1つのチャンクのなかに10レコード入っていたら、途中でエラーが走ったら全部失敗する
- リトライすると重複が起こる
- 一つのチャンクに全部のレコードを突っ込み、そのあと解体する
v0.14 buffer design
- chunkを持つときにメタデータを利用し、データの保存を柔軟化
- メタデータごとにチャンクを保存する
- レコードとチャンクが完全分離したのでリトライしても重複が起きない
Plugin Storage
- Plugin開発者向け
- 状態を持ったままリスタートできる(KVS)
個別に実装されていたのをFluentdに取り込んだ
input/parser/filter/buffer/output/formatter
- input/parser/filter/buffer/output/formatter + helper/storage
ナノ秒対応
- 時間の最小は秒単位
- コンマ秒レベルでも全て同じ秒として視認
- ESとかかなりしんどい
- Fluentdで対応
- ミリ秒ナノ秒で揉めたけどGoogleとかはナノ秒に対応しているのでこちらもナノ秒で
- Integerっぽく振る舞う(多少プラグインの書き換えが必要になるかも)
- 既存のエコシステムが壊れることはないけどバグがあったらIssueを投げて
ServerEngine based Superviser
- 独自のモデルを使っていたのを、サーバエンジンをリプレイス
- 社内で開発したRubyのworkerとかのノウハウを利用
- より安定に
Windows Support
- Linuxで特化した実装をクロスプラットフォームで
- シグナルでBuffer FlushしていたけどWindowsは使えないので、HTTP RPCを利用
v0.14.x→v1
今後やりたいこと(v1)
- fluentd issue 1000を見よ
- version1を出すけど破壊的な新機能やAPIを壊すことはない
- でもリリースした後に「そんなの聞いてないよ」って言われても困るので今のうちにフィードバックを出すこと
detatch_process関係は消したい(要望はあるけどKinesisとかで使っているユーザーがいるので良い方法が見つかれば)
マルチコアサポート
- FluentdのうえでさらにFluentdを動かす→ マルチコア化
- 立てた分だけポートを分ける必要があって、運用負荷が爆上がりする
- supervisorを利用して、TCPを使ってworkerでシェアできる技術→パフォーマンス向上
- バッファごとのメトリクス問題の解決→counter API
- 統計的な値も取れる
TLS/Authn/Authz
- セキュアフォワードとフォワードの使い分け
ベンチマーク
- CPUの使用率が0.12より若干上がっている……(秒間10万行)
- in_tail/out_forward 66%→70%
- Busyなサーバでバージョンを上げると死ぬ
- in_forward/flowcounter_simple 変わらず11%
- in_forward/tdlog 38%→43%
- in_tail/out_forward 66%→70%
- でもまだまだオプティマイズする箇所があるから乞うご期待
Treasure Agent 3.0
- td-agent2系ではfluentd v0.14は入らない
- Ruby 2.3
- CentOS 5とかUbuntu 10.04とかはサポートから外すので自前でビルドして。
- リリース日は未定