Configuração do Elasticsearch e Kibana com Docker Compose

Implantação do Elasticsearch 8.18.0 e Kibana 8.18.0 via Docker

Esta guia descreve a configuração do Elasticsearch e Kibana utilizando Docker Compose. A abordagem difere entre sistemas Linux e Windows devido à maneira como os volumes são gerenciados.

Nota: Para usuários do Windows, recomenda-se criar explicitamente um volume do Docker antes de iniciar os contêineres. Utilize docker volume create nome-do-volume e, em seguida, referencie esse volume no arquivo docker-compose.yaml. Usuários Linux podem montar diretamente os diretórios do host.

1. Criação do Arquivo docker-compose.yaml

Crie um arquivo docker-compose.yaml com o seguinte conteúdo. As configurações de segurança e memória do Elasticsearch estão pré-definidas.

version: '3.8'
services:
  elastic_search:
    image: docker.elastic.co/elasticsearch/elasticsearch:8.18.0
    container_name: es_node_01
    environment:
      - discovery.type=single-node
      - xpack.security.enabled=true
      - xpack.security.http.ssl.enabled=false
      - xpack.security.transport.ssl.enabled=false
      - "ES_JAVA_OPTS=-Xms1g -Xmx2g"
      - ELASTIC_PASSWORD=SenhaForte123
    ports:
      - "9200:9200"
    volumes:
      - es_data:/usr/share/elasticsearch/data
    networks:
      - rede_elk

  kibana_dashboard:
    image: docker.elastic.co/kibana/kibana:8.18.0
    container_name: kibana_instance
    ports:
      - "5601:5601"
    environment:
      - ELASTICSEARCH_HOSTS=http://es_node_01:9200
      - ELASTICSEARCH_USERNAME=kibana_system
      - ELASTICSEARCH_PASSWORD=SenhaKibana456
    depends_on:
      - elastic_search
    volumes:
      - kibana_config:/usr/share/kibana/config
    networks:
      - rede_elk

volumes:
  es_data:
  kibana_config:

networks:
  rede_elk:
    driver: bridge

2. Inicialização e Extração das Configurações do Elasticsearch

Inicei apenas o serviço do Elasticsearch primeiro. Em seguida, copie o diretório de configuração gerado para o seu host. Isso permite a personalização persistente.

# Iniciar o Elasticsearch em segundo plano
docker compose up elastic_search -d

# Aguarde o contêiner estar totalmente iniciado antes de prosseguir
sleep 10

# Copiar a configuração padrão para o diretório do host
docker cp es_node_01:/usr/share/elasticsearch/config ./elasticsearch_config

3. Definição de Credenciais para o Acesso do Kibana

O Kibana precisa de uma conta de serviço para se comunicar com o Elasticsearch. Redefina a senha do usuário kibana_system de forma interativa.

docker exec -it es_node_01 bin/elasticsearch-reset-password -u kibana_system -i
# Você será solicitado a inserir e confirmar a nova senha. Use a mesma senha definida
# no seu arquivo YAML (ex: 'SenhaKibana456').

4. Enicialização do Kibana e Extração de sua Configuração

Após o Elasticsearch estar confgiurado, inicie o Kibana e copie sua configuração para o host para edição.

# Iniciar o Kibana
docker compose up kibana_dashboard -d

# Copiar a configuração do Kibana
docker cp kibana_instance:/usr/share/kibana/config ./kibana_config

5. Geração de Chaves de Criptografia para o Kibana

Execute o comando abaixo dentro do contêiner do Kibana para gerar chaves de criptografia necessárias para recursos como salvamento de objetos e relatórios.

docker exec -it kibana_instance bin/kibana-encryption-keys generate
# A saída fornecerá três chaves. Copie-as.

Exemplo de saída:

xpack.encryptedSavedObjects.encryptionKey: a1b2c3d4e5f678901234567890123456
xpack.reporting.encryptionKey: 1234567890abcdef1234567890abcdef
xpack.security.encryptionKey: fedcba9876543210fedcba9876543210

6. Personalização do Kibana (Idioma e Chaves)

Edite o arquivo kibana.yml que você copiou para o host para definir o idioma e inserir as chaves de criptografia geradas.

# Usando seu editor de texto preferido
nano ./kibana_config/kibana.yml

# Adicione as seguintes linhas no final do arquivo:
i18n.locale: "pt-BR"
xpack.encryptedSavedObjects.encryptionKey: "cole_a_chave_aqui"
xpack.reporting.encryptionKey: "cole_a_chave_aqui"
xpack.security.encryptionKey: "cole_a_chave_aqui"

7. Reconfiguração do Ambiente Completo

Para aplicar as configurações customizadas, é necessário parar e recriar os contêineres. O diretório docker-compose.yaml deve ser atualizado para montar os volumes com as configurações editadas.

Modifique a seção volumes do serviço elastic_search para:

    volumes:
      - es_data:/usr/share/elasticsearch/data
      - ./elasticsearch_config:/usr/share/elasticsearch/config

Modifique a seção volumes do serviço kibana_dashboard para:

    volumes:
      - ./kibana_config:/usr/share/kibana/config

Execute os comandos para reimplantar o stack:

# Parar todos os serviços
docker compose down

# Recriar e iniciar com as novas configurações
docker compose up -d

Acesse o Kibana em http://localhost:5601 e faça login com o usuário elastic e a senha SenhaForte123 definida no início.

Tags: docker-compose elasticsearch-8 kibana-8 devops configuracao

Publicado em 5-30 08:57 por Thomas