Docker Compose za Elasticsearch & Kibana: Postavljanje i konfiguracija

U ovom ćemo članku istražiti kako implementirati  Elasticsearch  i  Kibana koristiti Docker Compose. Ovo su dvije ključne komponente ELK Stacka( Elasticsearch, Logstash, Kibana), koje vam pomažu u učinkovitom pretraživanju, analizi i vizualizaciji podataka. Ispod su detaljne konfiguracije i način rada svake komponente.

1. Elasticsearch

a. Osnovna konfiguracija

Elasticsearch je konfiguriran za rad u Docker spremniku sa sljedećim parametrima:

  • Slika: Koristi se  službena Elasticsearch slika, verzija  8.17.2.

  • Način rada s jednim čvorom:  Omogućeno putem varijable okruženja  discovery.type=single-node.

  • Sigurnost:  X-Pack sigurnost je omogućena( xpack.security.enabled=true), a lozinka za  elastic  korisnika postavljena je na  YVG6PKplG6ugGOw.

  • Mreža:  Elasticsearch sluša sva mrežna sučelja( network.host=0.0.0.0).

  • JVM memorija:  Konfigurirano s  -Xms1g  (početna memorija) i  -Xmx1g  (maksimalna memorija).

b. Ports i Volumes

  • Ports:  Port  9200  (HTTP) i  9300  (interna komunikacija) preslikavaju se iz spremnika u host.

  • Volumes:  Elasticsearch podaci pohranjeni su u  elasticsearch-data  volumenu.

c. Zdravstveni pregled

Healthcheck je postavljen za praćenje Elasticsearch statusa pozivanjem  /_cluster/health  API-ja s  elastic korisnikom. Ako API ne odgovori, spremnik će se ponovno pokrenuti.

2. Kibana

a. Osnovna konfiguracija

Kibana je konfiguriran za povezivanje Elasticsearch i rad u Docker spremniku sa sljedećim parametrima:

  • Slika: Koristi se  službena Kibana slika, verzija  8.17.2.

  • Elasticsearch Veza:  adresa Elasticsearch je postavljena na  http://elasticsearch:9200.

  • Autentifikacija:  Kibana koristi  kibana_user  s lozinkom  YVG6PKplG6ugGOw  za povezivanje s Elasticsearch.

b. Ports i mreže

  • Ports:  Port  5601  se preslikava iz spremnika u host za pristup Kibana sučelju.

  • Mreže:  Kibana je spojena na  elk-network.

c. Ovisnost o Elasticsearch

Kibana počinje tek nakon što Elasticsearch je spreman, osiguravajući uspješnu vezu između dvije usluge.

3. Volumen i mreža

a. Volumen

  • elasticsearch-data:  Ovaj se volumen koristi za pohranu Elasticsearch podataka, osiguravajući postojanost podataka čak i ako se spremnik izbriše.

b. Mreža

  • elk-mreža:  Mreža  bridge  je stvorena za povezivanje Elasticsearch i Kibana usluge.


4. Kako koristiti

a. Pokretanje usluga

Za pokretanje Elasticsearch i Kibana, pokrenite sljedeću naredbu:

docker-compose up -d

b. Stvaranje Kibana korisnika(ako je potrebno)

Ako želite koristiti namjenskog korisnika za Kibana, možete ga stvoriti sljedećom naredbom:

docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
c. Stvaranje Token(ako se koriste tokeni)

Za korištenje token umjesto lozinke, možete je stvoriti sljedećom naredbom:

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

5. Rješavanje problema

  • Ako naiđete na pogreške, možete provjeriti zapisnike spremnika pomoću:

    docker logs elasticsearch 
    docker logs kibana
  • Za ponovno pokretanje Kibana:

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

Puni sadržaj Docker Compose datoteke

Ispod je puni sadržaj  docker-compose-els.yml  datoteke:

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

Zaključak

S ovom Docker Compose konfiguracijom možete jednostavno implementirati Elasticsearch i Kibana služiti vašim potrebama pretraživanja, analize i vizualizacije podataka. Prilagodite i proširite ovu konfiguraciju kako bi odgovarala specifičnim zahtjevima vašeg projekta!