5

クイックスタート チュートリアルから Apache Kafka を学習しています: http://kafka.apache.org/documentation.html#quickstart。これまで、次のようにセットアップを行ってきました。Web サーバーがポート 8888 で実行されているプロデューサー ノード。 別のノード上の Kafka サーバー (ブローカー)、コンシューマーおよび Zookeeper インスタンス。また、デフォルトのコンソール/ファイル対応のプロデューサーとコンシューマーを 3 つのパーティションでテストしました。セットアップは完璧で、送信したメッセージを作成した順序で (各パーティションで) 見ることができます。

ここで、Web サーバーから生成されたログを Kafka Broker に送信したいと考えています。これらのメッセージは、後でコンシューマーによって処理されます。現在、syslog-ng を使用してサーバー ログをテキスト ファイルにキャプチャしています。ログ集計に kafka を使用するためにプロデューサーを実装する方法について、3 つの大まかなアイデアを思いつきました。

プロデューサーの実装

第 1 種: syslog-ng の tcp ポートをリッスンします。各メッセージを取得し、kafka サーバーに送信します。ここには 2 つの中間プロセスがあります: Producer と syslog-ng
2 番目の種類: syslog-ng を Producer として使用します。ファイルに書き込む代わりに、メッセージを Kafka サーバーに送信する方法を見つける必要があります。Syslog-ng、プロデューサーは中間プロセスです。
3 番目の種類: Web サーバー自体をプロデューサーとして構成します。

私の考えは正しいですか。最後のケースでは、中間プロセスはありません。しかし、その実装がサーバーのパフォーマンスに影響を与えるとは思えません。Apache Kafka を使用する最善の方法 (上記の 3 つが適切でない場合) を教えてくれ、サーバーの適切な構成を案内してくれますか?..

PS: Web サーバーに node.js を使用しています

ありがとう、
サラス

4

1 に答える 1

2

生成されたログを kafka ブローカーに送信するように指定しているため、実際には、メッセージをリッスンして再送信するプロセスを実行すると、主に追加の価値のない別の障害点が作成されるように見えます (特定の syslog-ng 機能が必要でない限り)。

Syslog-ng は、 http ://www.balabit.com/sites/default/files/documents/syslog-ng-ose-3.4-guides/en/syslog-ng-ose-v3.4 を使用して外部アプリケーションにメッセージを送信できます 。 -guide-admin/html/configuring-destinations-program.html . それを行う他の方法があるかどうかはわかりません。

3 番目のオプションについては、kafka を Node.js に簡単に統合できるかどうかはわかりません。これには c++ プロデューサーが必要であり、最後に探したときに見つけることができませんでした。ただし、簡単な代替手段として、サーバーによって作成されたログ ファイルを kafka に読み取らせ、それらのログを送信させることができます (kafka で提供されるコンソール プロデューサーを使用)。これは、kafka と Web サーバーの間の依存関係を完全に削除するため、通常は良い方法です (プロデューサーを埋め込むには、エラー処理、構成などが必要になります)。tail --follow を使用する必要があり、非常にうまく機能します。詳細を希望される場合は、それらも含めることができます。それでも、メッセージが失われないように kafka の実行を監視する必要があります (また、失敗したメッセージをオフラインで送信するための回復オプションを提供します)。しかし、

それが役に立てば幸い...

エラン

于 2013-09-17T14:52:13.957 に答える