Docker Compose za Elasticsearch & Kibana: nastavitev in konfiguracija

V tem članku bomo raziskali, kako uvesti  Elasticsearch  in  Kibana uporabljati Docker Compose. To sta dve ključni komponenti sklada ELK( Elasticsearch, Logstash, Kibana), ki vam pomagata učinkovito iskati, analizirati in vizualizirati podatke. Spodaj so podrobne konfiguracije in delovanje posamezne komponente.

1. Elasticsearch

a. Osnovna konfiguracija

Elasticsearch je konfiguriran za izvajanje v vsebniku Docker z naslednjimi parametri:

  • Slika: uporabljena je  uradna Elasticsearch slika, različica  8.17.2.

  • Način z enim vozliščem:  omogočeno prek spremenljivke okolja  discovery.type=single-node.

  • Varnost:  varnost X-Pack je omogočena( xpack.security.enabled=true), geslo za  elastic  uporabnika pa je nastavljeno na  YVG6PKplG6ugGOw.

  • Omrežje:  Elasticsearch posluša vse omrežne vmesnike( network.host=0.0.0.0).

  • Pomnilnik JVM:  konfiguriran z  -Xms1g  (začetni pomnilnik) in  -Xmx1g  (največji pomnilnik).

b. Ports in Volumes

  • Ports:  Vrata  9200  (HTTP) in  9300  (notranja komunikacija) so preslikana iz vsebnika v gostitelja.

  • Volumes:  Podatki Elasticsearch so shranjeni v  elasticsearch-data  nosilcu.

c. Zdravstveni pregled

Zdravstveni pregled je nastavljen za spremljanje Elasticsearch statusa s klicem  /_cluster/health  API-ja z  elastic uporabnikom. Če se API ne odzove, se vsebnik znova zažene.

2. Kibana

a. Osnovna konfiguracija

Kibana je konfiguriran za povezavo Elasticsearch in izvajanje v vsebniku Docker z naslednjimi parametri:

  • Slika: uporabljena je  uradna Kibana slika, različica  8.17.2.

  • Elasticsearch Povezava:  naslov Elasticsearch je nastavljen na  http://elasticsearch:9200.

  • Preverjanje pristnosti:  Kibana uporablja  kibana_user  z geslom  YVG6PKplG6ugGOw  za povezavo z Elasticsearch.

b. Ports in omrežja

  • Ports:  Vrata  5601  so preslikana iz vsebnika v gostitelja za dostop do Kibana vmesnika.

  • Omrežja:  Kibana je povezana z  elk-network.

c. Odvisnost od Elasticsearch

Kibana se zažene šele, ko Elasticsearch je pripravljen, kar zagotavlja uspešno povezavo med obema storitvama.

3. Glasnost in omrežje

a. Glasnost

  • elasticsearch-data:  Ta nosilec se uporablja za shranjevanje Elasticsearch podatkov, kar zagotavlja obstojnost podatkov, tudi če je vsebnik izbrisan.

b. Omrežje

  • elk-omrežje:  Omrežje  bridge  je ustvarjeno za povezovanje Elasticsearch in Kibana storitve.


4. Kako uporabljati

a. Zagon storitev

Za zagon Elasticsearch in Kibana zaženite ta ukaz:

docker-compose up -d

b. Ustvarjanje Kibana uporabnika(če je potrebno)

Če želite uporabiti namenskega uporabnika za Kibana, ga lahko ustvarite z naslednjim ukazom:

docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
c. Ustvarjanje Token(če uporabljate žetone)

Če želite uporabiti token namesto gesla, ga lahko ustvarite z naslednjim ukazom:

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

5. Odpravljanje težav

  • Če naletite na napake, lahko preverite dnevnike vsebnika z:

    docker logs elasticsearch 
    docker logs kibana
  • Za ponovni zagon Kibana:

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

Celotna vsebina Docker Compose datoteke

Spodaj je celotna vsebina datoteke  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

Zaključek

S to Docker Compose konfiguracijo lahko preprosto uvedete Elasticsearch in Kibana služite svojim potrebam po iskanju, analizi in vizualizaciji podatkov. Prilagodite in razširite to konfiguracijo, da bo ustrezala posebnim zahtevam vašega projekta!