Docker Compose для Elasticsearch & Kibana: Настройка и конфигурация

В этой статье мы рассмотрим, как развернуть  Elasticsearch  и  Kibana использовать Docker Compose. Это два ключевых компонента стека ELK( Elasticsearch, Logstash, Kibana), помогающих вам эффективно искать, анализировать и визуализировать данные. Ниже приведены подробные конфигурации и то, как работает каждый компонент.

1. Elasticsearch

а. Базовая конфигурация

Elasticsearch настроен для работы в контейнере Docker со следующими параметрами:

  • Изображение: Используется  официальное Elasticsearch изображение версии . 8.17.2

  • Режим одного узла:  включается через переменную среды  discovery.type=single-node.

  • Безопасность:  включена безопасность X-Pack( xpack.security.enabled=true), а пароль пользователя  elastic  установлен на  YVG6PKplG6ugGOw.

  • Сеть:  Elasticsearch прослушивает все сетевые интерфейсы( network.host=0.0.0.0).

  • Память JVM:  сконфигурирована с  -Xms1g  (начальная память) и  -Xmx1g  (максимальная память).

группа Ports ​ Volumes

  • Ports:  Порт  9200  (HTTP) и  9300  (внутренняя связь) сопоставляются от контейнера к хосту.

  • Volumes:  Данные Elasticsearch хранятся в  elasticsearch-data  томе.

c. Проверка здоровья

Healthcheck настроен для мониторинга Elasticsearch состояния 's путем вызова  /_cluster/health  API с  elastic пользователем. Если API не отвечает, контейнер перезапустится.

2. Kibana

а. Базовая конфигурация

Kibana настроен на подключение Elasticsearch и запуск в контейнере Docker со следующими параметрами:

  • Изображение: Используется  официальное Kibana изображение версии . 8.17.2

  • Elasticsearch Подключение:  Адрес Elasticsearch установлен на  http://elasticsearch:9200.

  • Аутентификация:  Kibana использует  kibana_user  пароль  YVG6PKplG6ugGOw  для подключения к Elasticsearch.

б. Ports и сети

  • Ports:  Порт  5601  сопоставляется с контейнера на хост для доступа к Kibana интерфейсу.

  • Сети:  Kibana подключена к  elk-network.

в) Зависимость от Elasticsearch

Kibana запускается только после Elasticsearch готовности, обеспечивая успешное соединение между двумя службами.

3. Объем и сеть

а. Объем

  • elasticsearch-data:  Этот том используется для хранения Elasticsearch данных, обеспечивая сохранность данных даже в случае удаления контейнера.

б) Сеть

  • elk-network:  Сеть  bridge  создана для подключения Elasticsearch и Kibana предоставления услуг.


4. Как использовать

а. Запуск служб

Для запуска Elasticsearch выполните Kibana следующую команду:

docker-compose up -d

б) Создание Kibana пользователя(при необходимости)

Если вы хотите использовать отдельного пользователя для Kibana, вы можете создать его с помощью следующей команды:

docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
в. Создание Token(при использовании токенов)

Чтобы использовать token вместо пароля, вы можете создать его с помощью следующей команды:

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

5. Устранение неполадок

  • Если вы столкнулись с ошибками, вы можете проверить журналы контейнера с помощью:

    docker logs elasticsearch 
    docker logs kibana
  • Для перезапуска Kibana:

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

Полное содержимое Docker Compose файла

Ниже приведено полное содержимое файла  docker-compose-els.yml  :

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

Заключение

С этой Docker Compose конфигурацией вы можете легко развернуть Elasticsearch и Kibana обслуживать ваши потребности в поиске, анализе и визуализации данных. Настройте и расширьте эту конфигурацию, чтобы она соответствовала конкретным требованиям вашего проекта!