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 pesquisa 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 através da instalação do Elasticsearch, configurando-o para o seu caso de uso, garantindo a sua instalação e começando a trabalhar com o seu servidor Elasticsearch.

Pré-requisitos

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

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

Passo 1 — Instalação e Configuração do 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 fontes de pacotes da Elastic.

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

Para começar, use o cURL, a ferramenta de linha de comando para transferir dados com URLs, para importar a chave pública GPG do Elasticsearch no APT. Observe que estamos usando os argumentos -fsSL para silenciar todo o progresso e possíveis erros (exceto 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 Elastic ao diretório sources.list.d, onde o apt buscará 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 os 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

Depois, instale o Elasticsearch com este comando:

  1. sudo apt install elasticsearch

Pressione Y quando solicitado para confirmar a instalação. Se for solicitado a reiniciar algum serviço, pressione ENTER para aceitar os padrões e continuar. O Elasticsearch agora está 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 estão armazenadas. Este arquivo está localizado no diretório /etc/elasticsearch.

Use seu editor de texto preferido para editar o arquivo de configuração do Elasticsearch. Aqui, usaremos o nano:

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

Nota: O arquivo de configuração do Elasticsearch está no formato YAML, o que significa que precisamos manter o formato de indentação. Certifique-se de não adicionar espaços extras ao editar 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, ajustaremos 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 terceiros leiam seus dados ou desliguem o seu cluster do Elasticsearch através da 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 o seu valor por localhost para que fique assim:

/etc/elasticsearch/elasticsearch.yml
. . .
# ---------------------------------- Network -----------------------------------
#
# 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 o seu IP no lugar de localhost. Salve e feche o arquivo elasticsearch.yml. Se estiver usando o nano, pode fazê-lo pressionando CTRL+X, seguido de Y e então 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 o systemctl. Dê alguns momentos para o Elasticsearch inicializar. Caso contrário, você pode receber erros sobre não ser capaz de se conectar.

  1. sudo systemctl start elasticsearch

Em seguida, execute o seguinte comando para habilitar o Elasticsearch a iniciar sempre que o seu servidor for inicializado:

  1. sudo systemctl enable elasticsearch

Com o Elasticsearch habilitado durante a inicialização, vamos avançar para a próxima etapa para discutir a segurança.

Passo 3 — Segurança do 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 ouve apenas na interface de loopback (ou seja, 127.0.0.1), que só pode ser acessada localmente. Assim, 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 grande preocupação.

Se você precisar permitir acesso remoto à API HTTP, pode limitar a exposição à rede com o firewall padrão do Ubuntu, UFW. Este firewall já deve estar ativado se você seguiu as etapas no tutorial de 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 disso, 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 agora deve 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 ponto, o Elasticsearch deve estar em execução na porta 9200. Você pode testá-lo com cURL e um pedido GET.

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

Você deve 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 você receber uma resposta semelhante à acima, o Elasticsearch está funcionando corretamente. Caso contrário, verifique se você seguiu corretamente as instruções de instalação e se permitiu algum tempo para o Elasticsearch iniciar completamente.

Para realizar uma verificação mais detalhada 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 de aplicativo, módulos e muito mais.

Passo 5 — Usando o Elasticsearch

Para começar a usar o Elasticsearch, vamos primeiro adicionar alguns dados. O Elasticsearch usa uma API RESTful, que responde aos comandos CRUD habituais: criar, recuperar, atualizar e excluir. Para trabalhar com isso, usaremos 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 da nossa entrada no índice e tipo acima mencionados.

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'

Isso deve ser o resultado obtido:

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 message 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 que um humano possa analisá-la:

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, verifique 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