SlideShare uma empresa Scribd logo
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)

Mais conteúdo relacionado

Mais procurados

Pycon korea 2018 kaggle tutorial(kaggle break)
Pycon korea 2018 kaggle tutorial(kaggle break)Pycon korea 2018 kaggle tutorial(kaggle break)
Pycon korea 2018 kaggle tutorial(kaggle break)
Yeonmin Kim
 
Implementing Microservices Security Patterns & Protocols with Spring
Implementing Microservices Security Patterns & Protocols with SpringImplementing Microservices Security Patterns & Protocols with Spring
Implementing Microservices Security Patterns & Protocols with Spring
VMware Tanzu
 
Open wrtでwired likeなwifinwを作ってみた。
Open wrtでwired likeなwifinwを作ってみた。Open wrtでwired likeなwifinwを作ってみた。
Open wrtでwired likeなwifinwを作ってみた。
m_masataka
 
[데이터야놀자2107] 강남 출근길에 판교/정자역에 내릴 사람 예측하기
[데이터야놀자2107] 강남 출근길에 판교/정자역에 내릴 사람 예측하기 [데이터야놀자2107] 강남 출근길에 판교/정자역에 내릴 사람 예측하기
[데이터야놀자2107] 강남 출근길에 판교/정자역에 내릴 사람 예측하기
choi kyumin
 
[5분 따라하기] 비주얼 스튜디오 C++에서 JSON 파서 설치하기
[5분 따라하기] 비주얼 스튜디오 C++에서 JSON 파서 설치하기[5분 따라하기] 비주얼 스튜디오 C++에서 JSON 파서 설치하기
[5분 따라하기] 비주얼 스튜디오 C++에서 JSON 파서 설치하기
Jay Park
 
엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나
종민 김
 
PHP 5.5ネーティブキャッシュの話
PHP 5.5ネーティブキャッシュの話PHP 5.5ネーティブキャッシュの話
PHP 5.5ネーティブキャッシュの話
Rui Hirokawa
 
Laravelを用いたゲームサーバーのチューニング
Laravelを用いたゲームサーバーのチューニングLaravelを用いたゲームサーバーのチューニング
Laravelを用いたゲームサーバーのチューニング
NOW PRODUCTION
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
歩 柴田
 
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Susang Kim
 
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用
Tokuhiro Matsuno
 
Random Thoughts on Paper Implementations [KAIST 2018]
Random Thoughts on Paper Implementations [KAIST 2018]Random Thoughts on Paper Implementations [KAIST 2018]
Random Thoughts on Paper Implementations [KAIST 2018]
Taehoon Kim
 
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Seongyun Byeon
 
DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信
DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信
DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信
ryo_mm2d
 
トレジャーデータ流,データ分析の始め方
トレジャーデータ流,データ分析の始め方トレジャーデータ流,データ分析の始め方
トレジャーデータ流,データ分析の始め方Takahiro Inoue
 
爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話
Kentaro Yoshida
 
Webアプリ開発者のためのHTML5セキュリティ入門
Webアプリ開発者のためのHTML5セキュリティ入門Webアプリ開発者のためのHTML5セキュリティ入門
Webアプリ開発者のためのHTML5セキュリティ入門
Muneaki Nishimura
 
Go Profiling - John Graham-Cumming
Go Profiling - John Graham-Cumming Go Profiling - John Graham-Cumming
Go Profiling - John Graham-Cumming Cloudflare
 
JSRとJEPとJBSの見方や調べ方について
JSRとJEPとJBSの見方や調べ方についてJSRとJEPとJBSの見方や調べ方について
JSRとJEPとJBSの見方や調べ方について
Aya Ebata
 

Mais procurados (20)

Pycon korea 2018 kaggle tutorial(kaggle break)
Pycon korea 2018 kaggle tutorial(kaggle break)Pycon korea 2018 kaggle tutorial(kaggle break)
Pycon korea 2018 kaggle tutorial(kaggle break)
 
Implementing Microservices Security Patterns & Protocols with Spring
Implementing Microservices Security Patterns & Protocols with SpringImplementing Microservices Security Patterns & Protocols with Spring
Implementing Microservices Security Patterns & Protocols with Spring
 
Open wrtでwired likeなwifinwを作ってみた。
Open wrtでwired likeなwifinwを作ってみた。Open wrtでwired likeなwifinwを作ってみた。
Open wrtでwired likeなwifinwを作ってみた。
 
[데이터야놀자2107] 강남 출근길에 판교/정자역에 내릴 사람 예측하기
[데이터야놀자2107] 강남 출근길에 판교/정자역에 내릴 사람 예측하기 [데이터야놀자2107] 강남 출근길에 판교/정자역에 내릴 사람 예측하기
[데이터야놀자2107] 강남 출근길에 판교/정자역에 내릴 사람 예측하기
 
[5분 따라하기] 비주얼 스튜디오 C++에서 JSON 파서 설치하기
[5분 따라하기] 비주얼 스튜디오 C++에서 JSON 파서 설치하기[5분 따라하기] 비주얼 스튜디오 C++에서 JSON 파서 설치하기
[5분 따라하기] 비주얼 스튜디오 C++에서 JSON 파서 설치하기
 
엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나
 
PHP 5.5ネーティブキャッシュの話
PHP 5.5ネーティブキャッシュの話PHP 5.5ネーティブキャッシュの話
PHP 5.5ネーティブキャッシュの話
 
Laravelを用いたゲームサーバーのチューニング
Laravelを用いたゲームサーバーのチューニングLaravelを用いたゲームサーバーのチューニング
Laravelを用いたゲームサーバーのチューニング
 
iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方iostat await svctm の 見かた、考え方
iostat await svctm の 見かた、考え方
 
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용Python과 Tensorflow를 활용한  AI Chatbot 개발 및 실무 적용
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
 
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用
 
Random Thoughts on Paper Implementations [KAIST 2018]
Random Thoughts on Paper Implementations [KAIST 2018]Random Thoughts on Paper Implementations [KAIST 2018]
Random Thoughts on Paper Implementations [KAIST 2018]
 
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라Little Big Data #1. 바닥부터 시작하는 데이터 인프라
Little Big Data #1. 바닥부터 시작하는 데이터 인프라
 
DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信
DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信
DroidKaigi 2019 Chrome Custom Tabsの仕組みから学ぶプロセス間通信
 
トレジャーデータ流,データ分析の始め方
トレジャーデータ流,データ分析の始め方トレジャーデータ流,データ分析の始め方
トレジャーデータ流,データ分析の始め方
 
爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話爆速クエリエンジン”Presto”を使いたくなる話
爆速クエリエンジン”Presto”を使いたくなる話
 
Webアプリ開発者のためのHTML5セキュリティ入門
Webアプリ開発者のためのHTML5セキュリティ入門Webアプリ開発者のためのHTML5セキュリティ入門
Webアプリ開発者のためのHTML5セキュリティ入門
 
iostatの見方
iostatの見方iostatの見方
iostatの見方
 
Go Profiling - John Graham-Cumming
Go Profiling - John Graham-Cumming Go Profiling - John Graham-Cumming
Go Profiling - John Graham-Cumming
 
JSRとJEPとJBSの見方や調べ方について
JSRとJEPとJBSの見方や調べ方についてJSRとJEPとJBSの見方や調べ方について
JSRとJEPとJBSの見方や調べ方について
 

Semelhante a Elasticsearch como gerenciar seus logs com logstash e kibana

Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1Treinamento Elasticsearch - Parte 1
Treinamento Elasticsearch - Parte 1
Luiz Henrique Zambom Santana
 
FLISOL 2017 - SQL Server no Linux
FLISOL 2017 - SQL Server no LinuxFLISOL 2017 - SQL Server no Linux
FLISOL 2017 - SQL Server no Linux
Vithor da Silva e Silva
 
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
George Porto Ferreira
 
Elasticsearch
ElasticsearchElasticsearch
Elasticsearch
Ricardo Peres
 
Cloud search avancado
Cloud search avancadoCloud search avancado
Cloud search avancado
Amazon Web Services LATAM
 
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
Philippe Sevestre
 
Bi ferramentas olap 1
Bi   ferramentas olap 1Bi   ferramentas olap 1
Bi ferramentas olap 1
Ricardo Sonaglio Albano
 
Big data e PostgreSQL
Big data e PostgreSQLBig data e PostgreSQL
Big data e PostgreSQL
Euler 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-2018
Renato Groffe
 
Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014Postgresql como NewSQL - DevCamp 2014
Postgresql como NewSQL - DevCamp 2014
Matheus 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 Costa
Comunidade 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 Oracle
Flávio Farias
 
Arquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine LearningArquitetura Serverless para Machine Learning
Arquitetura Serverless para Machine Learning
Felipe 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/2017
Renato 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 Dados
Alvaro Viebrantz
 
SIGARRA - a case study
SIGARRA - a case studySIGARRA - a case study
SIGARRA - a case study
Filipe 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 dados
Edvaldo Castro
 

Semelhante a 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
 

Mais de 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 Spark
Luiz 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 equipe
Luiz 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 NewSQL
Luiz Henrique Zambom Santana
 
IBM Watson, Apache Spark ou TensorFlow?
IBM Watson, Apache Spark ou TensorFlow?IBM Watson, Apache Spark ou TensorFlow?
IBM Watson, Apache Spark ou TensorFlow?
Luiz 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 Elasticsearch
Luiz Henrique Zambom Santana
 
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
Luiz Henrique Zambom Santana
 
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
Luiz Henrique Zambom Santana
 
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
Luiz 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 NoSQL
Luiz 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 Databases
Luiz Henrique Zambom Santana
 
Normalização
NormalizaçãoNormalização
Consultas básicas em SQL
Consultas básicas em SQLConsultas básicas em SQL
Consultas básicas em SQL
Luiz Henrique Zambom Santana
 
Processamento em Big Data
Processamento em Big DataProcessamento em Big Data
Processamento em Big Data
Luiz Henrique Zambom Santana
 
Seminário de Andamento de Doutorado
Seminário de Andamento de DoutoradoSeminário de Andamento de Doutorado
Seminário de Andamento de Doutorado
Luiz 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
 
Workshop de ELK - EmergiNet
Workshop de ELK - EmergiNetWorkshop de ELK - EmergiNet
Workshop de ELK - EmergiNet
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 PHP
Luiz Henrique Zambom Santana
 

Mais de 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
 

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)

Notas do Editor

  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