Fluentd + Elasticsearch + Kibana

Algum tempo atrás escutei um amigo que foi ao Fisl desse ano falar que ficou impressionado com uma apresentação sobre fluentd. Ele até distribuiu o link com video da apresentação(que eu não achei tão boa assim, mas isso é um detalhe. hehehe).

Para sorte desse tutorial comecei a pesquisar sobre a ferramenta antes de ver o video e foi assim que realmente me convenci que era boa. Fluentd é nada mais do que um coletor de dados, a ideia aqui é unificar a coleta para facilitar o entendimento depois.

Percebi que a ferramenta mais conhecida nesse meio é o logstash, até encontrei alguns reviews comparando ele com o fluent. Não achei nada relevante, comum ler que o fluentd possui mais performance e o logstash tem uma interação melhor com sistemas operacionais Windows.


O desenho acima indica exatamente o que vamos montar, fluentd encarregado de alimentar o elasticsearch com logs e o papel do Kibana nesse ambiente é apenas exibir informações contidas no elasticsearch de forma muito fácil com uma interface incrivelmente amigável.

É um pré-requisito para que você tenha sucesso com o tutorial que o java da maquina onde vai instalar esteja na versão igual ou superior a 1.6.0.45. Para verificar use o comando:
java -version
Testei essa solução em algumas distribuições, acho que vi o elasticsearch no repositório de alguma distribuição, não tenho certeza. De qualquer forma em todas usei a versão 0.90.0.RC2. Para baixar essa versão use o link abaixo:
curl -O https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.0.RC2.tar.gz 
Baixou? Então extraia o .tar.gz e vamos configurar.
tar xvvf elasticsearch-0.90.0.RC2.tar.gz
Dentro da pasta config existe um arquivo chamado elasticsearch.yml, vamos descomentar a linha network.bind_hosts e por o endereço ip da maquina.
vim config/elasticsearch.yml
Por enquanto vamos deixar o elasticsearch desligado e vamos baixar o kibana.
curl -O https://download.elasticsearch.org/kibana/kibana/kibana-3.0.0milestone5.tar.gz
Assim que o download estiver concluído, extraia o .tar.gz e vamos editar o config.js para indicar o ip e porta do elasticsearch. O nome do campo é elasticsearch não tem erro.
vim kibana-3.0.0milestone5/config.js

Vamos em frente, agora precisamos instalar o Fluentd, e é aqui que preciso que você execute um script correspondente com a sua distribuição. Esse script vai adicionar um repositório ao linux e baixar um pacote chamado td-agent. Abaixo, vou deixar um exemplo da url que usei no debian jessie.
curl -L https://td-toolbelt.herokuapp.com/sh/install-debian-jessie-td-agent2.sh | sh

Obs: No Ubuntu esse script funcionou perfeitamente, já no debian eu precisei remover o sudo e rodar o script como root, em caso de duvidas veja o video desse post.

Para que o fluentd consiga interagir corretamente com o elasticsearch é necessário obter um plugin de nome: fluent-plugin-elasticsearch, execute o comando abaixo para baixa-lo.
/usr/sbin/td-agent-gem install fluent-plugin-elasticsearch
Feito? Então agora edite o arquivo td-agent.conf e deixe ele exatamente assim:
<source>
  type syslog
  port 42185
  tag syslog
</source>
<source>
  type forward
</source>
<match syslog.**>
  type elasticsearch
  logstash_format true
  flush_interval 10s # for testing
</match>
Agora inicie o serviço do fluentd.
/etc/init.d/td-agent start
Nosso objetivo aqui sempre foi ler os logs do linux, então vamos editar o rsyslog.conf e apontar que agora ele vai servir logs ao fluentd.
vim /etc/rsyslog
Na ultima linha do arquivo escreva:
*.* @IP_DO_FLUENTD:42185
Reinicie o rsyslog e vamos iniciar o elasticsearch.
/etc/init.d/rsyslog restart
Para iniciar o elasticsearch acesse a pasta que você baixou e extraiu no inicio desse tutorial, vai existir uma subpasta de nome: bin. De dentro desta pasta execute:
sh elasticsearch -f&
Para tudo ficar perfeito, vamos precisar de um webserver, qualquer um e eu escolhi o nginx para me ajudar nessa causa. Instale um webserver no seu servidor e aponte para ler a pasta do kibana. No video que está nesse post tem um passo a passo.

Segue abaixo um printscreen do meu kibana de teste


Postagens mais visitadas deste blog

Lab com video, RTSP e Kubernetes

MySQL Cluster

Auditoria de compartilhamento Samba