ElasticSearch

Revisão de 19h40min de 8 de dezembro de 2016 por Eustáquio (discussão | contribs) (Criou página com '= Fase I - Estudo = <br> == Título da Idéia == Estudo do Elasticsearch Logstash and Kibana (ELK) como ferramenta de análise e processamento de dados. <br> == Obje...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)

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:


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:

  1. https://www.elastic.co/guide/en/elasticsearch/reference/master/_basic_concepts.html
  2. https://www.elastic.co/guide/en/elasticsearch/reference/master/index.html
  3. https://www.elastic.co/guide/en/elasticsearch/reference/2.0/query-dsl-filtered-query.html
  4. https://www.elastic.co/guide/en/kibana/5.x/index.html
  5. 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

Fonte: https://openbr.org/2016/01/07/instalando-o-elastichsearch-logstash-e-kibana-elk-stack-no-ubuntu-14-04/

  • 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