Essa é a parte mais legal na minha opinião, pois aqui é que a mágica acontece!
Para configurar o logstash, iremo acessar o diretório "./logstash" do repositório e abrir o arquivo "logstash.conf". Você vai ter algo como isso aqui:
Podemos dividir essa configuração em 3 partes:
input,
filter e
output.
Input
É a parte responsável pela entrada de dados, ali em nosso conf estamos dizendo que o input será o filebeat, tudo que entrar pela porta 5044 vai passar por ai, para depois cair no filter, para ser filtrado, como o próprio nome já diz. Uma dica legal quando for fazer o uso do filebeat remotamente é configurar além da porta o host, assim não sera qualquer um que poderá lhe enviar dados. Por exemplo:
input {
beats {
host => "xxx.xxx.xxx.xxx",
host => "yyy.yyy.yyy.yyy",
port => 5044
}
}
Neste caso só os hosts declarados acima poderiam injetar dados no Logstash, se um host "zzz.zzz.zzz.zzz" tentasse ele não teria sucesso. Outro modo de se fazer isso é ssl/tls!
Filter
Nessa parte tudo vai depender do motivo pelo qual você está tentando utilizar sua aplicação, no meu caso, vou utilizar a configuração da imagem porque esse é um dos modos mais fáceis de tratar um .csv, dividir ele em colunas, lembrando que será isso que vai aparecer no meu kibana.
Na linha 8 estou dizendo que se o type que eu declarei lá no filebeat for = "csv" ele vai filtrar daquele modo! Caso eu tivesse analisando também dados de um nginx por exemplo, eu teria que fazer um "if" para ele e passar de que modo eu gostaria de filtrar os dados do nginx. Claramente estou usando o plugin csv do logstash.
A nível de produção estou usando uns 5 plugins só para este type, lembrando que existem dezenas de plugins (isso senão centenas!). Certo, digamos que nosso log esteja no .csv, e ele está dividido em colunas, como por exemplo: "origem", "receptor", "data", "status"... O log seria mais ou menos assim: "uriel@vivaolinux.com.br - adm@vivalinux.com.br - 30.09,16 - 'enviado com sucessso'....".
Em nosso filtro estou dividindo por colunas: "coluna1", "coluna3", "coluna4", "coluna5", "coluna6", "coluna7" que eu poderia ter nomeado como os dados do próprio .csv, "origem", "receptor", "data", "status"... Mas como disponibilizei o repositório para todos, este modo fica mais visível.
output
A saída é visivelmente o elasticsearc que será o responsável por armazenar estes dados depois de filtrados.
Após configurar isso, terminamos, não é necessário configurarmos o kibana e o elasticsearch, pois as imagens que vamos usar, tem configuração padrão, basta sair do arquivo, e executar o comando:
# docker-compose up -d
e ele vai subir os containers.
Agora basta acessar o ip do seu host e a porta do kibana, exemplo: "111.111.111.111:5601".
Basta acessar, configurar um índice, e analisar seus dados.
Na próxima página vou mostrar algumas dashboards e visualizations.