Container Elastic Stack para visualização de logs do Proxy Squid
Compartilho neste artigo a minha primeira experiência com o projeto Open Source Elastic Stack, um conjunto de ferramentas para coleta, tratamento e exibição de logs. Demonstrarei como utilizei o Elastic Stack para coletar, tratar e apresentar os logs de acesso do Squid.
Parte 4: Visualizando os logs no Kibana
Agora visualizaremos, através do Kibana, os logs do Squid indexados no Elasticsearch.
Acesse a interface web do Kibana e clique no menu "Discover". Conforme Figura 7, o Kibana o avisará de que ainda não foi definido um "index pattern". O Kibana precisa que, ao menos, um "index pattern" seja configurado para que possa identificar em qual índice do Elasticsearch serão executadas as consultas e análises. Neste caso, como sabemos que os índices que serão criados no Elasticsearch terão o prefixo "filebeat-", digitaremos filebeat-* no campo "Index name or pattern". Após digitar, aguarde cerca de 3 segundos para que o Kibana atualize o campo "Time-field name" com o valor "@timestamp" e então clique no botão "Create" (Figura 8): Com isso, clicando novamente no menu "Discover", você visualizará os "documents" indexados no Elasticsearch. Perceba que cada "document" possui os campos mapeados pelo Logstash através do plugin "grok" e também os campos de geolocalização criados pelo plugin "geoip" (Figura 9). A partir daí, o Kibana nos permitirá gerar visualizações e dashboards para exibição das informações coletadas dos logs de acesso do Squid.
Pode-se observar na Figura 10 o menu "Visualize", que permitirá criar visões como gráficos, tabelas, mapas etc: Ao clicar em "Create a visualization" você deverá escolher o tipo de visão que irá criar (Figura 11):
Após selecionar o tipo de visão, selecione o índice do qual as informações serão extraídas (Figura 12): Pode-se observar na Figura 13, que os campos extraídos dos logs de acesso do Squid e indexados no Elasticsearch estão disponíveis para utilização nas visões: Após criar as visões, você poderá juntá-las em uma só tela criando um dashboard. Para criar um dashboard, clique no menu "Dashboard" e depois em "Create a dashboard" (Figura 14): E por fim, você terá um dashboard exibindo as visões adicionadas ao mesmo (Figura 15): Caso você queira utilizar o dashboard de exemplo que criei na Figura 15, faça download dos arquivos de configuração das visões e do dashboard, clique no menu "Management" e depois em "Saved Objects" (Figura 16): Depois, conforme Figura 17, clique no botão "Import" e selecione primeiro o arquivo "visualizations.json". Depois clique em "Import" novamente e selecione o arquivo "dashboard.json". Com isso, o dashboard exibido na Figura 15 ficará disponível no menu "Dashboard".
Para dar alguns exemplos, poderíamos indexar dados de NetFlow para análise de tráfego de rede, utilizar outros Beats como o PacketBeat ou MetricBeat, gerar alertas com o Watcher ou ainda integrar o Logstash com Nagios ou Zabbix.
Acesse a interface web do Kibana e clique no menu "Discover". Conforme Figura 7, o Kibana o avisará de que ainda não foi definido um "index pattern". O Kibana precisa que, ao menos, um "index pattern" seja configurado para que possa identificar em qual índice do Elasticsearch serão executadas as consultas e análises. Neste caso, como sabemos que os índices que serão criados no Elasticsearch terão o prefixo "filebeat-", digitaremos filebeat-* no campo "Index name or pattern". Após digitar, aguarde cerca de 3 segundos para que o Kibana atualize o campo "Time-field name" com o valor "@timestamp" e então clique no botão "Create" (Figura 8): Com isso, clicando novamente no menu "Discover", você visualizará os "documents" indexados no Elasticsearch. Perceba que cada "document" possui os campos mapeados pelo Logstash através do plugin "grok" e também os campos de geolocalização criados pelo plugin "geoip" (Figura 9). A partir daí, o Kibana nos permitirá gerar visualizações e dashboards para exibição das informações coletadas dos logs de acesso do Squid.
Pode-se observar na Figura 10 o menu "Visualize", que permitirá criar visões como gráficos, tabelas, mapas etc: Ao clicar em "Create a visualization" você deverá escolher o tipo de visão que irá criar (Figura 11):
Após selecionar o tipo de visão, selecione o índice do qual as informações serão extraídas (Figura 12): Pode-se observar na Figura 13, que os campos extraídos dos logs de acesso do Squid e indexados no Elasticsearch estão disponíveis para utilização nas visões: Após criar as visões, você poderá juntá-las em uma só tela criando um dashboard. Para criar um dashboard, clique no menu "Dashboard" e depois em "Create a dashboard" (Figura 14): E por fim, você terá um dashboard exibindo as visões adicionadas ao mesmo (Figura 15): Caso você queira utilizar o dashboard de exemplo que criei na Figura 15, faça download dos arquivos de configuração das visões e do dashboard, clique no menu "Management" e depois em "Saved Objects" (Figura 16): Depois, conforme Figura 17, clique no botão "Import" e selecione primeiro o arquivo "visualizations.json". Depois clique em "Import" novamente e selecione o arquivo "dashboard.json". Com isso, o dashboard exibido na Figura 15 ficará disponível no menu "Dashboard".
Conclusão
Após esta experiência, percebi o quão poderoso é o Elastic Stack e a infinidade de coisas que se pode fazer com estas ferramentas.Para dar alguns exemplos, poderíamos indexar dados de NetFlow para análise de tráfego de rede, utilizar outros Beats como o PacketBeat ou MetricBeat, gerar alertas com o Watcher ou ainda integrar o Logstash com Nagios ou Zabbix.
Referências
- Elastic Stack and Product Documentation | Elastic
- https://hub.docker.com/r/sebp/elk/
- elk-docker
- Elasticsearch Architectural Overview - Building VTS
- Anatomy of an Elasticsearch Cluster: Part I - Insight Data
- Mapping | Elasticsearch Reference [5.5] | Elastic