Docker Compose dla Elasticsearch & Kibana: Konfiguracja i konfiguracja

W tym artykule przyjrzymy się sposobowi wdrażania  Elasticsearch  i  Kibana używania Docker Compose. Są to dwa kluczowe komponenty ELK Stack( Elasticsearch, Logstash, Kibana), pomagające w efektywnym wyszukiwaniu, analizowaniu i wizualizacji danych. Poniżej przedstawiono szczegółowe konfiguracje i sposób działania każdego komponentu.

1. Elasticsearch

a. Podstawowa konfiguracja

Elasticsearch jest skonfigurowany do działania w kontenerze Docker z następującymi parametrami:

  • Obraz: Użyto  oficjalnego Elasticsearch obrazu w wersji . 8.17.2

  • Tryb pojedynczego węzła:  włączany za pomocą zmiennej środowiskowej  discovery.type=single-node.

  • Bezpieczeństwo:  zabezpieczenia X-Pack są włączone( xpack.security.enabled=true), a hasło użytkownika  elastic  jest ustawione na  YVG6PKplG6ugGOw.

  • Sieć:  Elasticsearch nasłuchuje na wszystkich interfejsach sieciowych( network.host=0.0.0.0).

  • Pamięć JVM:  skonfigurowana za pomocą  -Xms1g  (pamięci początkowej) i  -Xmx1g  (pamięci maksymalnej).

zespół Ports ​ Volumes

  • Ports:  Port  9200  (HTTP) i  9300  (komunikacja wewnętrzna) są mapowane z kontenera na hosta.

  • Volumes:  Dane Elasticsearch są przechowywane w  elasticsearch-data  woluminie.

c. Kontrola stanu zdrowia

Healthcheck jest skonfigurowany do monitorowania Elasticsearch statusu poprzez wywołanie  /_cluster/health  API z  elastic użytkownikiem. Jeśli API nie odpowie, kontener zostanie uruchomiony ponownie.

2. Kibana

a. Podstawowa konfiguracja

Kibana jest skonfigurowany do łączenia się Elasticsearch i uruchamiania w kontenerze Docker z następującymi parametrami:

  • Obraz: Użyto  oficjalnego Kibana obrazu w wersji . 8.17.2

  • Elasticsearch Połączenie:  Adres Elasticsearch jest ustawiony na  http://elasticsearch:9200.

  • Uwierzytelnianie:  Kibana używa  kibana_user  hasła  YVG6PKplG6ugGOw  do łączenia się z Elasticsearch.

b. Ports i sieci

  • Ports:  Port  5601  jest mapowany z kontenera na hosta w celu uzyskania dostępu do Kibana interfejsu.

  • Sieci:  Kibana jest połączona z  elk-network.

c. Zależność od Elasticsearch

Kibana rozpoczyna się dopiero po zakończeniu Elasticsearch gotowości, zapewniając prawidłowe połączenie między dwiema usługami.

3. Głośność i sieć

a. Objętość

  • elasticsearch-data:  Ten wolumin służy do przechowywania Elasticsearch danych, co zapewnia trwałość danych nawet w przypadku usunięcia kontenera.

b. Sieć

  • elk-network:  Sieć  bridge  stworzona w celu łączenia Elasticsearch usług Kibana.


4. Jak używać

a. Uruchomienie usług

Aby rozpocząć Elasticsearch, Kibana uruchom następujące polecenie:

docker-compose up -d

b. Tworzenie Kibana użytkownika(jeśli to konieczne)

Jeśli chcesz użyć dedykowanego użytkownika Kibana, możesz go utworzyć za pomocą następującego polecenia:

docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
c. Tworzenie Token(jeśli używasz tokenów)

Aby użyć token zamiast hasła, możesz je utworzyć za pomocą następującego polecenia:

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

5. Rozwiązywanie problemów

  • Jeśli napotkasz błędy, możesz sprawdzić logi kontenera za pomocą:

    docker logs elasticsearch 
    docker logs kibana
  • Aby ponownie uruchomić Kibana:

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

Pełna zawartość Docker Compose pliku

Poniżej znajduje się pełna zawartość pliku  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

Wniosek

Dzięki tej Docker Compose konfiguracji możesz łatwo wdrożyć Elasticsearch i Kibana obsługiwać swoje potrzeby wyszukiwania, analizy i wizualizacji danych. Dostosuj i rozszerz tę konfigurację, aby dopasować ją do konkretnych wymagań swojego projektu!