生涯未熟

生涯未熟

プログラミングをちょこちょこと。

fluent-plugin-kafkaを使ってkafka streamsでアレコレするのはまだ出来ないよという話

最近、Apache財団に囲まれながらアレコレやってる私です。

今回はfluentdのkafkaプラグインであるfluent-plugin-kafkaを使って、kafka streamsが出来なかったお話をば。

何をしたかったのか

fluentdでログを監視しつつ、変更があればfluent-plugin-kafkaを使いkafka brokerへログ内容をメッセージとして飛ばす。
そして、kafka streamsでメッセージを加工し、改めてログとして保存するということを実現しようとしていました。

一体何が起こったのか

実際に、この構成で組んでみたのですがkafka streamsを動かしてみるとエラーが発生しました。

ふむふむ🤔 一旦このメッセージを検索にかけてみるとこのような記事が。

FAQ — Confluent Platform 3.3.0 documentation

英語苦手なので物凄く斜め読みすると、「メッセージのタイムスタンプが適した形になってない」ってことですかね。

で、v0.10の形に沿ったタイムスタンプを送れていると、このエラーは出なくなるという。

ここでふと思ったのは、「fluent-plugin-kafkaが依存しているurby-kafkaはv0.10対応出来ているのか?」ってことでした。
とりあえずISSUEを探ってみることに。

Timestamp support for Kafka 0.10.2.0 · Issue #331 · zendesk/ruby-kafka · GitHub

ふむー、これを見る限りはv0.5.0betaで対応はされてますね・・・
・・・ん?beta・・・?

さて、ここでfluent-plugin-kafkaのgemspecを見てみましょう。

えーっと・・・ruby-kafkaのバージョンは・・・

v0.4.0!!!!!

というわけで、多分fluentdのプラグイン側では、ruby-kafkaがまだbetaなこともあってバージョン上げてないんでしょうね。
v0.5.0のstableが出るまでは、fluent-plugin-kafkaを使ってまだkafka streamsは使えない様子、ガックシ。