Este documento resume uma apresentação sobre Elasticsearch, Logstash e Kibana. A apresentação introduz estas ferramentas de gerenciamento de logs e dados, explica como configurar um pipeline ELK para indexar e visualizar logs de ônibus do Rio de Janeiro, e discute possíveis arquiteturas e usos futuros destas ferramentas.
Selling Story Max Excellence DIS - Q2'24 DIS VJ (1).pdf
Elasticsearch como gerenciar seus logs com logstash e kibana
1. Elasticsearch - Como gerenciar
seus logs com Logstash e Kibana
Luiz Henrique Zambom Santana
Campus Party – 2015
#CPRecife4
Recife-PE, 23/07/2015
2. Quem sou eu?
• Doutorando na UFSC
• Consultor e programador freelancer
• Trabalhando com Elasticsearch desde 2013 (versão 0.9.x)
• Autor de artigos, Blog (luizsantana.info) e livros
3. Agenda
• Big Data e NoSQL
• Porque Elasticsearch?
• ELK
• Exemplo
• Conclusões
• Futuro
6. NoSQL
Sadalage e Fowler, 2012
(http://martinfowler.com/books/nosql.html)
Not only SQL
Nathan Marz, 2014
(http://www.slideshare.net/nathanmarz/runaway-complexity-in-big-data-and-a-plan-to-stop-it)
Relational databases will be a
footnote in history
7.
8. Por que Elasticsearch?
• Tempo real
• Flexível
• Livre de esquema e muito escalável
• Iniciado por Shay Banon em 2010
• Desenvolvido pela comunidade
• Código aberto em:
• https://github.com/elastic/elasticsearch
• Atualmente apoiado pela Elastic
9. Kibana e Logstash
• Também são produtos da Elastic, mas incialmente projetos da comunidade
• O Kibana facilita a visualização dos dados indexados no Elasticsearch
• Enquanto o Logstash ajuda na indexação
Kibana por Rashid Khan
Logstash por Jordan Sissel
11. Logs
• Segundo a Wikipedia:
“In computing, a logfile is a file that records either events that occur in an
operating system or other software runs, or messages between different users
of a communication software. Logging is the act of keeping a log. In the simplest
case, messages are written to a single logfile.”
• Basicamente um registro de evento
12. Exemplo
• Logs dos deslocamentos de ônibus no Rio de Janeiro
• http://dadosabertos.rio.rj.gov.br/apiTransporte/apresentacao/rest/index.cfm
/obterTodasPosicoes
• Infelizmente não encontrei informações sobre Recife :(
• http://dados.recife.pe.gov.br/
• MASSS... a solução é genérica
• Poderia ser aplicada também para:
• São Paulo
• http://www.sptrans.com.br/desenvolvedores/APIOlhoVivo.aspx
• Os códigos de busca estão no seguinte Gist:
• https://gist.github.com/lhzsantana/ad15ed27a3191f0a68f8
13. Receber os dados de log
• Na API de dados abertos do Rio, eles têm o seguinte formato:
dataHora,ordem,linha,latitude,longitude,velocidade
07-13-2015 00:00:29,B63056,,"-22.8676","-43.2585",0
07-13-2015 00:44:12,D53744,846,"-22.88271","-43.49538",30
07-13-2015 01:35:11,A37510,,"-22.81443","-43.325508",0
07-13-2015 02:44:19,B42537,,"-22.8764","-43.3296",0
07-13-2015 03:01:52,D87185,,"-22.916969","-43.608009",0
14. Download e Instalação
• Simplesmente baixar e desempacotar
• Elasticsearch
• https://www.elastic.co/downloads/elasticsearch
• Versão 1.6.0
• Logstash
• https://www.elastic.co/downloads/logstash
• Versão 1.5.2
• Kibana
• https://www.elastic.co/downloads/kibana
• Versão 4.1.1
• Em produção não é tão simples:
• http://logz.io/blog/deploy-elk-production/
15. Conceitos
• Cluster
• Lucene
• Índice
• Mapeamento
• Tipo Lucene Banco de dados relacional (BDR)
Índice (Index) Esquema
Type Tabela
Documento (JSON) Linha
Campo (Field) Coluna
Mapeamento (Mapping) Estrutura da tabela
Query DSL SQL
19. Criar índice e mapeamento no Elasticsearch
PUT campusparty
POST /campusparty/onibus-csv/_mapping
{
"onibus-csv": {
"properties": {
"linha": {
"type": "string"
},
"dataHora": {
"type": "date"
},
"velocidade": {
"type": "double"
},
"localizacao": {
"type": "geo_point"
}
}}}
20. Lembrando...
• Na API de dados abertos do Rio, eles têm o seguinte formato:
dataHora,ordem,linha,latitude,longitude,velocidade
07-13-2015 00:00:29,B63056,,"-22.8676","-43.2585",0
07-13-2015 00:44:12,D53744,846,"-22.88271","-43.49538",30
07-13-2015 01:35:11,A37510,,"-22.81443","-43.325508",0
07-13-2015 02:44:19,B42537,,"-22.8764","-43.3296",0
07-13-2015 03:01:52,D87185,,"-22.916969","-43.608009",0
23. Input
file {
path => "c:/tmp/onibus.csv"
type => "onibus-csv"
start_position => "beginning"
sincedb_path => "/dev/null"
}
Durante o
desenvolvimento
40. Acessar com Java, PHP, Javascript…
• Java
• http://www.devmedia.com.br/elasticsearch-realizando-buscas-no-big-
data/32180
• PHP
• http://www.devmedia.com.br/elasticsearch-desenvolvendo-big-data-com-
php/31609
• Javascript
• No livro e breve na Devmedia
46. Conclusões
• Muitos outros casos de uso
• O Elasticsarch é muito estável e fácil de começar a usar
• Cuidado com essa facilidade, em produção pode se tornar um problema
• Novos projetos estão tornando o ES ainda mais completo
• Watcher
• Shield
• O Elasticsearch 2.0 beta 1 vai estar disponível logo:
• Usa o Lucene 5.2.1
• Filtros e querys serão uma coisa só
• Compressão vs. Velocidade de escrita
• Etc...
47. Futuro
• Aprofundamento
• Tipos, analisadores e buscas avançadas
• Ferramentas e plug-ins
• Clientes
• Arquiteturas complexas
• Redis
• Hadoop
• Apache Spark (Java Magazine 142)
• Expandir o exemplo com outros dados abertos
• Posição de pontos de ônibus
• Criminalidade
• Número de acidentes
48. Outras referências
• http://www.devmedia.com.br/spac
e/luiz-henrique-zambom-santana
• Essa apresentação está disponível
em:
• http://pt.slideshare.net/LuizHenrique
ZambomSa/elasticsearch-como-
gerenciar-seus-logs-com-logstash-e-
kibana
• Os códigos de busca estão no
seguinte Gist:
• https://gist.github.com/lhzsantana/ad
15ed27a3191f0a68f8
49. Obrigado!
Luiz Henrique Zambom Santana
lhzsantana@gmail.com
https://twitter.com/LuizHZSantana
Elasticsearch - Como gerenciar seus logs
com Logstash e Kibana
(23/07/2015)
Editor's Notes
Agradecer o convite a organização
Já é bem manjado o que significa Big Data, mas não custa falar uma vez mais