Skip to main content

Usando o Vector com Kafka e ClickHouse

O Vector é um pipeline de dados agnóstico a fornecedores, capaz de ler do Kafka e enviar eventos ao ClickHouse. Um guia de primeiros passos para usar o Vector com o ClickHouse se concentra no caso de uso de logs e na leitura de eventos de um arquivo. Utilizamos o dataset de exemplo do GitHub, com eventos armazenados em um tópico do Kafka. O Vector utiliza fontes para recuperar dados por meio de um modelo de envio ou extração. Já os sinks fornecem um destino para os eventos. Portanto, utilizamos a fonte Kafka e o sink do ClickHouse. Observe que, embora o Kafka tenha suporte como sink, não há uma fonte do ClickHouse disponível. Como resultado, o Vector não é apropriado se você quiser transferir dados do ClickHouse para o Kafka. O Vector também oferece suporte à transformação de dados. Isso está fora do escopo deste guia. Caso precise desse recurso para seu dataset, consulte a documentação do Vector. Observe que a implementação atual do sink do ClickHouse utiliza a interface HTTP. No momento, o sink do ClickHouse não oferece suporte ao uso de um esquema JSON. Os dados devem ser publicados no Kafka em JSON simples ou como Strings.

Licença

O Vector é distribuído sob a licença MPL-2.0

Reúna os detalhes da conexão

Para se conectar ao ClickHouse via HTTP(S), você precisa das seguintes informações: Os detalhes do seu serviço do ClickHouse Cloud estão disponíveis no console do ClickHouse Cloud. Selecione um serviço e clique em Connect:
botão Connect do serviço do ClickHouse Cloud
Escolha HTTPS. Os detalhes de conexão são exibidos em um comando curl de exemplo.
detalhes de conexão HTTPS do ClickHouse Cloud
Se você estiver usando ClickHouse autogerenciado, os detalhes de conexão são definidos pelo administrador do seu ClickHouse.

Etapas

  1. Crie o tópico github no Kafka e insira o dataset do GitHub.
Este conjunto de dados contém 200.000 linhas focadas no repositório ClickHouse/ClickHouse.
  1. Certifique-se de que a tabela de destino foi criada. Abaixo, usamos o banco de dados padrão.
  1. Baixe e instale o Vector. Crie um arquivo de configuração kafka.toml e ajuste os valores das suas instâncias do Kafka e do ClickHouse.
Algumas observações importantes sobre esta configuração e o comportamento do Vector:
  • Este exemplo foi testado no Confluent Cloud. Portanto, as opções de segurança sasl.* e ssl.enabled podem não ser adequadas em ambientes autogerenciados.
  • Não é necessário informar um prefixo de protocolo para o parâmetro de configuração bootstrap_servers, por exemplo pkc-2396y.us-east-1.aws.confluent.cloud:9092
  • O parâmetro da fonte decoding.codec = "json" garante que a mensagem seja passada ao sink do ClickHouse como um único objeto JSON. Ao tratar mensagens como strings e usar o valor padrão bytes, o conteúdo da mensagem será anexado ao campo message. Na maioria dos casos, isso exigirá processamento no ClickHouse, conforme descrito no guia Primeiros passos com o Vector.
  • O Vector adiciona vários campos às mensagens. No nosso exemplo, ignoramos esses campos no sink do ClickHouse por meio do parâmetro de configuração skip_unknown_fields = true. Isso ignora campos que não fazem parte do esquema da tabela de destino. Se quiser, ajuste seu esquema para garantir que esses metacampos, como offset, sejam adicionados.
  • Observe como o sink faz referência à fonte de eventos por meio do parâmetro inputs.
  • Observe o comportamento do sink do ClickHouse, conforme descrito aqui. Para obter vazão ideal, talvez seja interessante ajustar os parâmetros buffer.max_events, batch.timeout_secs e batch.max_bytes. Conforme as recomendações do ClickHouse, um valor de 1000 deve ser considerado o mínimo para o número de eventos em um único batch. Para casos de uso com alta vazão uniforme, você pode aumentar o parâmetro buffer.max_events. Vazões mais variáveis podem exigir alterações no parâmetro batch.timeout_secs
  • O parâmetro auto_offset_reset = "smallest" força a fonte do Kafka a começar no início do tópico, garantindo assim que consumamos as mensagens publicadas na etapa (1). Talvez você precise de um comportamento diferente. Veja aqui para mais detalhes.
  1. Inicie o Vector
Por padrão, uma verificação de integridade é necessária antes de iniciar as inserções no ClickHouse. Isso garante que a conectividade possa ser estabelecida e que o esquema possa ser lido. Adicione VECTOR_LOG=debug no início para obter logs adicionais, o que pode ser útil caso você encontre problemas.
  1. Confirme a inserção dos dados.
Última modificação em 23 de julho de 2026