elasticsearch como gerenciar seus logs com logstash e kibana

49
Elasticsearch - Como gerenciar seus logs com Logstash e Kibana Luiz Henrique Zambom Santana Campus Party – 2015 #CPRecife4 Recife-PE, 23/07/2015

Upload: luiz-henrique-zambom-santana

Post on 15-Aug-2015

183 views

Category:

Data & Analytics


0 download

TRANSCRIPT

Page 1: Elasticsearch   como gerenciar seus logs com logstash e kibana

Elasticsearch - Como gerenciar seus logs com

Logstash e KibanaLuiz Henrique Zambom Santana

Campus Party – 2015#CPRecife4

Recife-PE, 23/07/2015

Page 2: Elasticsearch   como gerenciar seus logs com logstash e kibana

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

Page 3: Elasticsearch   como gerenciar seus logs com logstash e kibana

Agenda

• Big Data e NoSQL• Porque Elasticsearch?• ELK• Exemplo• Conclusões• Futuro

Page 4: Elasticsearch   como gerenciar seus logs com logstash e kibana

Big Data

Page 5: Elasticsearch   como gerenciar seus logs com logstash e kibana

Qual é o problema?

100 ms

150 ms

200 ms

Page 6: Elasticsearch   como gerenciar seus logs com logstash e kibana

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

Page 7: Elasticsearch   como gerenciar seus logs com logstash e kibana
Page 8: Elasticsearch   como gerenciar seus logs com logstash e kibana

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

Page 9: Elasticsearch   como gerenciar seus logs com logstash e kibana

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

Page 10: Elasticsearch   como gerenciar seus logs com logstash e kibana

ELK

• Log• Informação sobre um evento

• Logstash• Elasticsearch• Kibana

Page 11: Elasticsearch   como gerenciar seus logs com logstash e kibana

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

Page 12: Elasticsearch   como gerenciar seus logs com logstash e kibana

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

Page 13: Elasticsearch   como gerenciar seus logs com logstash e kibana

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

Page 14: Elasticsearch   como gerenciar seus logs com logstash e kibana

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/

Page 15: Elasticsearch   como gerenciar seus logs com logstash e kibana

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

Page 16: Elasticsearch   como gerenciar seus logs com logstash e kibana

Iniciar o Elasticsearch e o Kibana

Page 17: Elasticsearch   como gerenciar seus logs com logstash e kibana

Sense

Page 18: Elasticsearch   como gerenciar seus logs com logstash e kibana

Verificar

• http://localhost:9200/ • http://localhost:5601/

Page 19: Elasticsearch   como gerenciar seus logs com logstash e kibana

Criar índice e mapeamento no Elasticsearch

PUT campuspartyPOST /campusparty/onibus-csv/_mapping{ "onibus-csv": { "properties": { "linha": { "type": "string" }, "dataHora": { "type": "date" }, "velocidade": { "type": "double" }, "localizacao": { "type": "geo_point" } }}}

Page 20: Elasticsearch   como gerenciar seus logs com logstash e kibana

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

Page 21: Elasticsearch   como gerenciar seus logs com logstash e kibana

Pipeline do Logstash

Inputs generate events, filters modify them, outputs ship them elsewhere.

Page 22: Elasticsearch   como gerenciar seus logs com logstash e kibana

Modificar o arquivo do logstash.conf

• Três partes:• Input• Filter (optativo)• Output

• Nessa apresentação, usamos:• Input

• File• Filter

• CSV• Mutate

• Output• Elasticsearch

input {

...

}

filter {

...

}

output {

...

}

Page 23: Elasticsearch   como gerenciar seus logs com logstash e kibana

Input

file {

path => "c:/tmp/onibus.csv"

type => "onibus-csv"

start_position => "beginning"

sincedb_path => "/dev/null"

}

Durante o desenvolvimento

Page 24: Elasticsearch   como gerenciar seus logs com logstash e kibana

Filtros

filter {

csv {

columns => ["datahora","ordem","linha","latitude","longitude","velocidade"]

separator => ","

}

date {

match => ["datahora","MM-dd-YYYY HH:mm:ss"]

locale => "br"

target => "@timestamp"

}

...

}

Page 25: Elasticsearch   como gerenciar seus logs com logstash e kibana

Filtros

filter {

...

if [velocidade]=="0" {

drop{}

}

mutate {

convert => [ "velocidade", "float" ]

}

...

}

Page 26: Elasticsearch   como gerenciar seus logs com logstash e kibana

Filtros

filter {

...

if [latitude] and [longitude] {

mutate {

add_field => [ "[location]", "%{longitude}" ]

add_field => [ "[location]", "%{latitude}" ]

}

mutate {

convert => [ "[location]", "float" ]

}

}

...

}

Page 27: Elasticsearch   como gerenciar seus logs com logstash e kibana

Output

elasticsearch {

host => "localhost"

index => “campusparty"

protocol => "http"

}

stdout {

codec => rubydebug

}

Page 28: Elasticsearch   como gerenciar seus logs com logstash e kibana

Iniciar o Logstash• logstash agent -f logstash.conf -l log1.txt –debug• -l é a saída de logs• -debug o nível do log

Page 29: Elasticsearch   como gerenciar seus logs com logstash e kibana

Verificar dados

• Verificar o Elasticsearch

Page 30: Elasticsearch   como gerenciar seus logs com logstash e kibana

Consultas – Agregação por linha

GET campusparty/_search{ "size": 0, "query": { "match_all": {} }, "aggs": { "products": { "terms": { "field": "linha", "size": 5 }}}}

Page 31: Elasticsearch   como gerenciar seus logs com logstash e kibana

Consultas – Agregação por horário

GET campusparty/_search{ "size": 0, "query": { "filtered": { "query": { "match_all": {} }}}, "aggs" : { "articles_over_time" : { "date_histogram" : { "field" : "@timestamp", "interval" : “5m"}}}}

Page 32: Elasticsearch   como gerenciar seus logs com logstash e kibana

Consultas – Filtro por posição

GET campusparty/_search{ "query": { "filtered": { "query": { "match_all": {} }, "filter": { "geo_distance": { "distance": "1km", "localizacao": { "lat": -22.90340110, "lon": -43.1916759 }}}}}}

Page 33: Elasticsearch   como gerenciar seus logs com logstash e kibana

Kibana

• Adicionar um novo índice, em Settings

Page 34: Elasticsearch   como gerenciar seus logs com logstash e kibana

Kibana

• Um gráfico de barras que mostre o número de leituras para cada linha de ônibus.

Page 35: Elasticsearch   como gerenciar seus logs com logstash e kibana

Kibana

• Leituras por horário

Page 36: Elasticsearch   como gerenciar seus logs com logstash e kibana

Kibana

• Um Tile com a posição geográfica

Page 37: Elasticsearch   como gerenciar seus logs com logstash e kibana

Kibana

• Um Tile com a posição geográfica combinado com a velocidade

Page 38: Elasticsearch   como gerenciar seus logs com logstash e kibana

Kibana

• Combinar as informações em um dashboard

Page 39: Elasticsearch   como gerenciar seus logs com logstash e kibana

Adicionar a uma página HTML

Page 40: Elasticsearch   como gerenciar seus logs com logstash e kibana

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

Page 41: Elasticsearch   como gerenciar seus logs com logstash e kibana

Exemplo de cliente

Page 42: Elasticsearch   como gerenciar seus logs com logstash e kibana

Arquiteturas

• Com o Redis

Page 43: Elasticsearch   como gerenciar seus logs com logstash e kibana

Arquiteturas

• Para Streaming

Page 44: Elasticsearch   como gerenciar seus logs com logstash e kibana

Arquiteturas

Page 45: Elasticsearch   como gerenciar seus logs com logstash e kibana

Arquiteturas

• Arquitetura Lambda

Page 46: Elasticsearch   como gerenciar seus logs com logstash e kibana

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...

Page 47: Elasticsearch   como gerenciar seus logs com logstash e kibana

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

Page 49: Elasticsearch   como gerenciar seus logs com logstash e kibana

Obrigado!Luiz Henrique Zambom Santana

[email protected]://twitter.com/LuizHZSantana

Elasticsearch - Como gerenciar seus logscom Logstash e Kibana

(23/07/2015)