Fluentd v11 なんてなかったんだ

7
Sadayuki Furuhashi @frsyuki

@repeatedly @tagomoris @kiyototamura たとえば @taroleo さんをオフィスに呼んで(笑)、適当なお題をfluentdで設定してもらって、「あ、ココ分かりにくくてヤバいな」みたいなのを後ろから観察する…とか?

2014-01-24 14:47:39
Sadayuki Furuhashi @frsyuki

@repeatedly @tagomoris @kiyototamura 初心者ユーザーは貢献するモチベーションも小さいと思うので、どこかで自分がえいやっと決める必要があるとは思います。

2014-01-24 14:48:45
tagomoris @tagomoris

@kiyototamura @frsyuki @repeatedly まあ超ぶっちゃけると「v11なんてなかったんだ、v10を1.0にしてそのまま改良していこう」という線もありだとは思います。細かい非互換性をどこかで少しずつ作りながら改良していくことにはなるでしょうが。

2014-01-24 14:49:07
Kiyoto Tamura @kiyototamura

@frsyuki @repeatedly まあ特筆すべきものはないというのは語弊があるな。どちらかというと「パッとみて分りやすい差別化機能」みたいのがないのかもしれない。これはマーケの問題でもあるのだろうけど。

2014-01-24 14:49:22
tagomoris @tagomoris

@taroleo @frsyuki @kiyototamura @repeatedly それはどっちかというと頻出パターン集みたいなのをさっさとドキュメントサイトに作ろうぜ! みたいな話?

2014-01-24 14:49:39
SKS rep @repeatedly

@tagomoris @frsyuki @kiyototamura 実はv10を1にする案はあります.いくつか機能提案を後でissueでしますが

2014-01-24 14:50:47
Kiyoto Tamura @kiyototamura

@frsyuki @repeatedly たとえばworker機能が入りましたといっても一見さんには通じない。CPUをもっと効率的に使えますみたいに言えば、それは響くと思う。v11のメリットみたいのを、初心者にも分りやすく書き下す必要があるのかも。

2014-01-24 14:51:31
Sadayuki Furuhashi @frsyuki

@tagomoris @repeatedly v10を1.0にするのもアリだと思います。少しずつ改善していく形は無理がない。例えばエラーストリームは、Engine部分の差し替えで実現できる。

2014-01-24 14:51:45
Sadayuki Furuhashi @frsyuki

@tagomoris @repeatedly Actor&SocketManager導入もできると思います。ただlabelとかはフィルタプラグインは、プラグインAPIを変えないと行けない。Engine.emitがグローバルなメソッドなので困る。

2014-01-24 14:52:58
tagomoris @tagomoris

@__yuunyan__ オススメの順に 1. 汎用性がありそうな改良なら既存プラグインにpullreq 2. 既存プラグインをforkしてprivate gem化 or fluentd -p で .rb を読み込み ですね

2014-01-24 14:53:03
SKS rep @repeatedly

v11が登場した当時は,まだ今ほどプラグインもなくて,半分以上がモリスさんとかyoshi_kenさんで埋められていたのでえいやと互換性を導入すればいいやという話だったんだけど,今だともう少し違うアプローチがある気はする

2014-01-24 14:53:32
tagomoris @tagomoris

@frsyuki @repeatedly Engine 自体を互換性レイヤをもった何かに差し替える、とかはできるんじゃないかなー。どうすかね。

2014-01-24 14:53:46
Sadayuki Furuhashi @frsyuki

@tagomoris @repeatedly Engineを差し替えるのは普通にできて、エラーストリームとか入れられると思います。あとフィルタプラグイン(ネストしたmatch)は、Configurableにユーティリティメソッド追加する形でできるかも。

2014-01-24 14:55:26
SKS rep @repeatedly

log_level機能をv10に実装することで,グローバルな状態に依存したAPIをメソッドに置き換える負荷を計る,とか

2014-01-24 14:55:50
Sadayuki Furuhashi @frsyuki

@frsyuki ここで言っているのは、フィルタプラグインは自分がフィルタプラグインであることが分かっているはずなので(当然)、フィルタプラグインだけはEngine.emitは使えなくて event_router.emitを使ってね、ということにできるということ

2014-01-24 14:56:13
Sadayuki Furuhashi @frsyuki

@repeatedly それはナイス。v11に移行しよう!じゃなくて、$logはやめてlog_levelを使えるようにしよう!という細かい問題にするわけですよね。ナイスアイディア。

2014-01-24 14:57:03
SKS rep @repeatedly

@frsyuki log_levelを指定した時に,Fluentdがそれを実装しているかどうかチェックすればいいので,既存プラグインはそのまま$logを使い続けられるし,Engine.emit周りも同じ方法で移行は出来る気がしている

2014-01-24 14:58:44
SKS rep @repeatedly

プラグイン作る人はちょっとマイナーバージョンを上げる必要があるけど,まぁEngine.emit周りと$log周りの変更であれば,まぁ多少は大丈夫な気がする.

2014-01-24 15:00:39
Sadayuki Furuhashi @frsyuki

@repeatedly $logが使い続けられるのは良いですね。Engine.emitも実は、指定されたlabelに直接emitしたいinputプラグインか、ネストした<match>を持つフィルタ系outputプラグインにのみ必要なので、

2014-01-24 15:00:44
Sadayuki Furuhashi @frsyuki

@repeatedly そういうプラグインを書きたい人は新API使ってね!ってことですよね。良いアイディアだと思います。to_labelオプションをサポートするためのMixinモジュールとか用意しても良いかもです。

2014-01-24 15:01:19
SKS rep @repeatedly

@frsyuki yes.td-agentは基本的に新しめのfluentdを使うので,td-agent使っているユーザは基本的に問題ないはず

2014-01-24 15:02:10
Sadayuki Furuhashi @frsyuki

@repeatedly マイナーバージョン上げるのと、fluentdの依存バージョンをgemspecで上げる必要がありますね。それくらいはやってもらえるでしょう。

2014-01-24 15:02:42
SKS rep @repeatedly

ちょっとv11の機能のいくつかをv10にマージするプランを考えよう

2014-01-24 15:04:10
SKS rep @repeatedly

いくつかをマージしたらv1にしてリリースしたい

2014-01-24 15:04:29