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 สถานะของ API โดยเรียกใช้งาน  /_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 อินเทอร์เฟซ

  • เครือข่าย:  Kibana เชื่อมต่อกับ  elk-network.

ค. การพึ่งพาอาศัย Elasticsearch

Kibana จะเริ่มต้นเมื่อพร้อมเท่านั้น Elasticsearch เพื่อให้แน่ใจว่าการเชื่อมต่อระหว่างทั้งสองบริการประสบความสำเร็จ

3. ปริมาณและเครือข่าย

ก. ปริมาตร

  • elasticsearch-data:  ไดรฟ์นี้ใช้สำหรับจัดเก็บ Elasticsearch ข้อมูล โดยรับรองว่าข้อมูลจะคงอยู่แม้ว่าคอนเทนเนอร์จะถูกลบไปแล้วก็ตาม

ข. เครือข่าย

  • เครือข่ายเอลค์:  เครือ  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
c. การสร้าง 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 ตอบสนองความต้องการด้านการค้นหา การวิเคราะห์ และการแสดงภาพข้อมูลได้อย่างง่ายดาย ปรับแต่งและขยายการกำหนดค่านี้ให้เหมาะกับความต้องการเฉพาะของโครงการของคุณ!