Docker Compose & Elasticsearch: Kibana დაყენება და კონფიგურაცია

ამ სტატიაში ჩვენ განვიხილავთ როგორ განვათავსოთ  Elasticsearch  და  Kibana გამოიყენოთ Docker Compose. ეს არის ELK Stack-ის ორი ძირითადი კომპონენტი( Elasticsearch, Logstash, Kibana), რომელიც გეხმარებათ მონაცემების ეფექტურად ძიებაში, გაანალიზებაში და ვიზუალიზაციაში. ქვემოთ მოცემულია დეტალური კონფიგურაციები და როგორ მუშაობს თითოეული კომპონენტი.

1. Elasticsearch

ა. ძირითადი კონფიგურაცია

Elasticsearch კონფიგურირებულია Docker კონტეინერში გასაშვებად შემდეგი პარამეტრებით:

  • გამოსახულება: გამოყენებულია  ოფიციალური Elasticsearch სურათი, ვერსია . 8.17.2

  • ერთი კვანძის რეჟიმი:  ჩართულია გარემოს ცვლადის მეშვეობით  discovery.type=single-node.

  • უსაფრთხოება:  X-Pack-ის უსაფრთხოება ჩართულია( xpack.security.enabled=true) და მომხმარებლისთვის პაროლი  elastic  დაყენებულია  YVG6PKplG6ugGOw.

  • ქსელი:  Elasticsearch უსმენს ქსელის ყველა ინტერფეისს( network.host=0.0.0.0).

  • JVM მეხსიერება:  კონფიგურირებულია  -Xms1g  (საწყისი მეხსიერებით) და  -Xmx1g  (მაქსიმალური მეხსიერებით).

ბ. Ports და Volumes

  • Ports:  პორტი  9200  (HTTP) და  9300  (შიდა კომუნიკაცია) დატანილია კონტეინერიდან ჰოსტამდე.

  • Volumes:  Elasticsearch მონაცემები ინახება მოცულობაში  elasticsearch-data  .

გ. ჯანმრთელობის შემოწმება

ჯანმრთელობის შემოწმება დაყენებულია Elasticsearch მომხმარებლის სტატუსის  მონიტორინგისთვის /_cluster/health  API-ზე  დარეკვით elastic. თუ API ვერ პასუხობს, კონტეინერი გადაიტვირთება.

2. Kibana

ა. ძირითადი კონფიგურაცია

Kibana Elasticsearch კონფიგურირებულია Docker კონტეინერში დასაკავშირებლად და გასაშვებად შემდეგი პარამეტრებით:

  • გამოსახულება: გამოყენებულია  ოფიციალური Kibana სურათი, ვერსია . 8.17.2

  • Elasticsearch კავშირი:  მისამართი Elasticsearch დაყენებულია  http://elasticsearch:9200.

  • ავთენტიფიკაცია:  Kibana იყენებს  kibana_user  პაროლს  YVG6PKplG6ugGOw  , რომ დაუკავშირდეს Elasticsearch.

ბ. Ports და ქსელები

  • Ports:  პორტი  5601  დატანილია კონტეინერიდან ჰოსტამდე Kibana ინტერფეისის წვდომისთვის.

  • ქსელები:  კიბანა დაკავშირებულია  elk-network.

გ. დამოკიდებულებაზე Elasticsearch

Kibana იწყება მხოლოდ Elasticsearch მზადყოფნის შემდეგ, რაც უზრუნველყოფს ორ სერვისს შორის წარმატებულ კავშირს.

3. მოცულობა და ქსელი

ა. მოცულობა

  • elasticsearch-data:  ეს ტომი გამოიყენება Elasticsearch მონაცემების შესანახად, რაც უზრუნველყოფს მონაცემთა მდგრადობას კონტეინერის წაშლის შემთხვევაშიც კი.

ბ. ქსელი

  • elk-network:  ქსელი  bridge  იქმნება დასაკავშირებლად Elasticsearch და Kibana სერვისებისთვის.


4. როგორ გამოვიყენოთ

ა. სერვისების დაწყება

დასაწყებად Elasticsearch და Kibana აწარმოეთ შემდეგი ბრძანება:

docker-compose up -d

ბ. მომხმარებლის შექმნა Kibana(საჭიროების შემთხვევაში)

თუ გსურთ გამოიყენოთ გამოყოფილი მომხმარებელი Kibana, შეგიძლიათ შექმნათ ერთი შემდეგი ბრძანებით:

docker exec -it elasticsearch /bin/elasticsearch-users useradd kibana_user -p you_password-r kibana_system
გ. შექმნა Token(თუ იყენებთ ჟეტონებს)

პაროლის ნაცვლად გამოსაყენებლად token, შეგიძლიათ შექმნათ ის შემდეგი ბრძანებით:

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

5. პრობლემების მოგვარება

  • თუ შეცდომებს წააწყდებით, შეგიძლიათ შეამოწმოთ კონტეინერის ჟურნალი:

    docker logs elasticsearch 
    docker logs kibana
  • გადატვირთვისთვის Kibana:

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

Docker Compose ფაილის სრული შინაარსი

ქვემოთ მოცემულია ფაილის სრული შინაარსი  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

დასკვნა

ამ Docker Compose კონფიგურაციით, თქვენ შეგიძლიათ მარტივად განათავსოთ Elasticsearch და Kibana მოემსახუროთ თქვენი მონაცემთა ძიების, ანალიზისა და ვიზუალიზაციის საჭიროებებს. დააკონფიგურირეთ და გააფართოვეთ ეს კონფიგურაცია თქვენი პროექტის სპეციფიკური მოთხოვნების შესაბამისად!