SlideShare a Scribd company logo
1 of 49
Elasticsearch - Como gerenciar
seus logs com Logstash e Kibana
Luiz Henrique Zambom Santana
Campus Party – 2015
#CPRecife4
Recife-PE, 23/07/2015
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
Agenda
• Big Data e NoSQL
• Porque Elasticsearch?
• ELK
• Exemplo
• Conclusões
• Futuro
Big Data
Qual é o problema?
100 ms
150 ms
200 ms
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
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
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
ELK
• Log
• Informação sobre um evento
• Logstash
• Elasticsearch
• 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
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
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
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/
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
Iniciar o Elasticsearch e o Kibana
Sense
Verificar
• http://localhost:9200/ • http://localhost:5601/
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"
}
}}}
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
Pipeline do Logstash
Inputs generate events, filters modify them,
outputs ship them elsewhere.
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 {
...
}
Input
file {
path => "c:/tmp/onibus.csv"
type => "onibus-csv"
start_position => "beginning"
sincedb_path => "/dev/null"
}
Durante o
desenvolvimento
Filtros
filter {
csv {
columns =>
["datahora","ordem","linha","latitude","longitude","velocidade"]
separator => ","
}
date {
match => ["datahora","MM-dd-YYYY HH:mm:ss"]
locale => "br"
target => "@timestamp"
}
...
}
Filtros
filter {
...
if [velocidade]=="0" {
drop{}
}
mutate {
convert => [ "velocidade", "float" ]
}
...
}
Filtros
filter {
...
if [latitude] and [longitude] {
mutate {
add_field => [ "[location]", "%{longitude}" ]
add_field => [ "[location]", "%{latitude}" ]
}
mutate {
convert => [ "[location]", "float" ]
}
}
...
}
Output
elasticsearch {
host => "localhost"
index => “campusparty"
protocol => "http"
}
stdout {
codec => rubydebug
}
Iniciar o Logstash
• logstash agent -f logstash.conf -l log1.txt –debug
• -l é a saída de logs
• -debug o nível do log
Verificar dados
• Verificar o Elasticsearch
Consultas – Agregação por linha
GET campusparty/_search
{
"size": 0,
"query": {
"match_all": {}
},
"aggs": {
"products": {
"terms": {
"field": "linha",
"size": 5
}}}
}
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"
}}}}
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
}}}}}}
Kibana
• Adicionar um novo índice, em Settings
Kibana
• Um gráfico de barras que mostre o número de leituras para cada linha de
ônibus.
Kibana
• Leituras por horário
Kibana
• Um Tile com a posição geográfica
Kibana
• Um Tile com a posição geográfica combinado com a velocidade
Kibana
• Combinar as informações em um dashboard
Adicionar a uma página HTML
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
Exemplo de cliente
Arquiteturas
• Com o Redis
Arquiteturas
• Para Streaming
Arquiteturas
Arquiteturas
• Arquitetura Lambda
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...
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
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
Obrigado!
Luiz Henrique Zambom Santana
lhzsantana@gmail.com
https://twitter.com/LuizHZSantana
Elasticsearch - Como gerenciar seus logs
com Logstash e Kibana
(23/07/2015)

More Related Content

What's hot

Zero trust in a multi tenant environment
Zero trust in a multi tenant environment  Zero trust in a multi tenant environment
Zero trust in a multi tenant environment Ashnikbiz
 
System design for recommendations and search
System design for recommendations and searchSystem design for recommendations and search
System design for recommendations and searchEugene Yan Ziyou
 
Cloud native application 입문
Cloud native application 입문Cloud native application 입문
Cloud native application 입문Seong-Bok Lee
 
JWT - To authentication and beyond!
JWT - To authentication and beyond!JWT - To authentication and beyond!
JWT - To authentication and beyond!Luís Cobucci
 
Real-Time Recommendations with Hopsworks and OpenSearch - MLOps World 2022
Real-Time Recommendations  with Hopsworks and OpenSearch - MLOps World 2022Real-Time Recommendations  with Hopsworks and OpenSearch - MLOps World 2022
Real-Time Recommendations with Hopsworks and OpenSearch - MLOps World 2022Jim Dowling
 
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략Open Source Consulting
 
MongoDB World 2015 - A Technical Introduction to WiredTiger
MongoDB World 2015 - A Technical Introduction to WiredTigerMongoDB World 2015 - A Technical Introduction to WiredTiger
MongoDB World 2015 - A Technical Introduction to WiredTigerWiredTiger
 
PostgreSQL Materialized Views with Active Record
PostgreSQL Materialized Views with Active RecordPostgreSQL Materialized Views with Active Record
PostgreSQL Materialized Views with Active RecordDavid Roberts
 
OAuth & OpenID Connect Deep Dive
OAuth & OpenID Connect Deep DiveOAuth & OpenID Connect Deep Dive
OAuth & OpenID Connect Deep DiveNordic APIs
 
Zomato Crawler & Recommender
Zomato Crawler & RecommenderZomato Crawler & Recommender
Zomato Crawler & RecommenderShoaib Khan
 
엘라스틱서치 실무 가이드_202204.pdf
엘라스틱서치 실무 가이드_202204.pdf엘라스틱서치 실무 가이드_202204.pdf
엘라스틱서치 실무 가이드_202204.pdf한 경만
 
Django로 만든 웹 애플리케이션 도커라이징하기 + 도커 컴포즈로 개발 환경 구축하기
Django로 만든 웹 애플리케이션 도커라이징하기 + 도커 컴포즈로 개발 환경 구축하기Django로 만든 웹 애플리케이션 도커라이징하기 + 도커 컴포즈로 개발 환경 구축하기
Django로 만든 웹 애플리케이션 도커라이징하기 + 도커 컴포즈로 개발 환경 구축하기raccoony
 
Payroll checklist 08_10
Payroll checklist 08_10Payroll checklist 08_10
Payroll checklist 08_10stephelsen
 
JSON-LD for RESTful services
JSON-LD for RESTful servicesJSON-LD for RESTful services
JSON-LD for RESTful servicesMarkus Lanthaler
 
Learning to Rank Presentation (v2) at LexisNexis Search Guild
Learning to Rank Presentation (v2) at LexisNexis Search GuildLearning to Rank Presentation (v2) at LexisNexis Search Guild
Learning to Rank Presentation (v2) at LexisNexis Search GuildSujit Pal
 

What's hot (20)

Introduction to OAuth2.0
Introduction to OAuth2.0Introduction to OAuth2.0
Introduction to OAuth2.0
 
Zero trust in a multi tenant environment
Zero trust in a multi tenant environment  Zero trust in a multi tenant environment
Zero trust in a multi tenant environment
 
System design for recommendations and search
System design for recommendations and searchSystem design for recommendations and search
System design for recommendations and search
 
OAuth 2.0
OAuth 2.0OAuth 2.0
OAuth 2.0
 
Sap hr
Sap hrSap hr
Sap hr
 
Cloud native application 입문
Cloud native application 입문Cloud native application 입문
Cloud native application 입문
 
JWT - To authentication and beyond!
JWT - To authentication and beyond!JWT - To authentication and beyond!
JWT - To authentication and beyond!
 
Real-Time Recommendations with Hopsworks and OpenSearch - MLOps World 2022
Real-Time Recommendations  with Hopsworks and OpenSearch - MLOps World 2022Real-Time Recommendations  with Hopsworks and OpenSearch - MLOps World 2022
Real-Time Recommendations with Hopsworks and OpenSearch - MLOps World 2022
 
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략
클라우드 네이티브 전환 요소 및 성공적인 쿠버네티스 도입 전략
 
MongoDB World 2015 - A Technical Introduction to WiredTiger
MongoDB World 2015 - A Technical Introduction to WiredTigerMongoDB World 2015 - A Technical Introduction to WiredTiger
MongoDB World 2015 - A Technical Introduction to WiredTiger
 
PostgreSQL Materialized Views with Active Record
PostgreSQL Materialized Views with Active RecordPostgreSQL Materialized Views with Active Record
PostgreSQL Materialized Views with Active Record
 
PostgreSQL DBA Neler Yapar?
PostgreSQL DBA Neler Yapar?PostgreSQL DBA Neler Yapar?
PostgreSQL DBA Neler Yapar?
 
OAuth & OpenID Connect Deep Dive
OAuth & OpenID Connect Deep DiveOAuth & OpenID Connect Deep Dive
OAuth & OpenID Connect Deep Dive
 
Zomato Crawler & Recommender
Zomato Crawler & RecommenderZomato Crawler & Recommender
Zomato Crawler & Recommender
 
엘라스틱서치 실무 가이드_202204.pdf
엘라스틱서치 실무 가이드_202204.pdf엘라스틱서치 실무 가이드_202204.pdf
엘라스틱서치 실무 가이드_202204.pdf
 
Django로 만든 웹 애플리케이션 도커라이징하기 + 도커 컴포즈로 개발 환경 구축하기
Django로 만든 웹 애플리케이션 도커라이징하기 + 도커 컴포즈로 개발 환경 구축하기Django로 만든 웹 애플리케이션 도커라이징하기 + 도커 컴포즈로 개발 환경 구축하기
Django로 만든 웹 애플리케이션 도커라이징하기 + 도커 컴포즈로 개발 환경 구축하기
 
Payroll checklist 08_10
Payroll checklist 08_10Payroll checklist 08_10
Payroll checklist 08_10
 
JSON-LD for RESTful services
JSON-LD for RESTful servicesJSON-LD for RESTful services
JSON-LD for RESTful services
 
APEX Security 101
APEX Security 101APEX Security 101
APEX Security 101
 
Learning to Rank Presentation (v2) at LexisNexis Search Guild
Learning to Rank Presentation (v2) at LexisNexis Search GuildLearning to Rank Presentation (v2) at LexisNexis Search Guild
Learning to Rank Presentation (v2) at LexisNexis Search Guild
 

Similar to Elasticsearch como gerenciar seus logs com logstash e kibana

2016 - WebGis para apoio ao licenciamento e regularização ambiental
2016 - WebGis para apoio ao licenciamento e regularização ambiental2016 - WebGis para apoio ao licenciamento e regularização ambiental
2016 - WebGis para apoio ao licenciamento e regularização ambientalGeorge Porto Ferreira
 
HUGSP#6 Opus uDSL - Uma DSL para Microserviços
HUGSP#6 Opus uDSL - Uma DSL para MicroserviçosHUGSP#6 Opus uDSL - Uma DSL para Microserviços
HUGSP#6 Opus uDSL - Uma DSL para MicroserviçosPhilippe Sevestre
 
Big data e PostgreSQL
Big data e PostgreSQLBig data e PostgreSQL
Big data e PostgreSQLEuler Taveira
 
Monitorando APIs REST com o Application Insights - NerdZão - Fevereiro-2018
Monitorando APIs REST com o Application Insights - NerdZão - Fevereiro-2018Monitorando APIs REST com o Application Insights - NerdZão - Fevereiro-2018
Monitorando APIs REST com o Application Insights - NerdZão - Fevereiro-2018Renato Groffe
 
Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014Matheus de Oliveira
 
Deep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaDeep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaComunidade NetPonto
 
SQL Day 2016 - SQL Server x Oracle
SQL Day 2016 - SQL Server x OracleSQL Day 2016 - SQL Server x Oracle
SQL Day 2016 - SQL Server x OracleFlávio Farias
 
Arquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine LearningArquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine LearningFelipe Santos
 
Planejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e FerramentasPlanejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e Ferramentasluanrjesus
 
Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017
Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017
Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017Renato Groff
 
Big Query - Escalabilidade Infinita para os seus Dados
Big Query  - Escalabilidade Infinita para os seus DadosBig Query  - Escalabilidade Infinita para os seus Dados
Big Query - Escalabilidade Infinita para os seus DadosAlvaro Viebrantz
 
SIGARRA - a case study
SIGARRA - a case studySIGARRA - a case study
SIGARRA - a case studyFilipe Silva
 
Monitorando aplicações Web com Application Insights, Logic Apps e Slack - .NE...
Monitorando aplicações Web com Application Insights, Logic Apps e Slack - .NE...Monitorando aplicações Web com Application Insights, Logic Apps e Slack - .NE...
Monitorando aplicações Web com Application Insights, Logic Apps e Slack - .NE...Renato Groff
 
Carreira do profissional de dados
Carreira do profissional de dadosCarreira do profissional de dados
Carreira do profissional de dadosEdvaldo Castro
 

Similar to Elasticsearch como gerenciar seus logs com logstash e kibana (20)

Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1
 
FLISOL 2017 - SQL Server no Linux
FLISOL 2017 - SQL Server no LinuxFLISOL 2017 - SQL Server no Linux
FLISOL 2017 - SQL Server no Linux
 
2016 - WebGis para apoio ao licenciamento e regularização ambiental
2016 - WebGis para apoio ao licenciamento e regularização ambiental2016 - WebGis para apoio ao licenciamento e regularização ambiental
2016 - WebGis para apoio ao licenciamento e regularização ambiental
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
 
Cloud search avancado
Cloud search avancadoCloud search avancado
Cloud search avancado
 
HUGSP#6 Opus uDSL - Uma DSL para Microserviços
HUGSP#6 Opus uDSL - Uma DSL para MicroserviçosHUGSP#6 Opus uDSL - Uma DSL para Microserviços
HUGSP#6 Opus uDSL - Uma DSL para Microserviços
 
Bi ferramentas olap 1
Bi   ferramentas olap 1Bi   ferramentas olap 1
Bi ferramentas olap 1
 
Big data e PostgreSQL
Big data e PostgreSQLBig data e PostgreSQL
Big data e PostgreSQL
 
Monitorando APIs REST com o Application Insights - NerdZão - Fevereiro-2018
Monitorando APIs REST com o Application Insights - NerdZão - Fevereiro-2018Monitorando APIs REST com o Application Insights - NerdZão - Fevereiro-2018
Monitorando APIs REST com o Application Insights - NerdZão - Fevereiro-2018
 
Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014
 
Deep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo CostaDeep dive into Windows Azure Mobile Services - Ricardo Costa
Deep dive into Windows Azure Mobile Services - Ricardo Costa
 
SQL Day 2016 - SQL Server x Oracle
SQL Day 2016 - SQL Server x OracleSQL Day 2016 - SQL Server x Oracle
SQL Day 2016 - SQL Server x Oracle
 
Arquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine LearningArquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine Learning
 
Planejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e FerramentasPlanejamento de Capacidade Técnicas e Ferramentas
Planejamento de Capacidade Técnicas e Ferramentas
 
Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017
Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017
Monitorando APIs REST com o Application Insights - .NET SP - Dezembro/2017
 
Big Query - Escalabilidade Infinita para os seus Dados
Big Query  - Escalabilidade Infinita para os seus DadosBig Query  - Escalabilidade Infinita para os seus Dados
Big Query - Escalabilidade Infinita para os seus Dados
 
SIGARRA - a case study
SIGARRA - a case studySIGARRA - a case study
SIGARRA - a case study
 
T18_LM3: Ajax
T18_LM3: AjaxT18_LM3: Ajax
T18_LM3: Ajax
 
Monitorando aplicações Web com Application Insights, Logic Apps e Slack - .NE...
Monitorando aplicações Web com Application Insights, Logic Apps e Slack - .NE...Monitorando aplicações Web com Application Insights, Logic Apps e Slack - .NE...
Monitorando aplicações Web com Application Insights, Logic Apps e Slack - .NE...
 
Carreira do profissional de dados
Carreira do profissional de dadosCarreira do profissional de dados
Carreira do profissional de dados
 

More from Luiz Henrique Zambom Santana

Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...Luiz Henrique Zambom Santana
 
Apache Sedona: how to process petabytes of agronomic data with Spark
Apache Sedona: how to process petabytes of agronomic data with SparkApache Sedona: how to process petabytes of agronomic data with Spark
Apache Sedona: how to process petabytes of agronomic data with SparkLuiz Henrique Zambom Santana
 
De Arquiteto para Gerente: como debugar uma equipe
De Arquiteto para Gerente: como debugar uma equipeDe Arquiteto para Gerente: como debugar uma equipe
De Arquiteto para Gerente: como debugar uma equipeLuiz Henrique Zambom Santana
 
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQLVoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQLLuiz Henrique Zambom Santana
 
Uma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Uma visão sobre Fast-Data: Spark, VoltDB e ElasticsearchUma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Uma visão sobre Fast-Data: Spark, VoltDB e ElasticsearchLuiz Henrique Zambom Santana
 
Workload-Aware RDF Partitioning and SPARQL Query Caching for Massive RDF Gra...
Workload-Aware RDF Partitioning  and SPARQL Query Caching for Massive RDF Gra...Workload-Aware RDF Partitioning  and SPARQL Query Caching for Massive RDF Gra...
Workload-Aware RDF Partitioning and SPARQL Query Caching for Massive RDF Gra...Luiz Henrique Zambom Santana
 
A middleware for storing massive RDF graphs into NoSQL
A middleware for storing massive RDF graphs into NoSQLA middleware for storing massive RDF graphs into NoSQL
A middleware for storing massive RDF graphs into NoSQLLuiz Henrique Zambom Santana
 
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL DatabasesA Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL DatabasesLuiz Henrique Zambom Santana
 
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Luiz Henrique Zambom Santana
 
Novidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHPNovidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHPLuiz Henrique Zambom Santana
 

More from Luiz Henrique Zambom Santana (20)

Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
Perspectives on the use of data in Agriculture - Luiz Santana - Leaf Agricult...
 
Apache Sedona: how to process petabytes of agronomic data with Spark
Apache Sedona: how to process petabytes of agronomic data with SparkApache Sedona: how to process petabytes of agronomic data with Spark
Apache Sedona: how to process petabytes of agronomic data with Spark
 
De Arquiteto para Gerente: como debugar uma equipe
De Arquiteto para Gerente: como debugar uma equipeDe Arquiteto para Gerente: como debugar uma equipe
De Arquiteto para Gerente: como debugar uma equipe
 
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQLVoltDB: as vantagens e os desafios dos banco de dados NewSQL
VoltDB: as vantagens e os desafios dos banco de dados NewSQL
 
IBM Watson, Apache Spark ou TensorFlow?
IBM Watson, Apache Spark ou TensorFlow?IBM Watson, Apache Spark ou TensorFlow?
IBM Watson, Apache Spark ou TensorFlow?
 
Uma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Uma visão sobre Fast-Data: Spark, VoltDB e ElasticsearchUma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
Uma visão sobre Fast-Data: Spark, VoltDB e Elasticsearch
 
Banco de dados nas nuvens - aula 3
Banco de dados nas nuvens - aula 3Banco de dados nas nuvens - aula 3
Banco de dados nas nuvens - aula 3
 
Banco de dados nas nuvens - aula 2
Banco de dados nas nuvens - aula 2Banco de dados nas nuvens - aula 2
Banco de dados nas nuvens - aula 2
 
Banco de dados nas nuvens - aula 1
Banco de dados nas nuvens - aula 1Banco de dados nas nuvens - aula 1
Banco de dados nas nuvens - aula 1
 
Workload-Aware RDF Partitioning and SPARQL Query Caching for Massive RDF Gra...
Workload-Aware RDF Partitioning  and SPARQL Query Caching for Massive RDF Gra...Workload-Aware RDF Partitioning  and SPARQL Query Caching for Massive RDF Gra...
Workload-Aware RDF Partitioning and SPARQL Query Caching for Massive RDF Gra...
 
A middleware for storing massive RDF graphs into NoSQL
A middleware for storing massive RDF graphs into NoSQLA middleware for storing massive RDF graphs into NoSQL
A middleware for storing massive RDF graphs into NoSQL
 
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL DatabasesA Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
A Workload-Aware Middleware for Storing Massive RDF Graphs into NoSQL Databases
 
Normalização
NormalizaçãoNormalização
Normalização
 
SQL Joins
SQL JoinsSQL Joins
SQL Joins
 
Consultas básicas em SQL
Consultas básicas em SQLConsultas básicas em SQL
Consultas básicas em SQL
 
Processamento em Big Data
Processamento em Big DataProcessamento em Big Data
Processamento em Big Data
 
Seminário de Andamento de Doutorado
Seminário de Andamento de DoutoradoSeminário de Andamento de Doutorado
Seminário de Andamento de Doutorado
 
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
Como modelar, integrar e desenvolver aplicações com múltiplos bancos de dados...
 
Workshop de ELK - EmergiNet
Workshop de ELK - EmergiNetWorkshop de ELK - EmergiNet
Workshop de ELK - EmergiNet
 
Novidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHPNovidades do elasticsearch 2.0 e como usá-lo com PHP
Novidades do elasticsearch 2.0 e como usá-lo com PHP
 

Recently uploaded

Selling Story Max Excellence DIS - Q2'24 DIS TD (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS TD (1).pdfSelling Story Max Excellence DIS - Q2'24 DIS TD (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS TD (1).pdfmaanuarruda
 
AULA_02_-_SISTEMA_DE_NUMERACAO2023/2.pdf
AULA_02_-_SISTEMA_DE_NUMERACAO2023/2.pdfAULA_02_-_SISTEMA_DE_NUMERACAO2023/2.pdf
AULA_02_-_SISTEMA_DE_NUMERACAO2023/2.pdfhistonfilho
 
Relatório de Gestão 2022-2023 Intra Leste Nordeste
Relatório de Gestão 2022-2023 Intra Leste NordesteRelatório de Gestão 2022-2023 Intra Leste Nordeste
Relatório de Gestão 2022-2023 Intra Leste NordesteDaniloMatos36
 
Selling Story Max Excellence DIS - Q2'24 DIS HIB (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS HIB (1).pdfSelling Story Max Excellence DIS - Q2'24 DIS HIB (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS HIB (1).pdfmaanuarruda
 
EM-3ª-SERIE-SLIDE-DE-BIOLOGIA-os-principios-das-leis-da-genetica-ou-mendelian...
EM-3ª-SERIE-SLIDE-DE-BIOLOGIA-os-principios-das-leis-da-genetica-ou-mendelian...EM-3ª-SERIE-SLIDE-DE-BIOLOGIA-os-principios-das-leis-da-genetica-ou-mendelian...
EM-3ª-SERIE-SLIDE-DE-BIOLOGIA-os-principios-das-leis-da-genetica-ou-mendelian...9z64mgz4kf
 
Selling Story Max Excellence DIS - Q2'24 DIS VJ (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS VJ (1).pdfSelling Story Max Excellence DIS - Q2'24 DIS VJ (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS VJ (1).pdfmaanuarruda
 

Recently uploaded (6)

Selling Story Max Excellence DIS - Q2'24 DIS TD (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS TD (1).pdfSelling Story Max Excellence DIS - Q2'24 DIS TD (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS TD (1).pdf
 
AULA_02_-_SISTEMA_DE_NUMERACAO2023/2.pdf
AULA_02_-_SISTEMA_DE_NUMERACAO2023/2.pdfAULA_02_-_SISTEMA_DE_NUMERACAO2023/2.pdf
AULA_02_-_SISTEMA_DE_NUMERACAO2023/2.pdf
 
Relatório de Gestão 2022-2023 Intra Leste Nordeste
Relatório de Gestão 2022-2023 Intra Leste NordesteRelatório de Gestão 2022-2023 Intra Leste Nordeste
Relatório de Gestão 2022-2023 Intra Leste Nordeste
 
Selling Story Max Excellence DIS - Q2'24 DIS HIB (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS HIB (1).pdfSelling Story Max Excellence DIS - Q2'24 DIS HIB (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS HIB (1).pdf
 
EM-3ª-SERIE-SLIDE-DE-BIOLOGIA-os-principios-das-leis-da-genetica-ou-mendelian...
EM-3ª-SERIE-SLIDE-DE-BIOLOGIA-os-principios-das-leis-da-genetica-ou-mendelian...EM-3ª-SERIE-SLIDE-DE-BIOLOGIA-os-principios-das-leis-da-genetica-ou-mendelian...
EM-3ª-SERIE-SLIDE-DE-BIOLOGIA-os-principios-das-leis-da-genetica-ou-mendelian...
 
Selling Story Max Excellence DIS - Q2'24 DIS VJ (1).pdf
Selling Story Max Excellence DIS - Q2'24 DIS VJ (1).pdfSelling Story Max Excellence DIS - Q2'24 DIS VJ (1).pdf
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
  • 5. Qual é o problema? 100 ms 150 ms 200 ms
  • 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
  • 10. ELK • Log • Informação sobre um evento • Logstash • Elasticsearch • Kibana
  • 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
  • 17. Sense
  • 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
  • 21. Pipeline do Logstash Inputs generate events, filters modify them, outputs ship them elsewhere.
  • 22. 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 { ... }
  • 23. Input file { path => "c:/tmp/onibus.csv" type => "onibus-csv" start_position => "beginning" sincedb_path => "/dev/null" } Durante o desenvolvimento
  • 24. Filtros filter { csv { columns => ["datahora","ordem","linha","latitude","longitude","velocidade"] separator => "," } date { match => ["datahora","MM-dd-YYYY HH:mm:ss"] locale => "br" target => "@timestamp" } ... }
  • 25. Filtros filter { ... if [velocidade]=="0" { drop{} } mutate { convert => [ "velocidade", "float" ] } ... }
  • 26. Filtros filter { ... if [latitude] and [longitude] { mutate { add_field => [ "[location]", "%{longitude}" ] add_field => [ "[location]", "%{latitude}" ] } mutate { convert => [ "[location]", "float" ] } } ... }
  • 27. Output elasticsearch { host => "localhost" index => “campusparty" protocol => "http" } stdout { codec => rubydebug }
  • 28. Iniciar o Logstash • logstash agent -f logstash.conf -l log1.txt –debug • -l é a saída de logs • -debug o nível do log
  • 29. Verificar dados • Verificar o Elasticsearch
  • 30. Consultas – Agregação por linha GET campusparty/_search { "size": 0, "query": { "match_all": {} }, "aggs": { "products": { "terms": { "field": "linha", "size": 5 }}} }
  • 31. 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" }}}}
  • 32. 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 }}}}}}
  • 33. Kibana • Adicionar um novo índice, em Settings
  • 34. Kibana • Um gráfico de barras que mostre o número de leituras para cada linha de ônibus.
  • 36. Kibana • Um Tile com a posição geográfica
  • 37. Kibana • Um Tile com a posição geográfica combinado com a velocidade
  • 38. Kibana • Combinar as informações em um dashboard
  • 39. Adicionar a uma página HTML
  • 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

  1. Agradecer o convite a organização
  2. Já é bem manjado o que significa Big Data, mas não custa falar uma vez mais
  3. Pedir atenção
  4. Falar do Solar
  5. Eu entendo