Docker Compose لـ Elasticsearch & Kibana: الإعداد والتكوين

في هذه المقالة، سنستكشف كيفية نشر  Elasticsearch  واستخدام . هذان مكونان رئيسيان من مجموعة ELK( ، Logstash،)، Kibana مما يساعدك على البحث عن البيانات وتحليلها وتصورها بشكل فعال. فيما يلي التكوينات التفصيلية وكيفية عمل كل مكون. Docker Compose Elasticsearch 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 حالة 's من خلال استدعاء  /_cluster/health  واجهة برمجة التطبيقات مع  elastic المستخدم. إذا فشلت واجهة برمجة التطبيقات في الاستجابة، فسيتم إعادة تشغيل الحاوية.

2. Kibana

أ. التكوين الأساسي

Kibana تم تكوينه للاتصال Elasticsearch والتشغيل في حاوية Docker بالمعلمات التالية:

  • الصورة: يتم استخدام الصورة  الرسمية Kibana ، الإصدار  8.17.2.

  • Elasticsearch الاتصال: Elasticsearch تم تعيين العنوان   على http://elasticsearch:9200.

  • المصادقة:  يستخدم Kibana  kibana_user  كلمة المرور  YVG6PKplG6ugGOw  للاتصال بـ Elasticsearch.

ب. Ports والشبكات

  • Ports: يتم تعيين  المنفذ  5601  من الحاوية إلى المضيف للوصول إلى Kibana الواجهة.

  • الشبكات:  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 احتياجات البحث عن البيانات وتحليلها وتصورها. يمكنك تخصيص هذا التكوين وتوسيعه ليناسب المتطلبات المحددة لمشروعك!