Registrando Logs de execução de fluxos de dados do Apache NiFi com ELK

No post anterior, apresentamos o Apache NiFi e entendemos como é possível integrar aplicações através de fluxos de dados nessa plataforma.

Nesse post, indico como produzir logs de operação do Apache NiFi, registrando falhas e a ocorrência de eventos importantes. Usaremos Elastic Search, LogStach e o Kibana (popularmente conhecido como ELK).

NOTA DO ELEMAR: A autoria desse post é do Tiago Tartari. Eu sou editor.

Subindo o Stack

A escolha do stack ELK é muito apropriada pois viabiliza armazenamento, busca e visualização facilitada de logs. No contexto deste post, estou utilizando a imagem sebp/elk do docker.

docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk sebp/elk

DICA: Se estiver utilizando Docker, aumente os limites de uso de memória. Por alguma razão, o Elastic Search trava se menos que 4Gb estiver disponível.

Após subir o container você poderá acessar o Kibana no endereço http://localhost:5601/

Processors necessários para gerar Log no ELK a partir do NiFi

Para gerar logs, precisamos incluir os seguinte processor nos Process Groups:

DICA: Existem três tipos de processors que podem ser utilizados para adicionar um conteúdo no ElasticSearch. PutElasticsearch para versões 2.x, o PutElasticsearch5 para versões 5.x e o PutElasticsearchHttp que estamos utilizando em nosso exemplo.

Adicionamos dois connectors após o processor do InvokeHttp, um  ligado ao ReplaceText que seguirá o fluxo para gravar o log no ElasticSearch e outro que foi ligado ao JoltTransformJSON para seguir no fluxo do SQL Server.

NOTA: flowfile é o dado que irá se movimentar entre os processors.

Abaixo, demonstro como ficou a conexão entre os processors de log.

O objetivo do log será guardar os dados referente a requisição feita a API do Wikipedia, o id do flowfile, a data e hora, o termo pesquisado, a url, quantas vezes passou pela retentativa e o status code.

Abaixo, exemplo de configuração do ReplaceText seguido do PutElasticSearchHttp.

O código do ReplaceText ficou assim.

{
"type": "info",
"uuid": "${uuid}",
"fileName": "${filename}",
"date": "${Date}",
"term": "${Term}",
"ipClient": "${X-Client-IP}",
"tryCount": ${TryCount},
"statudCode": ${invokehttp.status.code},
"url": "${invokehttp.request.url}"
}

Muito simples de configurar!

Abaixo, visualizamos os logs no Kibana.

Concluindo

Um bom sistema de Logs é fundamental. No NiFi, logar é atividade trivial.

Já consegue perceber oportunidades de integração usando NiFi? Compartilhe suas impressões conosco nos comentários.

Compartilhe este insight:

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Mais insights para o seu negócio

Veja mais alguns estudos e reflexões que podem gerar alguns insights para o seu negócio:

Neste post mostro como implementar um EventBus, utilizando RabbitMQ, em C#. Este código ainda está em desenvolvimento. Em breve, uma...
Gosto bastante da abordagem de Caitie McCaffrey para explicar sagas. Neste post, me inspiro na linha de raciocínio dela para...
Ano passado, Mario Fusco escreveu uma série de posts questionando a forma como programadores Java estão implementando os padrões de projeto definidos...
In these days, performance is a feature! So, you should start, right now, to refactor your code to achieve better...
Tenho realizado uma série de apresentações, em conferências, onde compartilho um pouco das lições que tenho aprendido implementando microsserviços. Abaixo,...
A palestra que ministrei no ano passado, na QCON, sobre compiladores, está disponível online. Fato curioso: Nesse dia, estava com...

Crie sua conta

Preencha os dados para iniciar o seu cadastro no plano anual do Clube de Estudos:

Crie sua conta

Preencha os dados para iniciar o seu cadastro no plano mensal do Clube de Estudos:

× Precisa de ajuda?