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.2Tryb 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żytkownikaelasticjest ustawione naYVG6PKplG6ugGOw.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) i9300(komunikacja wewnętrzna) są mapowane z kontenera na hosta.Volumes: Dane Elasticsearch są przechowywane w
elasticsearch-datawoluminie.
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.2Elasticsearch Połączenie: Adres Elasticsearch jest ustawiony na
http://elasticsearch:9200.Uwierzytelnianie: Kibana używa
kibana_userhasłaYVG6PKplG6ugGOwdo łączenia się z Elasticsearch.
b. Ports i sieci
Ports: Port
5601jest 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ć
bridgestworzona 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
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 kibanaAby ponownie uruchomić 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!

