Docker Compose pro Elasticsearch & Kibana: Nastavení a konfigurace

V tomto článku prozkoumáme, jak nasadit  Elasticsearch  a  Kibana používat Docker Compose. Toto jsou dvě klíčové součásti ELK Stack( Elasticsearch, Logstash, Kibana), které vám pomáhají efektivně vyhledávat, analyzovat a vizualizovat data. Níže jsou uvedeny podrobné konfigurace a jak jednotlivé komponenty fungují.

1. Elasticsearch

A. Základní konfigurace

Elasticsearch je nakonfigurován pro spuštění v kontejneru Docker s následujícími parametry:

  • Obrázek: Používá se  oficiální Elasticsearch obrázek, verze . 8.17.2

  • Režim jednoho uzlu:  Povoleno prostřednictvím proměnné prostředí  discovery.type=single-node.

  • Zabezpečení:  Zabezpečení X-Pack je povoleno( xpack.security.enabled=true) a heslo pro  elastic  uživatele je nastaveno na  YVG6PKplG6ugGOw.

  • Síť:  Elasticsearch naslouchá na všech síťových rozhraních( network.host=0.0.0.0).

  • Paměť JVM:  Nakonfigurováno s  -Xms1g  (počáteční paměť) a  -Xmx1g  (maximální paměť).

b. Ports a Volumes

  • Ports:  Port  9200  (HTTP) a  9300  (interní komunikace) jsou mapovány z kontejneru na hostitele.

  • Volumes:  Data Elasticsearch jsou uložena ve  elasticsearch-data  svazku.

C. Healthcheck

Kontrola stavu je nastavena tak, aby monitorovala Elasticsearch stav pomocí volání rozhraní  /_cluster/health  API s  elastic uživatelem. Pokud rozhraní API neodpoví, kontejner se restartuje.

2. Kibana

A. Základní konfigurace

Kibana je nakonfigurován pro připojení Elasticsearch a spuštění v kontejneru Docker s následujícími parametry:

  • Obrázek: Používá se  oficiální Kibana obrázek, verze . 8.17.2

  • Elasticsearch Připojení:  Adresa Elasticsearch je nastavena na  http://elasticsearch:9200.

  • Autentizace:  Kibana používá heslo  kibana_user  s heslem  YVG6PKplG6ugGOw  pro připojení k Elasticsearch.

b. Ports a sítě

  • Ports:  Port  5601  je mapován z kontejneru na hostitele pro přístup k Kibana rozhraní.

  • Sítě:  Kibana je připojena k  elk-network.

C. Závislost na Elasticsearch

Kibana spustí se až poté, co Elasticsearch je připraveno, což zajišťuje úspěšné spojení mezi dvěma službami.

3. Hlasitost a síť

A. Objem

  • elasticsearch-data:  Tento svazek se používá k ukládání Elasticsearch dat, což zajišťuje stálost dat, i když je kontejner smazán.

b. Síť

  • elk-network: bridge  Vytvoří se síť pro připojení  a  Elasticsearch služby Kibana.


4. Jak používat

A. Spuštění Služeb

Chcete-li spustit Elasticsearch a Kibana, spusťte následující příkaz:

docker-compose up -d

b. Vytvoření Kibana uživatele(v případě potřeby)

Pokud chcete použít vyhrazeného uživatele pro Kibana, můžete jej vytvořit pomocí následujícího příkazu:

docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
C. Vytvoření Token(pokud používáte tokeny)

Chcete-li místo hesla použít token a, můžete je vytvořit pomocí následujícího příkazu:

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

5. Odstraňování problémů

  • Pokud narazíte na chyby, můžete zkontrolovat protokoly kontejneru pomocí:

    docker logs elasticsearch 
    docker logs kibana
  • Chcete-li restartovat Kibana:

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

Úplný obsah Docker Compose souboru

Níže je celý obsah souboru  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

Závěr

S touto Docker Compose konfigurací můžete snadno nasadit Elasticsearch a Kibana sloužit vašim potřebám vyhledávání, analýzy a vizualizace dat. Přizpůsobte a rozšiřte tuto konfiguraci tak, aby vyhovovala specifickým požadavkům vašeho projektu!