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.