Docker Compose para Elasticsearch & Kibana: Configuração e instalação

Neste artigo, exploraremos como implantar  Elasticsearch  e  Kibana usar Docker Compose. Esses são dois componentes principais do ELK Stack( Elasticsearch, Logstash, Kibana), ajudando você a pesquisar, analisar e visualizar dados de forma eficaz. Abaixo estão as configurações detalhadas e como cada componente funciona.

1. Elasticsearch

a. Configuração básica

Elasticsearch está configurado para ser executado em um contêiner Docker com os seguintes parâmetros:

  • Imagem: Elasticsearch A imagem   oficial, versão 8.17.2, é usada.

  • Modo de nó único:  habilitado por meio da variável de ambiente  discovery.type=single-node.

  • Segurança:  A segurança do X-Pack está habilitada( xpack.security.enabled=true) e a senha do  elastic  usuário está definida como  YVG6PKplG6ugGOw.

  • Rede:  O Elasticsearch escuta em todas as interfaces de rede( network.host=0.0.0.0).

  • Memória JVM:  Configurada com  -Xms1g  (memória inicial) e  -Xmx1g  (memória máxima).

banda Ports ​ Volumes

  • Ports:  A porta  9200  (HTTP) e  9300  (comunicação interna) são mapeadas do contêiner para o host.

  • Volumes:  Os dados do Elasticsearch são armazenados no  elasticsearch-data  volume.

c. Verificação de saúde

Um healthcheck é configurado para monitorar Elasticsearch o status do chamando a  /_cluster/health  API com o  elastic usuário. Se a API não responder, o contêiner será reiniciado.

2. Kibana

a. Configuração básica

Kibana está configurado para se conectar Elasticsearch e ser executado em um contêiner Docker com os seguintes parâmetros:

  • Imagem: Kibana A imagem   oficial, versão 8.17.2, é usada.

  • Elasticsearch Conexão:  O Elasticsearch endereço está definido como  http://elasticsearch:9200.

  • Autenticação:  O Kibana usa o  kibana_user  com a senha  YVG6PKplG6ugGOw  para se conectar ao Elasticsearch.

b. Ports e Redes

  • Ports:  A porta  5601  é mapeada do contêiner para o host para acessar a Kibana interface.

  • Redes:  Kibana está conectado ao  elk-network.

c. Dependência de Elasticsearch

Kibana só inicia depois que Elasticsearch estiver pronto, garantindo uma conexão bem-sucedida entre os dois serviços.

3. Volume e Rede

a. Volume

  • elasticsearch-data:  Este volume é usado para armazenar Elasticsearch dados, garantindo a persistência dos dados mesmo se o contêiner for excluído.

b. Rede

  • elk-network:  Uma  bridge  rede é criada para conectar Elasticsearch e Kibana serviços.


4. Como usar

a. Iniciando os Serviços

Para iniciar Elasticsearch e Kibana executar o seguinte comando:

docker-compose up -d

b. Criando um Kibana usuário(se necessário)

Se você quiser usar um usuário dedicado para Kibana, você pode criar um com o seguinte comando:

docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
c. Criando um Token(se estiver usando tokens)

Para usar uma token senha em vez de uma senha, você pode criar uma com o seguinte comando:

docker exec -it elasticsearch /usr/share/elasticsearch/bin/elasticsearch-service-tokens create elastic/kibana kibana-token

5. Solução de problemas

  • Se você encontrar erros, poderá verificar os logs do contêiner usando:

    docker logs elasticsearch 
    docker logs kibana
  • Para reiniciar Kibana:

    docker-compose down kibana && docker-compose up -d kibana

Conteúdo completo do Docker Compose arquivo

Abaixo está o conteúdo completo do  docker-compose-els.yml  arquivo:

version: '3.7'  
  
services:  
  elasticsearch:  
    image: docker.elastic.co/elasticsearch/elasticsearch:8.17.2  
    container_name: elasticsearch  
    environment:  
   - discovery.type=single-node  
   - xpack.security.enabled=true  
   - ELASTIC_PASSWORD=you_password  
   - network.host=0.0.0.0  
   - ES_JAVA_OPTS=-Xms1g -Xmx1g  
    ports:  
   - '9200:9200'  
   - '9300:9300'  
    volumes:  
   - elasticsearch-data:/usr/share/elasticsearch/data  
    ulimits:  
      memlock:  
        soft: -1  
        hard: -1  
    networks:  
   - elk-network  
  
    healthcheck:  
      test: ["CMD-SHELL", "curl -u elastic:YVG6PKplG6ugGOw --silent --fail localhost:9200/_cluster/health || exit 1"]  
      interval: 10s  
      retries: 5  
      start_period: 30s  
      timeout: 5s  
  
  kibana:  
    image: docker.elastic.co/kibana/kibana:8.17.2  
    container_name: kibana
    ports:  
   - '5601:5601'  
    environment:  
   - ELASTICSEARCH_HOSTS=http://elasticsearch:9200  
   - ELASTICSEARCH_USERNAME=kibana_user  
   - ELASTICSEARCH_PASSWORD=you_password  
    networks:  
   - elk-network  
    depends_on:  
      elasticsearch:  
        condition: service_healthy  
  
volumes:
  elasticsearch-data:  
    driver: local  
  
networks:  
  elk-network:  
    driver: bridge

Conclusão

Com esta Docker Compose configuração, você pode facilmente implantar Elasticsearch e Kibana atender às suas necessidades de pesquisa, análise e visualização de dados. Personalize e estenda esta configuração para se adequar aos requisitos específicos do seu projeto!