Como Instalar e Configurar o Elasticsearch no Ubuntu 22.04

A previous version of this article was written by Toli.

Introdução

O Elasticsearch é uma plataforma para busca distribuída e análise de dados em tempo real. É uma escolha popular devido à sua usabilidade, recursos poderosos e escalabilidade.

Este artigo irá guiá-lo na instalação do Elasticsearch, configurando-o para o seu caso de uso, garantindo a segurança da sua instalação e começando a trabalhar com seu servidor Elasticsearch.

Pré-requisitos

Antes de seguir este tutorial, você precisará de:

Para este tutorial, trabalharemos com a quantidade mínima de CPU e RAM necessária para executar o Elasticsearch. Observe que a quantidade de CPU, RAM e armazenamento que seu servidor Elasticsearch exigirá depende do volume de logs que você espera.

Passo 1 — Instalando e Configurando o Elasticsearch

Os componentes do Elasticsearch não estão disponíveis nos repositórios de pacotes padrão do Ubuntu. No entanto, eles podem ser instalados com o APT após adicionar a lista de pacotes da Elastic.

Todos os pacotes são assinados com a chave de assinatura do Elasticsearch para proteger o seu sistema contra falsificação de pacotes. Pacotes que foram autenticados usando a chave serão considerados confiáveis pelo seu gerenciador de pacotes. Neste passo, você irá importar a chave pública do Elasticsearch e adicionar a lista de pacotes da Elastic para instalar o Elasticsearch.

Para começar, utilize o cURL, a ferramenta de linha de comando para transferência de dados com URLs, para importar a chave pública do Elasticsearch para o APT. Observe que estamos usando os argumentos -fsSL para silenciar todo o progresso e possíveis erros (exceto em caso de falha do servidor) e permitir que o cURL faça uma solicitação em um novo local se redirecionado. Encaminhe a saída para o comando gpg --dearmor, que converte a chave em um formato que o apt pode usar para verificar pacotes baixados.

  1. curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg

Em seguida, adicione a lista de fontes da Elastic ao diretório sources.list.d, onde o apt irá procurar novas fontes:

  1. echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

A parte [signed-by=/usr/share/keyrings/elastic.gpg] do arquivo instrui o apt a usar a chave que você baixou para verificar informações do repositório e do arquivo para pacotes do Elasticsearch.

Em seguida, atualize suas listas de pacotes para que o APT possa ler a nova origem do Elastic:

  1. sudo apt update

Em seguida, instale o Elasticsearch com este comando:

  1. sudo apt install elasticsearch

Pressione Y quando solicitado para confirmar a instalação. Se for solicitado que você reinicie algum serviço, pressione ENTER para aceitar os padrões e continuar. O Elasticsearch está agora instalado e pronto para ser configurado.

Passo 2 — Configurando o Elasticsearch

Para configurar o Elasticsearch, vamos editar seu arquivo de configuração principal elasticsearch.yml, onde a maioria das opções de configuração é armazenada. Este arquivo está localizado no diretório /etc/elasticsearch.

Use o editor de texto de sua preferência para editar o arquivo de configuração do Elasticsearch. Aqui, vamos usar o nano:

  1. sudo nano /etc/elasticsearch/elasticsearch.yml

Observação: O arquivo de configuração do Elasticsearch está no formato YAML, o que significa que precisamos manter o formato de endentação. Certifique-se de não adicionar espaços extras enquanto edita este arquivo.

O arquivo elasticsearch.yml fornece opções de configuração para seu cluster, nó, caminhos, memória, rede, descoberta e gateway. A maioria dessas opções está pré-configurada no arquivo, mas você pode alterá-las de acordo com suas necessidades. Para os fins de nossa demonstração de uma configuração de servidor único, vamos ajustar apenas as configurações para o host de rede.

O Elasticsearch escuta o tráfego de qualquer lugar na porta 9200. Você vai querer restringir o acesso externo à sua instância do Elasticsearch para evitar que pessoas de fora leiam seus dados ou desliguem seu cluster do Elasticsearch através de sua [API REST] (https://en.wikipedia.org/wiki/Representational_state_transfer). Para restringir o acesso e, portanto, aumentar a segurança, encontre a linha que especifica network.host, descomente-a e substitua seu valor por localhost para que ela fique assim:

/etc/elasticsearch/elasticsearch.yml
. . .
# ---------------------------------- Rede -----------------------------------
#
# Defina o endereço de ligação para um IP específico (IPv4 ou IPv6):
#
network.host: localhost
. . .

Nós especificamos localhost para que o Elasticsearch escute em todas as interfaces e IPs vinculados. Se você deseja que ele escute apenas em uma interface específica, pode especificar seu IP no lugar de localhost. Salve e feche elasticsearch.yml. Se estiver usando nano, você pode fazer isso pressionando CTRL+X, seguido de Y e depois ENTER.

Essas são as configurações mínimas com as quais você pode começar a usar o Elasticsearch. Agora você pode iniciar o Elasticsearch pela primeira vez.

Inicie o serviço do Elasticsearch com systemctl. Dê alguns momentos para o Elasticsearch iniciar. Caso contrário, você pode receber erros sobre não conseguir se conectar.

  1. sudo systemctl start elasticsearch

Em seguida, execute o seguinte comando para habilitar o Elasticsearch para iniciar toda vez que o servidor for iniciado:

  1. sudo systemctl enable elasticsearch

Com o Elasticsearch habilitado no inicialização, vamos avançar para o próximo passo para discutir segurança.

Passo 3 — Protegendo o Elasticsearch

Por padrão, o Elasticsearch pode ser controlado por qualquer pessoa que tenha acesso à API HTTP. Isso nem sempre é um risco de segurança porque o Elasticsearch escuta apenas na interface de loopback (ou seja, 127.0.0.1), que só pode ser acessada localmente. Portanto, nenhum acesso público é possível e, desde que todos os usuários do servidor sejam confiáveis, a segurança pode não ser uma preocupação principal.

Se você precisar permitir acesso remoto à API HTTP, pode limitar a exposição à rede com o firewall padrão do Ubuntu, UFW. Este firewall deve estar ativado se você seguiu as etapas no tutorial prévio Configuração Inicial do Servidor com Ubuntu 22.04.

Agora vamos configurar o firewall para permitir acesso à porta padrão da API HTTP do Elasticsearch (TCP 9200) para o host remoto confiável, geralmente o servidor que você está usando em uma configuração de servidor único, como 198.51.100.0. Para permitir acesso, digite o seguinte comando:

  1. sudo ufw allow from 198.51.100.0 to any port 9200

Depois que isso estiver completo, você pode habilitar o UFW com o comando:

  1. sudo ufw enable

Por fim, verifique o status do UFW com o seguinte comando:

  1. sudo ufw status

Se você especificou as regras corretamente, deverá receber uma saída como esta:

Output
Status: active To Action From -- ------ ---- 9200 ALLOW 198.51.100.0 22 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6)

O UFW deve agora estar habilitado e configurado para proteger a porta 9200 do Elasticsearch.

Se você deseja investir em proteção adicional, o Elasticsearch oferece o plugin comercial Shield para compra.

Passo 4 — Testando o Elasticsearch

Neste momento, o Elasticsearch deve estar em execução na porta 9200. Você pode testá-lo com o cURL e uma solicitação GET.

  1. curl -X GET 'http://localhost:9200'

Você deverá receber a seguinte resposta:

Output
{ "name" : "elastic-22", "cluster_name" : "elasticsearch", "cluster_uuid" : "DEKKt_95QL6HLaqS9OkPdQ", "version" : { "number" : "7.17.1", "build_flavor" : "default", "build_type" : "deb", "build_hash" : "e5acb99f822233d62d6444ce45a4543dc1c8059a", "build_date" : "2022-02-23T22:20:54.153567231Z", "build_snapshot" : false, "lucene_version" : "8.11.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }

Se receber uma resposta semelhante à mostrada acima, o Elasticsearch está funcionando corretamente. Caso contrário, certifique-se de ter seguido corretamente as instruções de instalação e tenha permitido algum tempo para que o Elasticsearch inicie completamente.

Para realizar uma verificação mais completa do Elasticsearch, execute o seguinte comando:

  1. curl -X GET 'http://localhost:9200/_nodes?pretty'

No resultado do comando acima, você pode verificar todas as configurações atuais para o nó, cluster, caminhos da aplicação, módulos e muito mais.

Passo 5 — Utilizando o Elasticsearch

Para começar a usar o Elasticsearch, vamos primeiro adicionar alguns dados. O Elasticsearch utiliza uma API RESTful, que responde aos comandos CRUD usuais: criar, recuperar, atualizar e excluir. Para trabalhar com ele, utilizaremos o comando cURL novamente.

Você pode adicionar sua primeira entrada assim:

  1. curl -XPOST -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1' -d '{ "message": "Hello World!" }'

Você deve receber a seguinte resposta:

Output
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}

Com cURL, enviamos uma solicitação HTTP POST para o servidor Elasticsearch. O URI da solicitação foi /tutorial/helloworld/1 com vários parâmetros:

  • tutorial é o índice dos dados no Elasticsearch.
  • helloworld é o tipo.
  • 1 é o ID de nossa entrada no índice e tipo acima.

Você pode recuperar esta primeira entrada com uma solicitação HTTP GET.

  1. curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1'

Este deve ser o resultado:

Output
{"_index":"tutorial","_type":"helloworld","_id":"1","_version":1,"found":true,"_source":{ "message": "Hello, World!" }}

Para modificar uma entrada existente, você pode usar uma solicitação HTTP PUT.

  1. curl -X PUT -H "Content-Type: application/json" 'localhost:9200/tutorial/helloworld/1?pretty' -d '
  2. {
  3. "message": "Hello, People!"
  4. }'

O Elasticsearch deve reconhecer a modificação bem-sucedida assim:

Output
{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "result" : "updated", "_shards" : { "total" : 2, "successful" : 1, "failed" : 0 }, "_seq_no" : 1, "_primary_term" : 1 }

No exemplo acima, modificamos a mensagem da primeira entrada para “Olá, Pessoal!”. Com isso, o número da versão foi automaticamente aumentado para 2.

Você pode ter notado o argumento extra pretty na solicitação acima. Ele habilita o formato legível para humanos para que você possa escrever cada campo de dados em uma nova linha. Você também pode “embelezar” seus resultados ao recuperar dados para obter uma saída mais legível, inserindo o seguinte comando:

  1. curl -X GET -H "Content-Type: application/json" 'http://localhost:9200/tutorial/helloworld/1?pretty'

Agora a resposta será formatada para um humano analisar:

Output
{ "_index" : "tutorial", "_type" : "helloworld", "_id" : "1", "_version" : 2, "_seq_no" : 1, "_primary_term" : 1, "found" : true, "_source" : { "message" : "Hello, People!" } } }

Agora adicionamos e consultamos dados no Elasticsearch. Para aprender sobre as outras operações, por favor, consulte a documentação da API.

Conclusão

Você agora instalou, configurou e começou a usar o Elasticsearch. Para explorar ainda mais a funcionalidade do Elasticsearch, consulte a documentação oficial do Elasticsearch.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-elasticsearch-on-ubuntu-22-04