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:

Em todos esses anos tenho recebido relatos de desenvolvedores projetando sistemas com belas arquiteturas. Muitos deles tem levantado um bocado de questões...
Nessa semana, em uma dessas conversas que valem a pena, surgiu uma breve discussão sobre um texto antigo de Rubem...
Dando continuidade a uma jornada iniciada há mais de 20 anos, comunico a fundação da Eximia! Trata-se de uma empresa...
In the first post of this series, I explained how to produce an inverted index using C#. In the second...
Neste post, vou compartilhar como dar os primeiros passos com OpenCV, rapidamente, usando Visual Studio 2017 e VcPkg. O que...
Sometimes it is not enough to know if two strings are equals or not. Instead, we need to get an...
Oferta de pré-venda!

Mentoria em
Arquitetura de Software

Práticas, padrões & técnicas para Arquitetura de Software, de maneira efetiva, com base em cenários reais para profissionais envolvidos no projeto e implantação de software.

× Precisa de ajuda?