-
Notifications
You must be signed in to change notification settings - Fork 1
2 ‐ Instalação e Configuração do Elastic Observability
O Elasticsearch é um motor de busca e análise distribuído, baseado em Lucene, projetado para lidar com uma grande variedade de tipos de dados e formatos. É um componente central do Elastic Stack, atuando como a espinha dorsal para armazenamento, pesquisa e análise de dados.
Funcionalidade Chave:
- Pesquisa e Análise de Dados: O Elasticsearch permite realizar buscas complexas e oferece recursos analíticos poderosos em tempo real, essenciais para interpretar grandes volumes de dados.
- Distribuído por Natureza: Projetado para operar em um ambiente distribuído, oferece alta disponibilidade e capacidade de escalonar horizontalmente, ajustando-se à crescente quantidade de dados e tráfego.
- Schema-Free: Utiliza um formato JSON para os dados, permitindo flexibilidade na indexação de diferentes tipos de dados sem a necessidade de um esquema pré-definido.
No contexto da Elastic Observability, o Elasticsearch desempenha um papel vital no armazenamento e análise de dados de observabilidade (logs, métricas e traces). A capacidade de indexar e pesquisar rapidamente grandes volumes de dados é fundamental para uma observabilidade eficaz, permitindo que as equipes detectem e diagnostiquem problemas de forma rápida e precisa.
A arquitetura do Elasticsearch é projetada para ser altamente escalável e resiliente. Vamos explorar os principais componentes que compõem um cluster do Elasticsearch, incluindo shards, réplicas e tipos de nodes.
- Definição: Um cluster é uma coleção de um ou mais nodes (servidores) que juntos armazenam seus dados e fornecem recursos de indexação e pesquisa.
- Cluster ID: Cada cluster é identificado por um nome único, que é importante para a comunicação entre os nodes.
- Definição: Um node é um único servidor que faz parte do cluster e participa do armazenamento de dados, pesquisa, e outras operações essenciais.
-
Tipos de Nodes:
- Master Node: Responsável pela gestão do cluster, como a criação ou deleção de índices e a adição ou remoção de nodes.
- Data Node: Armazena dados e executa operações relacionadas a dados, como pesquisas e agregações.
- Ingest Node: Utilizado para pré-processamento de dados antes de serem indexados.
- Coordination Node: Encaminha operações para os nodes apropriados.
- Definição: Um índice é uma coleção de documentos que têm características semelhantes. É identificado por um nome único.
- Funcionalidade: O índice é a unidade de armazenamento e pesquisa no Elasticsearch.
-
Shard:
- Definição: Um shard é uma subdivisão de um índice. Cada índice pode ser dividido em múltiplos shards.
- Propósito: Isso permite a distribuição de dados e a realização de operações de forma paralela em diferentes nodes, melhorando o desempenho e a escalabilidade.
-
Réplica:
- Definição: Cada shard pode ter zero ou mais cópias chamadas réplicas.
- Propósito: Réplicas fornecem redundância de dados, o que aumenta a resiliência do sistema e permite consultas paralelas, melhorando a capacidade de leitura.
- Distribuição Automática de Shards: O Elasticsearch distribui automaticamente shards e réplicas pelos nodes do cluster, balanceando a carga e otimizando o uso de recursos.
- Recuperação de Falhas: Em caso de falha de um node, as réplicas nos outros nodes garantem que não haja perda de dados e que o sistema continue operando normalmente.
- Escalabilidade Horizontal: Adicionar mais nodes ao cluster permite que o Elasticsearch redistribua automaticamente shards e réplicas, aumentando a capacidade e o desempenho.
- Pesquisa Distribuída: As consultas são executadas em paralelo nos shards relevantes, resultando em respostas rápidas, mesmo com grandes volumes de dados.
Banco de Dados Relacional | Elasticsearch |
---|---|
Banco de Dados | Índice |
Tabela | Tipo |
Linha | Documento |
Coluna | Campo |
Explicações sobre a tabela:
-
Banco de Dados vs Índice: No Elasticsearch, um índice é como um 'banco de dados' em um sistema de banco de dados relacional. Os índices permitem que você divida seus documentos em grupos distintos.
-
Tabela vs Tipo: Anteriormente, no Elasticsearch, um 'tipo' era como uma 'tabela' em um banco de dados relacional. No entanto, a partir do Elasticsearch 6.0, os tipos estão em processo de desativação e todos os novos índices poderão conter apenas um tipo.
-
Linha vs Documento: No Elasticsearch, um 'documento' é como uma 'linha' em uma tabela de banco de dados relacional. Cada documento possui um conjunto único de campos e cada campo representa um dado específico naquele documento.
-
Coluna vs Campo: No Elasticsearch, um 'campo' é como uma 'coluna' em uma tabela de banco de dados relacional. Cada campo representa um tipo específico de dado, como texto, data, número etc., que é usado para indexar os documentos de maneira eficiente.
Premissa:
Este guia demonstra a instalação e configuração básica do Elasticsearch em modo "single-node" para o Elastic Observability. A configuração de um cluster Elasticsearch não será abordada neste momento.
Sistema Operacional:
- Linux (Ubuntu 20.04 LTS utilizado como exemplo)
Requisitos:
- Java 11 ou superior instalado
- Espaço livre em disco de acordo com o tamanho da heap size e volume de dados a serem armazenados
Passo a Passo:
1. Download e Instalação do Elasticsearch:
cd /tmp
# Baixar o pacote DEB do Elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.1-amd64.deb
# Instalar o Elasticsearch
sudo dpkg -i elasticsearch-8.12.1-amd64.deb
Após a instalação o seguinte resultado é exibido:
--------------------------- Security autoconfiguration information ------------------------------
Authentication and authorization are enabled.
TLS for the transport and HTTP layers is enabled and configured.
The generated password for the elastic built-in superuser is : G9nWw7MUdcRpPTUM_so+
If this node should join an existing cluster, you can reconfigure this with
'/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <token-here>'
after creating an enrollment token on your existing cluster.
You can complete the following actions at any time:
Reset the password of the elastic built-in superuser with
'/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic'.
Generate an enrollment token for Kibana instances with
'/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana'.
Generate an enrollment token for Elasticsearch nodes with
'/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node'.
-------------------------------------------------------------------------------------------------
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executing
sudo systemctl start elasticsearch.service
Observe as seguintes linhas:
The generated password for the elastic built-in superuser is : G9nWw7MUdcRpPTUM_so+
'/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic'.
Iremos ajustar a senha do usuário elastic para uma senha mais simples ok? Para isso vamos executar o comando sugerido para a troca de senha:
# Defina a senha para 123456
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
sudo systemctl daemon-reload sudo systemctl enable elasticsearch.service sudo systemctl start elasticsearch.service
sudo systemctl status elasticsearch
**2. Configuração do Elasticsearch:**
**2.1. Configuração da Heap Size:**
Abra o arquivo de configuração do Elasticsearch:
```bash
sudo vi /etc/elasticsearch/jvm.options
Adicione a seguinte linha na seção jvm.options
:
-Xms1g
-Xmx1g
2.2. Configuração do Elasticsearch (elasticsearch.yml
):
-
Configuração para SSL/TLS no Transporte e HTTP: Abra o arquivo
/etc/elasticsearch/elasticsearch.yml
e adicione as seguintes configurações:cluster.name: cluster-observability node.name: node1 network.host: 0.0.0.0 http.port: 9200 discovery.type: single-node
2.3. Reinicie o Elasticsearch:
Após configurar os certificados e editar o elasticsearch.yml
, reinicie o serviço do Elasticsearch para aplicar as mudanças.
sudo systemctl restart elasticsearch
**2.4. Verificação: Verifique se o Elasticsearch está configurado corretamente com SSL/TLS executando:
curl -X GET "https://localhost:9200" -u "usuario:senha" -k
Substitua "usuário:senha"
pelas credenciais apropriadas.
Tornis Tecnologia - Treinamento em Elastic Observability