Este documento apresenta como o Elasticsearch, Kibana, Logstash e Codahale Metrics podem ser usados para monitoramento em tempo real de sistemas. O Elasticsearch é usado para armazenar e pesquisar dados, o Logstash coleta e envia dados para o Elasticsearch, o Kibana permite visualizar e analisar os dados armazenados no Elasticsearch e o Codahale Metrics gera métricas sobre o desempenho do código que podem ser enviadas para o Elasticsearch. Exemplos demonstram como esses ferramentas podem ser usadas para detectar anomalias, me
2. Marcus Lacerda
❖ Formado UFU em 2002
❖ JAVA, .NET, JS, ESB (...)
❖ Arquiteto na Ci&T ~9 anos
❖ Bike e Kartista frustrado ;-)
marcus-lacerdaa
marcuslacerda
@mlacerda_cit
43. var node = new Uri("http://localhost:9200");
var config = new ConnectionConfiguration(node);
var client = new ElasticsearchClient(config);
PM > Install-Package Elasticsearch.Net
var myJson = @"{ ""text"" : ""hello world"" }";
client.Index("myindex","mytype","1", myJson);
.Net API
44. client.search({
q: 'devday'
}).then(function (body) {
var hits = body.hits.hits;
}, function (error) { … });
var client = new elasticsearch.Client({
host: 'localhost:9200'
});
var elasticsearch = require('elasticsearch');
Javascript API
45. REST API
● Microsoft .NET
● JavaScript
● Java (binary protocol)
● Ruby
● Python
● PHP
● Perl
● C++
Outras Bibliotecas
57. Java library que fornece um conjunto de
ferramentas poderosas para medir o
comportamento do seu código no ambiente de
produção
source: http://metrics.dropwizard.io
Codahale Metrics
Conteúdo apresentado está disponível nesse link. Será divulgado no momento da apresentação no evento.
Passar a ideia do projeto
-> milhares de usuários conectados no sistema
-> múltiplos dispositivos: mobile, browser, relogia
-> centranas de integrações e APIs públicas
Link com apresentação do Rodrigão (desafios)
-> http://pt.slideshare.net/RodrigoStefaniDoming/qcon-rio-2015-arquitetura-incremental
Características:
O projeto tinha alguns requisitos bem cabulosos!
24x7, isso muda impacta bastante algumas decisões, principalemnte no sentido de quanto voce consegue mensurar dela.
usuários simultaneos 1k, nessa era atual onde normalmente falamos de milhares/milhoes de usuários 1k parece pouco, mas temos que lembrar que este é um sistema, complexo, que executa regras de negócio, faz gestão, processa indicadores, para que esses 1k usuários que estão ativos 24hs pod dia 7 dias por semana.
300k requiests / dia.
Para esse desafio nos acabamos precisando de
PLATAFORMA: "a brincadeira começa quando os usuários começam a utilizar a sua plataforma". Como estar preparado para a vida real?
Como permitir um trabalho de analitics e detecção de anomalias em tempo real?
Precisamos de informações (estatística) sobre o que está acontecendo "dentro" da solução?
Ter condições de analisar dados estátisticos para saber o que está acontecendo na solução e tomar medidas proativas durante a implantação.
Técnica como:
Capture domain events explicitly
Real user monitoring
Structured logging / events
Como permitir um trabalho de analitics e detecção de anomalias em tempo real?
Precisamos de informações (estatística) sobre o que está acontecendo "dentro" da solução?
Ter condições de analisar dados estátisticos para saber o que está acontecendo na solução e tomar medidas proativas durante a implantação.
Técnica como:
Capture domain events explicitly
Real user monitoring
Structured logging / events
Essas informações existem, mas geralmente estão desestruturadas
LOGS da aplicação
LOGS dos servidores
Requests dos usuários
SQL vs Requests
Mais importante do que ter todas as perguntas antecipadamente era ter uma forma fácil de encontrar o que precisávamos
Precisamos de informações (estatística) sobre o que está acontecendo "dentro" da solução?
Ter condições de analisar dados estátisticos para saber o que está acontecendo na solução e tomar medidas proativas durante a implantação.
Repositório central e estruturado das informações técnicas
Plataforma flexível e poderosa de pesquisa que permitisse investigar o que está acontecendo
Fazer o link com Sonar para análise estática de código que já é comum nos projetos quando se fala de Continuous Integration.
Repositório central e estruturado das informações técnicas
Plataforma flexível e poderosa de pesquisa que permitisse investigar o que está acontecendo
Fazer o link com Sonar para análise estática de código que já é comum nos projetos quando se fala de Continuous Integration.
ElasticSearch is an open source, RESTful search engine built on top of Apache Lucene and released under an Apache license. It is Java-based and can search and index document files in diverse formats.
ElasticSearch has been compared to Apache Solr and offers several notable features:
Provides a scalable search solution.
Performs near-real-time searches.
Provides support for multi-tenancy.
Streamlines backup processes and ensures data integrity.
An index can be easily recovered in a case of a server crash.
Uses Javascript Object Notation (JSON) and Java application program interfaces (APIs).
Automatically indexes JSON documents.
Indexing uses unique type-level identifiers.
Each index can have its own settings.
Searches can be done with Lucene-based querystrings.
Grandes players estão usando
Stackoverflow usava Lucene.NET. Apos problemas de performance, mudou pra elastic (isso a uns 2 anos atras).
-> http://meta.stackexchange.com/questions/160100/a-new-search-engine-for-stack-exchange
-> http://highscalability.com/blog/2014/7/21/stackoverflow-update-560m-pageviews-a-month-25-servers-and-i.html
-> Zendesk migrou do Solr para Elasticsearch depois de problemas para escalar seu produto
https://www.elastic.co/elasticon/2015/sf/from-apache-to-solr-to-elasticsearch-evolution-zendesk-search-experience
Compass foi descontinuado para dar vida ao Elasticsearch, com grande mindset deste ser realmente distribuido
Precisa ter o java 7 instalado
Baixar o elasticsearch no site e descompatar o zip
Arquivo pequeno. Menos de 20 megas
Executar o comando ./bin/elasticsearch
Repositório central e estruturado das informações técnicas
Plataforma flexível e poderosa de pesquisa que permitisse investigar o que está acontecendo
Fazer o link com Sonar para análise estática de código que já é comum nos projetos quando se fala de Continuous Integration.
Mostrar o pacote de instacal
witix-dashbaord
witix-client
Mostrar elasticserach funcionando
http://localhost:7001/witix/es
http://localhost:7001/witix/head/ (backoffice de administracao)
Caso mais comum Input (File) para Output (Elasticsearch)
Precisa ter o java 7 instalado
Vaixar o logstash no link logstash/logstash-1.5.4.zip e descompacta-lo
Arquivo pequeno. Menos de 20 megas
Repositório central e estruturado das informações técnicas
Plataforma flexível e poderosa de pesquisa que permitisse investigar o que está acontecendo
Fazer o link com Sonar para análise estática de código que já é comum nos projetos quando se fala de Continuous Integration.
Mostrar o pacote de instacal
witix-dashbaord
witix-client
Mostrar elasticserach funcionando
http://localhost:7001/witix/es
http://localhost:7001/witix/head/ (backoffice de administracao)
Repositório central e estruturado das informações técnicas
Plataforma flexível e poderosa de pesquisa que permitisse investigar o que está acontecendo
Fazer o link com Sonar para análise estática de código que já é comum nos projetos quando se fala de Continuous Integration.
Repositório central e estruturado das informações técnicas
Plataforma flexível e poderosa de pesquisa que permitisse investigar o que está acontecendo
Fazer o link com Sonar para análise estática de código que já é comum nos projetos quando se fala de Continuous Integration.
Repositório central e estruturado das informações técnicas
Plataforma flexível e poderosa de pesquisa que permitisse investigar o que está acontecendo
Fazer o link com Sonar para análise estática de código que já é comum nos projetos quando se fala de Continuous Integration.
Trabalho de analitics e detecção de anomalias em tempo real!