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

