
先ほどの資料を公開しました「サイボウズのサービスを支えるログ基盤」 slideshare.net/ShinyaUeoka/ss… #CybozuMeetup
2017-07-25 19:53:12
オンプレだと Kafka は順当としても、Fluentd で at least once が難しいってなんだろう?Go で自前で書いた理由と実装方法が知りたい twitter.com/ueokande/statu…
2017-07-25 22:17:21
Kafkaへのログ転送 初めはFluentdでKafkaへ転送してたが、 at least onceを満たすことが難しいと判明し転送エージェントをGoで実装とのことらしいけど、詳細が知りたいな。マルチプロセスの管理が面倒になってGoで実装したとかならまだわかるんだけど。
2017-07-26 00:57:41
fluentd で at least once を保証するのが困難と判明というのはどういう話だろ。 / “サイボウズのサービスを支えるログ基盤” htn.to/FUc8g5
2017-07-26 02:54:05
fluentdでExactly onceではなく、At least onceが出来ないってどういう意味なんでしょうね。普通にできるような。何か欠落するパターンが発生した? / “サイボウズのサービスを支えるログ基盤” htn.to/dZ41cF
2017-07-26 06:19:53
Fluentd で at least once が難しい理由が気になる...! / 他2コメント b.hatena.ne.jp/entry/s/www.sl… “サイボウズのサービスを支えるログ基盤” htn.to/urY8yBB
2017-07-26 09:04:29
@NAKANO_Akihito @kimutansk @sonots @wyukawa @hakobera fluentdの件を補足しますと、fluentdのコアはv0.12からat least onceになったけど、プラグインはその保証ができない感じです。
2017-07-26 10:19:59
@NAKANO_Akihito @kimutansk @sonots @wyukawa @hakobera あと、in_tailプラグインが、fluentd死亡時にファイルが2回ローテートされたりするとうまく拾ってくれないことがあります。
2017-07-26 10:21:23
プラグインの実装によってはat-least-onceではない,ってのは確かだが,kafkaプラグインのrequired_acks 1以上かつエラーが起きたときのバッファのretryで問題が起きたってことなんだろうか?それだとバグだと思うから報告して欲しかった……
2017-07-26 10:26:02
@ueokande @NAKANO_Akihito @kimutansk @wyukawa @hakobera あぁ、なるほど。うちだとログファイルを時間つきで出力して(つまりローテートしない)、このプラグインで github.com/civitaspo/flue… 指定ディレクトリ以下のファイルを全部攫うようにして対処してる感じです。
2017-07-26 10:52:33
時間制限つきでファイルを監視するのは昔考えたことあるんだけど,結構要件的にレアなのと,fluentdだけが落ちることってほぼなくて,何か問題があってもすぐ再起動が行われるから,2段階ローテートの問題が起きたことがなかったんだよな
2017-07-26 10:53:46
@ueokande @NAKANO_Akihito @kimutansk @wyukawa @hakobera ここで言っているプラグインって、kafka プラグインのことですか?
2017-07-26 10:57:45
@sonots @NAKANO_Akihito @kimutansk @wyukawa @hakobera out_exec_filterがバッファ溢れしたときに、データを捨てられた気がします
2017-07-26 11:11:06
@ueokande @NAKANO_Akihito @kimutansk @wyukawa @hakobera 溢れた時に捨てるのは、どのバッファプラグインもそうですね。うちでは buffer_queue_limit をめちゃくちゃ大きくして対処するなどしています。see gist.github.com/sonots/02de35a…
2017-07-26 11:33:59
@ueokande @sonots @NAKANO_Akihito @wyukawa @hakobera バッファあふれが発生した場合捨てられないようにするのはfluentdに限らずかなり困難(バッファ数大きめに設定するにしてもディスクの限界以上は割り振れない)だと思うのですが、Goで作成したクライアントの場合、それはどうやって防止しているのでしょうか?
2017-07-26 11:44:18
@kimutansk @sonots @NAKANO_Akihito @wyukawa @hakobera 溢れるようなバッファは存在しないような設計にしてます。ログはファイルのみが対象なので、データはディスク上に永続されています。Kafka側が詰まっても、最後に送ったログの続きから読んで再送するだけです。
2017-07-26 12:49:35
@ueokande @sonots @NAKANO_Akihito @wyukawa @hakobera なるほど。自前ではメタデータだけを保持して、バッファリングはしないことで出力元のアプリケーション自体でディスクをあふれない限りは問題ないという形になるわけでしたか。補足ありがとうございます。
2017-07-26 15:44:58