TailFile 2025.5.31.15

Pacote

org.apache.nifi | nifi-standard-nar

Descrição

Monitora com o comando tail um arquivo, ou uma lista de arquivos, ingerindo dados do arquivo à medida que são gravados no arquivo. Espera-se que o arquivo seja textual. Os dados são ingeridos somente quando uma nova linha é encontrada (retorno de carro ou caractere de nova linha ou combinação). Se o arquivo a ser monitorado com o comando tail for periodicamente “rotacionado”, como geralmente ocorre com os arquivos de log, um Padrão de nome de arquivo rotacionado (Rolling Filename Pattern) opcional poderá ser usado para recuperar dados de arquivos rotacionados, mesmo que o rolamento tenha ocorrido enquanto o NiFi não estava em execução (desde que os dados ainda existam após a reinicialização do NiFi). Em geral, é aconselhável definir Executar cronograma (Run Schedule) para alguns segundos, em vez de executar com o valor padrão de 0 segundos, pois esse processador consumirá muitos recursos se for programado de forma muito agressiva. No momento, esse processador não oferece suporte à ingestão de arquivos que tenham sido compactados quando “rotacionados”.

Tags

file, log, source, tail, text

Requisito de entrada

FORBIDDEN

Oferece suporte a propriedades dinâmicas confidenciais

falso

Propriedades

Propriedade

Descrição

Local do arquivo

Especifica onde o estado está localizado, seja local ou em cluster, para que o estado possa ser armazenado adequadamente a fim de garantir que todos os dados sejam consumidos sem duplicação de dados na reinicialização do NiFi

Arquivo a ser monitorado com o comando tail

Caminho do arquivo a ser monitorado com o comando tail em caso de modo de arquivo único. Se estiver usando o modo de vários arquivos, a expressão regular para localizar os arquivos a serem monitorados com o comando tail no diretório base. Caso a recursividade seja definida como verdadeira, a expressão regular será usada para corresponder ao caminho a partir do diretório base (consulte os detalhes adicionais para obter exemplos).

Posição inicial de partida

Quando o processador começa a monitorar os dados com o comando tail, essa propriedade especifica onde o processador deve começar a ler os dados. Uma vez que os dados tenham sido ingeridos de um arquivo, o processador continuará a partir do último ponto do qual recebeu dados.

Padrão de início de linha

Uma expressão regular para fazer a correspondência com o início de uma linha de log. Se especificado, qualquer linha que corresponda à expressão e todas as linhas seguintes serão armazenadas em buffer até que outra linha corresponda à expressão. Ao fazer isso, podemos evitar a divisão de mensagens de várias linhas no arquivo. Isso pressupõe que os dados estejam no formato UTF-8.

Tamanho máximo do buffer

Ao usar o Padrão de início de linha (Line Start Pattern), pode haver situações em que os dados do arquivo que está sendo monitorado com o comando tail nunca correspondam à expressão regular. Isso faria com que o processador colocasse em buffer todos os dados do arquivo monitorado com o comando tail, o que pode esgotar rapidamente o heap. Para evitar isso, o processador armazenará em buffer somente até essa quantidade de dados antes de liberar o buffer, mesmo que isso signifique ingerir dados parciais do arquivo.

Período de monitoramento com o comando tail após a rotação

Quando um arquivo é rotacionado, o processador continua monitorando o arquivo rotacionado com o comando tail até que ele não tenha sido modificado durante esse período de tempo. Isso permite que outro processo execute a rotação de um arquivo e, em seguida, elimine todos os dados armazenados em buffer. Observe que, quando esse valor é definido e o arquivo monitorado com o comando tail é transferido, o novo arquivo não será transferido até que o arquivo antigo não tenha sido modificado durante o período de tempo configurado. Além disso, ao usar esse recurso, para evitar a duplicação de dados, esse período deve ser definido como mais longo do que o cronograma de execução do processador, e o processador não deve ser interrompido depois que o arquivo que está sendo acompanhado com o comando tail tiver sido rotacionado e antes que os dados tenham sido totalmente consumidos. Caso contrário, os dados podem ser duplicados, pois o arquivo inteiro pode ser gravado como o conteúdo de um único FlowFile.

Padrão de nome de arquivo de rotação

Se o arquivo a ser monitorado com o comando tail “rotacionar”, como seria o caso dos arquivos de registro, esse padrão de nome de arquivo será usado para identificar os arquivos que rotacionaram, de modo que, se o NiFi for reiniciado e o arquivo tiver rotacionado, ele poderá continuar de onde parou. Esse padrão é compatível com os caracteres curinga * e ?, também é compatível com a notação ${filename} para especificar um padrão com base no nome do arquivo (sem extensão) e presumirá que os arquivos rotacionados estejam no mesmo diretório que o arquivo sendo acompanhado com o comando tail. O mesmo padrão glob será usado para todos os arquivos.

pre-allocated-buffer-size

Define a quantidade de memória pré-alocada para cada arquivo monitorado com o comando tail.

reread-on-nul

Se essa opção for definida como “true”, quando um caractere NUL for lido, o processador cederá e tentará ler a mesma parte novamente mais tarde. (Observação: o Adiamento de execução (Yelding) pode atrasar o processamento de outros arquivos acompanhados com o comando tail por esse processador, não apenas aquele com o caractere NUL) O objetivo desse sinalizador é permitir que os usuários lidem com casos em que a leitura de um arquivo possa retornar valores NUL temporários. NFS por exemplo, pode enviar o conteúdo do arquivo fora de ordem. Nesse caso, as peças ausentes são temporariamente substituídas por valores NUL. CAUTION! Se o arquivo contiver valores legítimos de NUL, a configuração desse sinalizador fará com que o processador fique preso indefinidamente. Por esse motivo, os usuários devem abster-se de usar esse recurso se puderem e tentar evitar que o arquivo de destino esteja em um sistema de arquivos em que as leituras não sejam confiáveis.

tail-base-directory

Diretório base usado para procurar arquivos a serem monitorados com o comando tail. Essa propriedade é necessária ao usar o modo Multifile.

tail-mode

Modo a ser usado: Single file (Arquivo único) monitora apenas um arquivo com o comando tail; Multiple files (Múltiplos arquivos) busca uma lista de arquivos. No modo Multiple files, o diretório Base é necessário.

tailfile-lookup-frequency

Usado somente no modo Multiple files. Especifica a duração mínima que o processador aguardará antes de listar novamente os arquivos a serem monitorados com o comando tail.

tailfile-maximum-age

Usado somente no modo Multiple files. Especifica a duração mínima necessária para considerar que nenhuma nova mensagem será anexada a um arquivo em relação à data de sua última modificação. Isso não deve ser definido como muito baixo para evitar a duplicação de dados caso novas mensagens sejam anexadas em uma frequência menor.

tailfile-recursive-lookup

Ao usar o modo Multiple files, essa propriedade define se os arquivos devem ser listados recursivamente ou não no diretório base.

Gerenciamento do estado

Escopos

Descrição

CLUSTER

Armazena o estado de onde parou no Tailed File (Arquivo monitorado com o comando tail) para que, ao reiniciar, não precise duplicar os dados. O estado é armazenado localmente ou em cluster, dependendo da propriedade <File Location>.

LOCAL

Armazena o estado de onde parou no Tailed File (Arquivo monitorado com o comando tail) para que, ao reiniciar, não precise duplicar os dados. O estado é armazenado localmente ou em cluster, dependendo da propriedade <File Location>.

Restrições

Permissão necessária

Explicação

leitura de sistema de arquivos

Fornece ao operador a capacidade de ler a partir de qualquer arquivo ao qual o NiFi tenha acesso.

Relações

Nome

Descrição

success

Todos os FlowFiles são encaminhados para essa relação.

Grava atributos

Nome

Descrição

tailfile.original.path

Caminho do arquivo original de onde vem o FlowFile.