読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

memo: v0.14 Overview #fluentdmeetup

Fluentd

@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%
  • でもまだまだオプティマイズする箇所があるから乞うご期待

Treasure Agent 3.0

  • td-agent2系ではfluentd v0.14は入らない
  • Ruby 2.3
  • CentOS 5とかUbuntu 10.04とかはサポートから外すので自前でビルドして。
  • リリース日は未定