web-dev-qa-db-ja.com

Fluentd vs Kafka

ユースケースはこれです:私はいくつかのJava実行中のアプリケーションがすべて異なる(それぞれに特定のターゲットがある)エラスティック検索インデックスと相互作用する必要があります。たとえば、アプリケーションAはインデックスAを使用します。 ElasticSearchのB、Cはクエリと更新を行います。アプリケーションBはインデックスA、C、D(たとえば)を使用します。

これらすべてのデータストリームを管理できるいくつかの共通インターフェイスが必要です。現在私はKafkaとこの目的のために流暢に評価しています。この状況にどちらがより適しているかを誰かが説明できます。私は両方の機能を調べましたKafka =そしてFluentdと私はここでの違いがよくわかりません。どうもありがとうございました。

26
Akshay Arora

kafkaは、分散コミットログとしてパブリッシュ/サブスクライブメッセージを提供します。通常、kafkaを各ホストにインストールし、他の場所に転送するデータを生成する必要があり、それらのすべてのホストがクラスターを形成します。ここでの利点は、何らかの理由でネットワーク接続がが不安定になるかダウンしても、アプリケーションはデータ/ログを生成し続けることができ、ログは失われません。一方、アプリケーションがリモートの集中ログホストにログを直接送信する場合、ネットワークがダウンしている間に一部のログが失われる可能性があります。

fluentdはcentralizedログコレクターであり、通常は1つのホストにインストールされます(水平スケーリングが必要な場合はそれ以上)。 remoteデータソースに接続し、フィルタリングを適用して、統合ログデータをremoteデータシンクに送信します。

Fluentdのドキュメントから、fluentdが kafkaからデータを消費する および kafkaへのデータを生成する もできることがわかります。前者は後者を使用しているため、これだけでは、fluentdとkafkaが異なるレイヤーにあることを示唆しています。

fluentdとlogstashを比較する の方が実際にはより論理的です。 fluentdに関する限り、kafkaは単なる別のデータソースまたはデータシンク、あるいはその両方ですが、それらは完全に異なる獣です。

両方の長所が必要な場合は、kafkaをアプリとの間の入出力データパイプとして使用し、fluentd(またはlogstash)をそれらから読み取る集中ログシステムとして使用するkafkaトピック。

トピックについてさらに読みたい場合は、 fluentdとkafka互いに補完し合う をよく読むことができます。互いに競合していないことを読んでください。

47
Val

差出人: データパイプラインの生命の血

Kafkaは主に、ログデータの移動ではなく、ログデータの保持に関連しています。したがって、KafkaプロデューサーはデータをKafkaに配置するためのコードを記述する必要があり、KafkaコンシューマーはデータをKafkaから取り出すためのコードを記述する必要があります。

Fluentdには、Kafkaの入力プラグインと出力プラグインの両方があるため、データエンジニアがKafkaの内外でデータを取得するためのコードを少なくすることができます。FluentdをKafka生産者および/または消費者。

2
Basil Musa