elasticsearch como gerenciar seus logs com logstash e kibana

Download Elasticsearch   como gerenciar seus logs com logstash e kibana

Post on 15-Aug-2015

93 views

Category:

Data & Analytics

0 download

Embed Size (px)

TRANSCRIPT

  1. 1. Elasticsearch - Como gerenciar seus logs com Logstash e Kibana Luiz Henrique Zambom Santana Campus Party 2015 #CPRecife4 Recife-PE, 23/07/2015
  2. 2. Quem sou eu? Doutorando na UFSC Consultor e programador freelancer Trabalhando com Elasticsearch desde 2013 (verso 0.9.x) Autor de artigos, Blog (luizsantana.info) e livros
  3. 3. Agenda Big Data e NoSQL Porque Elasticsearch? ELK Exemplo Concluses Futuro
  4. 4. Big Data
  5. 5. Qual o problema? 100 ms 150 ms 200 ms
  6. 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. 7. Por que Elasticsearch? Tempo real Flexvel Livre de esquema e muito escalvel Iniciado por Shay Banon em 2010 Desenvolvido pela comunidade Cdigo aberto em: https://github.com/elastic/elasticsearch Atualmente apoiado pela Elastic
  8. 8. Kibana e Logstash Tambm so produtos da Elastic, mas incialmente projetos da comunidade O Kibana facilita a visualizao dos dados indexados no Elasticsearch Enquanto o Logstash ajuda na indexao Kibana por Rashid Khan Logstash por Jordan Sissel
  9. 9. ELK Log Informao sobre um evento Logstash Elasticsearch Kibana
  10. 10. 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
  11. 11. Exemplo Logs dos deslocamentos de nibus no Rio de Janeiro http://dadosabertos.rio.rj.gov.br/apiTransporte/apresentacao/rest/index.cfm /obterTodasPosicoes Infelizmente no encontrei informaes sobre Recife :( http://dados.recife.pe.gov.br/ MASSS... a soluo genrica Poderia ser aplicada tambm para: So Paulo http://www.sptrans.com.br/desenvolvedores/APIOlhoVivo.aspx Os cdigos de busca esto no seguinte Gist: https://gist.github.com/lhzsantana/ad15ed27a3191f0a68f8
  12. 12. Receber os dados de log Na API de dados abertos do Rio, eles tm 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
  13. 13. Download e Instalao Simplesmente baixar e desempacotar Elasticsearch https://www.elastic.co/downloads/elasticsearch Verso 1.6.0 Logstash https://www.elastic.co/downloads/logstash Verso 1.5.2 Kibana https://www.elastic.co/downloads/kibana Verso 4.1.1 Em produo no to simples: http://logz.io/blog/deploy-elk-production/
  14. 14. 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
  15. 15. Iniciar o Elasticsearch e o Kibana
  16. 16. Sense
  17. 17. Verificar http://localhost:9200/ http://localhost:5601/
  18. 18. 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" } }}}
  19. 19. Lembrando... Na API de dados abertos do Rio, eles tm 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
  20. 20. Pipeline do Logstash Inputs generate events, filters modify them, outputs ship them elsewhere.
  21. 21. Modificar o arquivo do logstash.conf Trs partes: Input Filter (optativo) Output Nessa apresentao, usamos: Input File Filter CSV Mutate Output Elasticsearch input { ... } filter { ... } output { ... }
  22. 22. Input file { path => "c:/tmp/onibus.csv" type => "onibus-csv" start_position => "beginning" sincedb_path => "/dev/null" } Durante o desenvolvimento
  23. 23. Filtros filter { csv { columns => ["datahora","ordem","linha","latitude","longitude","velocidade"] separator => "," } date { match => ["datahora","MM-dd-YYYY HH:mm:ss"] locale => "br" target => "@timestamp" } ... }
  24. 24. Filtros filter { ... if [velocidade]=="0" { drop{} } mutate { convert => [ "velocidade", "float" ] } ... }
  25. 25. Filtros filter { ... if [latitude] and [longitude] { mutate { add_field => [ "[location]", "%{longitude}" ] add_field => [ "[location]", "%{latitude}" ] } mutate { convert => [ "[location]", "float" ] } } ... }
  26. 26. Output elasticsearch { host => "localhost" index => campusparty" protocol => "http" } stdout { codec => rubydebug }
  27. 27. Iniciar o Logstash logstash agent -f logstash.conf -l log1.txt debug -l a sada de logs -debug o nvel do log
  28. 28. Verificar dados Verificar o Elasticsearch
  29. 29. Consultas Agregao por linha GET campusparty/_search { "size": 0, "query": { "match_all": {} }, "aggs": { "products": { "terms": { "field": "linha", "size": 5 }}} }
  30. 30. Consultas Agregao por horrio GET campusparty/_search { "size": 0, "query": { "filtered": { "query": { "match_all": {} }}}, "aggs" : { "articles_over_time" : { "date_histogram" : { "field" : "@timestamp", "interval" : 5m" }}}}
  31. 31. Consultas Filtro por posio GET campusparty/_search { "query": { "filtered": { "query": { "match_all": {} }, "filter": { "geo_distance": { "distance": "1km", "localizacao": { "lat": -22.90340110, "lon": -43.1916759 }}}}}}
  32. 32. Kibana Adicionar um novo ndice, em Settings
  33. 33. Kibana Um grfico de barras que mostre o nmero de leituras para cada linha de nibus.
  34. 34. Kibana Leituras por horrio
  35. 35. Kibana Um Tile com a posio geogrfica
  36. 36. Kibana Um Tile com a posio geogrfica combinado com a velocidade
  37. 37. Kibana Combinar as informaes em um dashboard
  38. 38. Adicionar a uma pgina HTML
  39. 39. 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
  40. 40. Exemplo de cliente
  41. 41. Arquiteturas Com o Redis
  42. 42. Arquiteturas Para Streaming
  43. 43. Arquiteturas
  44. 44. Arquiteturas Arquitetura Lambda
  45. 45. Concluses Muitos outros casos de uso O Elasticsarch muito estvel e fcil de comear a usar Cuidado com essa facilidade, em produo pode se tornar um problema Novos projetos esto tornando o ES ainda mais completo Watcher Shield O Elasticsearch 2.0 beta 1 vai estar disponvel logo: Usa o Lucene 5.2.1 Filtros e querys sero uma coisa s Compresso vs. Velocidade de escrita Etc...
  46. 46. Futuro Aprofundamento Tipos, analisadores e buscas avanadas Ferramentas e plug-ins Clientes Arquiteturas complexas Redis Hadoop Apache Spark (Java Magazine 142) Expandir o exemplo com outros dados abertos Posio de pontos de nibus Criminalidade Nmero de acidentes
  47. 47. Outras referncias http://www.devmedia.com.br/spac e/luiz-henrique-zambom-santana Essa apresentao est disponvel em: http://pt.slideshare.net/LuizHenrique ZambomSa/elasticsearch-como- gerenciar-seus-logs-com-logstash-e- kibana Os cdigos de busca esto no seguinte Gist: https://gist.github.com/lhzsantana/ad 15ed27a3191f0a68f8
  48. 48. Obrigado! Luiz Henrique Zambom Santana lhzsantana@gmail.com https://twitter.com/LuizHZSantana Elasticsearch - Como gerenciar seus logs com Logstash e Kibana (23/07/2015)

Recommended

View more >