Fase I - Estudo
Título da Idéia
Estudo do Elasticsearch Logstash and Kibana (ELK) como ferramenta de análise e processamento de dados.
Objetivos
Estudar as características principais do ELK, apresentar vantagens, modo de instalação, desempenho.
Conceito
ElasticSearch é um open source, altamente distribuível e facilmente escalável, o qual pode acionar pesquisas de forma rápidas e eficiente e com diversos tipos de integração, atrelado à diversos outros softwares do mesmo grupo (Elastic) , como:
- Logstash
- Kibana
- Beats
- Map
- Graph
- Marvel
Sendo os 3 primeiros do X-packet , distribuídos de forma gratuita, usados para um desenvolvimento de software do tipo ELK.
O Logstash, é um gerenciador de Logs, capaz de interagir com diversos tipo de dados, inclusive mySQL, e enviar os index para o Elasticsearch de forma organizada e distribuída conforme será indicado à seguir, o Beats seria um tipo intermediário capaz de auxilia na aquisição de dados.
Kibana é um open source ligado ao Elasticsearch e capaz de fazer diversos tipos de análises gráficas dos dados enviados, uma interface extremamente rápida e capaz de atualizar em tempo real.
Todos os softwares são escaláveis , o conjunto ELK é ideal para gerar relatórios em Big Datas.
Características
A plataforma elastic , com ênfase no serviço oferecido pelo ELK stack, caracteriza-se pelos seguintes detalhes:
- Plataforma Opensource;
- Permite crescimento horizontal;
- Suportabilidade de um grande volume de dados;
- Eficiência de consultas e buscas para gerar relatórios;
- Altamente escalável;
- Grande suporte GitHub;
- Comunicação com diversos banco de dados;
Estudo Dirigido
Primeiramente, foi pesquisado quais as produtos dentro do pacote Elastic (1) existem , em seguida foi caracterizado cada um neste documento: . Após a análise superficial,( https://docs.google.com/document/d/140Hw2CCAIXIzhyCTRvSO69wCOsJGVjgS_h3qep6Aat8/edit?usp=sharing ) foram selecionados os produtos open source que compõem o ELK e aprofundado os estudos, buscando formas de interagir com bancos de dados MySQL, e integração com outras plataformas como Zabbix, após a análise foi instalado o ELK na máquina dos pesquisadores afim de um estudo empírico.
Obs: Para fazer o download é possível seguir os passos do próprio site do produto, outros sites que são de fácil entendimento [2,3].
Fontes:
- 1-https://www.elastic.co/products Acessado em 08 de novembro de 2016
- 2-https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-*3-stack-on-ubuntu-14-04 Acessado em 08 de novembro de 2016
- 3-https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-16-04 Acessado em 08 de novembro de 2016
Fase II - Ensino
Conteúdo
Aqui serão adicionados alguns conteúdos que foram considerados pontos de atenção. Os quais são conceitos implícitos dos 3 softwares atrelados ao ELK.
ELASTICSEARCH:
O elasticsearch possui alguns conceitos básicos importantes, que caracterizam seu processo sendo eles [1] :
- Near Realtime (NRT): Elasticsearch é caracterizado por ser uma busca em tempo quase real, tendo pequena latência.
- Cluster: uma rede, em que consiste um conjunto de nodes que são servers , um cluster está relacionado pelas buscas e indexação , mantendo integridade dos dados sendo por padrão nomeado como “elasticsearch”. Caso utilize o mesmo nome de cluster em ambientes diferente, pode ocorrer dos nodes irem para locais errados uma vez que sempre estão relacionados.
- Nodes: São os servers do sistema, armazena informações e auxilia o cluster nas operações de indexação e busca, cada server tem um nome único e universal UUID (Universal Unique IDentifier) de forma randomizada, sendo que são anexados aos clusters de acordo com o nome do mesmo.
- Index: Identificado sempre em letras minúsculas ( lowercase ), é um conjunto documentos que relacionam-se ( database ) , podem há limites par quatidade de index por cluster.
- Type: Atua juntamente ao index para formar uma espécie de chave composta que auxilia nas operações. São as tabelas dentro de um index.
- Document: Um documento é um JSON, sendo este dado arquivado arquivado dentro de um type no index. Equivale as linhas (row) dos dados.
- Shards: São as subdivisões de um index, pois em alguns casos este pode sobrepor a quantidade de armazenamento destinado ao nodes , sendo necessária esta subdivisão. Este método permite dividir e escalar horizontalmente o volume do conteúdo, e distribua e paralelize operações entre fragmentos aumentando assim o desempenho da operação. Padronizado 5 shards primários. Os shards não podem ser alterados depois que criados os index.
- Replicas: No software, por padrão cria réplicas dos shards para garantir a integridade dos dados, previne as falhas nos servidores. São instâncias independentes, rodam apenas consultas, sendo instâncias independentes. Por padrão é definido 1 replica por index, podem ser solicitados 0 réplicas, caso queira maior desempenho e menor armazenamento.
Além dos conceitos básicos, existem ideias avançadas que caracterizam o elasticsearch.
- Analyzers: Processo para separação das palavras e indexação, consiste em 3 passos (Character Filters, Tokenizer, Token Filters), existem 4 tipos padronizados de analyzer :
- Standard analyzer: default, ideal para qualquer tipo de linguagem.Separa pelo fim das palavras e retira as pontuações (exceto “ _ “), sempre em letra minúscula.
- Simple analyzer: Divide o texto onde não for letra , desconsiderando inclusive números.
- Whitespace analyzer: Separa onde tem espaço.
- Language analyzers: Separa levando em conta a língua, com sinônimos , por exemplo.
- Inverted Index: Diferente de alguns métodos convencionais de buscas em banco de dados, em um documento procura o “term”, no elaticsearch, o “term” é usado para achar em quais documentos ele está, sendo que todas as palavras únicas que aparecem em cada document estão listadas, o próprio elasticsearch separa em cada index suas lista de palavras. Desta forma aumenta o desempenho.
- Query e Filter: Para não extender este conceito, uma vez que estas características estão relacionadas com sintaxes, é possível verificar em [2].
- Pagination e Scroll: O Scroll, assemelha-se à um “cursor” no banco de dados tradicional. Permite fazer uma pesquisa inicial e manter a atualização de páginas de modo que ele pode preservar sua exibição o que o indice parecia como no momento em que começou.
KIBANA
Software do Elasticsearch, capaz de gerar relatórios gráficos assim como alertas, tem como principais características visualizadas em (4):
- Exporta arquivos para .CSV;
- Pode fazer Regex, para auto completar pesquisas;
- Faz pesquisas relacionadas ao “term”;
- 10 milhões de dados por dia, até 2 mil por segundo;
- Multiplataforma;
- Não é case sensitive;
- É possível compartilhar o link do relatório para outra pessoa que tenha acesso;
- Múltiplos tipos de informações em uma só tabela;
- É possível schedular;
- Permite o compartilhamento por email;
- Gera alertas;
- Não tem LDAP (Necessita de shield ( software pago));
- Não há muitas manipulações;
- Algumas funções tem de ser implementadas no próprio ElasticSearch;
- Elastic é o única fonte de dados;
- Trabalha por padrão na porta: http://localhost:5601/
- O kibana para torna-lo “privado” necessita pagar um Shield, para fechá-lo.
LOGSTASH
Software da plataforma Elastic, que ajuda a processar os logs e outros dados de eventos de uma grande variedade de sistemas , incluindo MySQL e Zabbix. Possui algumas características como observados em [5]:
- Recebe os logs de diferentes fontes, realiza as transformações, normaliza e agrupa os mesmos, indexa no ElasticSearch e o Kibana os apresenta de forma gráfica
- Permite a análise e formatação de dados antes que sejam inseridos no banco;
- Permite a análise de dados em grande escala;
- Possui uma maneira rápida e conveniente de customizar a lógica de análise de dados em grande escala, devido aos formatos personalizados dos logs fornecidos pelas diferentes aplicações;
- Possui uma API para desenvolvimento de plugins;
AQUISIÇÃO DE DADOS DO ELK:
O Logstash capts os Logs, em seguida entrega ao ElasticSearch o qual fornecerá os dados ao Kibana para análise gráfica.
DESEMPENHO:
Com relação ao desempenho do ELK , é determinado pela quantidade de dados que serão explorados , filtros, dentre outros. Sendo que no logstash é possível limitar a capacidade de logs que serão armazenados.
Referências:
- https://www.elastic.co/guide/en/elasticsearch/reference/master/_basic_concepts.html
- https://www.elastic.co/guide/en/elasticsearch/reference/master/index.html
- https://www.elastic.co/guide/en/elasticsearch/reference/2.0/query-dsl-filtered-query.html
- https://www.elastic.co/guide/en/kibana/5.x/index.html
- https://www.elastic.co/guide/en/logstash/5.x/index.html
Instalação do ELK e integração com o MySQL
Todos os testes foram feitos para o Ubuntu 14.04 Disponível para download neste link: http://releases.ubuntu.com/14.04/
Pré-requisitos
- Para instalar e executar o elastic, há necessidade de ter o java instalado na máquina, é possível através das seguintes instruções:
sudo add-apt-repository -y ppa:webupd8team/java
sudo apt-get update
sudo apt-get -y install oracle-java8-installer
- Para instalação do banco de dados MySQL:
sudo apt-get update
sudo apt-get install mysql-server
sudo mysql_secure_installation
sudo mysql_install_db
O acesso que foi usado para este teste foi root.
Fonte: https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-14-04
Apresentações contendo os conceitos básicos já abordado e a conexão com Mysql:
Fase III - Exemplo de Caso de Negócio
Benefício para a Algar Telecom
- Maior agilidade para gerar relatórios;
- Maior confiabilidade dos dados;
- Redução de custos, pois trata-se de uma plataforma Opensource.
Benefícios para o cliente
- Para Algar Telecom, os associados teriam maior flexibilidade para gerar relatórios, reduzindo o tempo para este serviço;
- Capacidade de atuação da equipe, uma vez que o ELK cria alarmes para os usuários que podem agilizar a atuação de serviços;
Direcionadores chave para esta iniciativa
Associar ao banco de dados da Algar Telecom, procurar servidores internos para o serviço
Possíveis modelos de negócios
Business Case
Fase IV - Protótipo orientado ao Negócio
Trata-se de um P&D exclusivamente de estudos, sem prototipação.
Escopo
Explique o escopo deste protótipo
Limitações
Informe sobre as limitações
PoC
Desenvolva um PoC (Proof of Concept)
Detalhamento Técnico
Descreva especificamente os aspectos técnicos desta pesquisa
Cronograma Macro
Histórico
Pesquisadores
- Eustáquio Fernandes Jr
- Matheus Rodrigues Rosado da Silva
- Pedro Henrique Ribeiro Freitas