Todos os produtos
Search
Central de documentação

DataHub:Plug-in do Fluentd

Última atualização: Jun 28, 2026

Plug-in do Fluentd

Introdução ao produto

Este plug-in de saída do Fluentd grava dados coletados no DataHub. Ele segue os padrões de desenvolvimento de plug-ins de saída do Fluentd e oferece instalação simplificada.

Instalação do produto

Instalar usando RubyGems

Nota: Recomendamos alterar a fonte do RubyGems para https://gems.ruby-china.com.

gem install fluent-plugin-datahub

Instalação local

  1. O Fluentd roda apenas em ambiente Linux e exige a instalação do Ruby.

  2. Há dois modos de instalação disponíveis. Se você ainda não instalou o Fluentd, use o modo de instalação com um clique para instalar tanto o Fluentd quanto o plug-in do DataHub. Caso já tenha instalado o Fluentd, utilize o modo de instalação independente para instalar apenas o plug-in de gravação do DataHub.

1) Instalação com um clique: Se você ainda não instalou o Fluentd, baixe o pacote completo de instalação do Fluentd. Nota: O pacote completo de instalação inclui a versão fluentd-0.12.25.gem do Fluentd.

$ tar -xzvf fluentd-with-datahub-0.12.25.tar.gz
$ cd fluentd-with-datahub
$ sudo sh install.sh

2) Instalação independente: Caso já tenha o Fluentd instalado, baixe o pacote do plug-in DataHub para Fluentd. Use o comando gem para instalar o plug-in do DataHub.

$ sudo gem install --local fluent-plugin-datahub-0.12.25.gem

Casos de uso

Caso de uso 1: Carregar um arquivo CSV

O exemplo a seguir mostra como carregar arquivos CSV incrementais para o DataHub em tempo quase real. O arquivo CSV tem o seguinte formato:

0,qe614c760fuk8judu01tn5x055rpt1,true,100.1,14321111111
1,znv1py74o8ynn87k66o32ao4x875wi,true,100.1,14321111111
2,7nm0mtpgo1q0ubuljjjx9b000ybltl,true,100.1,14321111111
3,10t0n6pvonnan16279w848ukko5f6l,true,100.1,14321111111
4,0ub584kw88s6dczd0mta7itmta10jo,true,100.1,14321111111
5,1ltfpf0jt7fhvf0oy4lo8m3z62c940,true,100.1,14321111111
6,zpqsfxqy9379lmcehd7q8kftntrozb,true,100.1,14321111111
7,ce1ga9aln346xcj761c3iytshyzuxg,true,100.1,14321111111
8,k5j2id9a0ko90cykl40s6ojq6gruyi,true,100.1,14321111111
9,ns2zcx9bdip5y0aqd1tdicf7bkdmsm,true,100.1,14321111111
10,54rs9cm1xau2fk66pzyz62tf9tsse4,true,100.1,14321111111

Cada linha representa um registro com campos distintos. O arquivo está salvo no caminho local /temp/test.csv. O tópico do DataHub tem o seguinte esquema:

Nome do campo

Tipo do campo

id

BIGINT

name

STRING

gender

BOOLEAN

salary

DOUBLE

my_time

TIMESTAMP

Adicione a seguinte configuração do Fluentd ao arquivo ${CONFIG_HOME}/fluentd_test.conf:

<source>
  @type tail
  path your_file_path
  tag test1
  format csv
  keys id,name,gender,salary,my_time
</source>
<match test1>
  @type datahub
  access_id your_app_id
  access_key your_app_key
  endpoint http://ip:port
  project_name test_project
  topic_name fluentd_performance_test_1
  column_names ["id", "name", "gender", "salary", "my_time"]
  flush_interval 1s
  buffer_chunk_limit 3m
  buffer_queue_limit 128
  dirty_data_continue true
  dirty_data_file path_to_dirty_data_file
  retry_times 3
  put_data_batch_size 1000
</match>

Execute o comando a seguir para iniciar o Fluentd e enviar dados do arquivo CSV para o DataHub:

${FLUENTD_HOME}/fluentd-with-dataHub/bin/fluentd -c ${CONFIG_HOME}/fluentd_test.conf

Caso de uso 2: Coletar logs do Log4j

Os logs do Log4j têm o seguinte formato:

11:48:43.439 [qtp1847995714-17] INFO  AuditInterceptor - [c2un5sh7cu52ek6am1ui1m5h] end /web/v1/project/tefe4mfurtix9kwwyrvfqd0m/node/0m0169kapshvgc3ujskwkk8g/health GET, 4061 ms

Use a seguinte configuração do Fluentd:

 <source>
   @type tail
   path bayes.log
   tag test
   format /(?<request_time>\d\d:\d\d:\d\d.\d+)\s+\[(?<thread_id>[\w\-]+)\]\s+(?<log_level>\w+)\s+(?<class>\w+)\s+-\s+\[(?<request_id>\w+)\]\s+(?<detail>.+)/
 </source>
 <match test>
   @type datahub
   access_id your_access_id
   access_key your_access_key
   endpoint http://ip:port
   project_name test_project
   topic_name dataHub_fluentd_out_1
   column_names ["thread_id", "log_level", "class"]
 </match>

Inicie o Fluentd com essa configuração para enviar logs do Log4j ao DataHub.

Parâmetros de configuração

Input plugin configuration
tag test1                          : Specifies the route. The route is matched against the <match> regular expression.
format csv                         : Collects data in CSV format.
keys id,name,gender,salary,my_time : Specifies the columns to collect. The column names must match the column names in the destination DataHub table.
Output plugin configuration
shard_id 0               : Specifies the shard ID to write to. By default, data is written in a round-robin manner.
shard_keys ["id"]         : Specifies the partition key. The key value is hashed to determine the index of the shard to write to.
flush_interval 1         : Fluentd writes data at least once per second. The default is 60s.
buffer_chunk_limit 3m    : The chunk size. Supports "k" (KB) and "m" (MB). The recommended value is 3m.
buffer_queue_limit 128   : The chunk queue size. This value and buffer_chunk_limit determine the total buffer size.
put_data_batch_size 1000 : Writes data to DataHub for every 1,000 records.
retry_times 3            : The number of retries.
retry_interval  3        : The retry interval in seconds.
dirty_data_continue true : Specifies whether to continue when dirty data is encountered. If set to true, Fluentd retries. After all retries are exhausted, the dirty data is written to a dirty data file.
dirty_data_file /xxx/yyy : Specifies the path to the dirty data file.
column_names ["id"]      : Specifies the columns to collect.

Teste de desempenho

Ambiente de teste: O Fluentd rodou em um sistema Linux com 2 núcleos e 4 GB de memória. Os resultados do teste de desempenho foram:

  1. Para registros únicos de 512 B, a velocidade de gravação foi de aproximadamente 2.800 registros/s.

  2. Aumentar o put_data_batch_size melhorou ligeiramente a velocidade, mas o efeito não foi significativo.

  3. Para registros únicos de 100 KB, o plug-in funcionou apenas quando put_data_batch_size foi definido como 100. Valores de 500 e 1.000 falharam porque o tamanho dos dados em uma única operação de gravação excedeu 50 MB.

  4. A velocidade média total de gravação foi de 3 MB/s.Perguntas frequentes

    P: Como escrevo uma expressão regular para o parâmetro format no Fluentd? R: Use este editor online de expressões regulares.