Kafka と ClickHouse で Vector を使用する
ライセンス
接続情報を確認する
ClickHouse Cloud サービスの詳細は、ClickHouse Cloud コンソールで確認できます。
サービスを選択し、Connect をクリックします。
HTTPS を選択します。接続情報は
curl コマンドの例として表示されます。
セルフマネージド ClickHouse を使用している場合、接続情報は ClickHouse 管理者によって設定されます。
手順
- Kafka の
githubトピックを作成し、GitHub データセットを投入します。
ClickHouse/ClickHouse リポジトリを対象とした 200,000 行で構成されています。
- ターゲットテーブルが作成されていることを確認します。以下ではデフォルトのデータベースを使用します。
- Vector をダウンロードしてインストールします。
kafka.tomlの設定ファイルを作成し、Kafka と ClickHouse の各インスタンスに合わせて値を調整します。
- この例は Confluent Cloud でテストされています。そのため、
sasl.*およびssl.enabledのセキュリティオプションは、セルフマネージド環境には適さない可能性があります。 - 構成パラメータ
bootstrap_serversには、プロトコルのプレフィックスは不要です。例:pkc-2396y.us-east-1.aws.confluent.cloud:9092 - ログソースパラメータ
decoding.codec = "json"を指定すると、メッセージは 1 つの JSONオブジェクトとして ClickHouse sink に渡されます。メッセージを文字列として扱い、デフォルト値のbytesを使用する場合、メッセージの内容はmessageフィールドに追加されます。ほとんどの場合、これは Vector getting started ガイドで説明されているように、ClickHouse 側で処理する必要があります。 - Vector はメッセージに 複数のフィールドを追加します。この例では、構成パラメータ
skip_unknown_fields = trueを使って、ClickHouse sink でこれらのフィールドを無視しています。これにより、ターゲットテーブルのスキーマに含まれないフィールドは無視されます。offsetなどのメタフィールドも含めたい場合は、必要に応じてスキーマを調整してください。 inputsパラメータを使って、sink がイベントログソースを参照している点に注目してください。- ClickHouse sink の動作については、こちら の説明も確認してください。最適なスループットを得るには、
buffer.max_events、batch.timeout_secs、batch.max_bytesの各パラメータを調整するとよいでしょう。ClickHouse の推奨事項によれば、1 回のバッチに含めるイベント数は最低でも 1000 を目安にしてください。継続的に高スループットが見込まれるユースケースでは、buffer.max_eventsパラメータを増やすことを検討してください。スループットの変動が大きい場合は、batch.timeout_secsパラメータの調整が必要になることがあります。 auto_offset_reset = "smallest"パラメータを指定すると、Kafka ログソースはトピックの先頭から読み取りを開始します。これにより、手順 (1) で公開したメッセージを確実に消費できます。必要な動作が異なる場合もあります。詳しくは こちら を参照してください。
- Vector を起動します
VECTOR_LOG=debug を付けます。
- データが挿入されたことを確認します。