จากบทความของ Elastic เรื่อง Pruning incoming log volumes with Elastic
อธิบายถึงการเก็บข้อมูลใน Elastic stack ว่า
ข้อมูลที่จัดเก็บนั้นมีจำนวนที่เยอะ รูปแบบที่หลากหลาย
ส่งผลให้ระบบมีปัญหาในการจัดเก็บ การประมวลผล หรือ ใช้งาน
ดังนั้น สิ่งหนึ่งที่เราควรทำก่อนคือ
รู้ว่าข้อมูลอะไรบ้างที่ใช้ และ ไม่ใช้งานบ้าง
เพื่อที่จะเก็บเท่าที่ใช้งานเท่านั้น มิใช่เก็บไปเสียทุกอย่าง
ดังนั้นมาดูกับว่าในบทความข้างต้นแนะนำวิธีการอย่างไรบ้าง ?
- Beats
- Logstash
- Elastic Agent
- Ingest pipeline
- OpenTelemetry collector
ตัวอย่างที่ 1 Beats
ในส่วนของ processor สามารถทำการ drop หรือลบพวก event และ field/property ต่าง ๆ ได้
เช่น
ตัวอย่างที่ 2 Logstash
ใน Logstash จะมีส่วนการทำงาน filter สำหรับกรองข้อมูลต่าง ๆ
ทั้งเพิ่ม เปลี่ยน และ ลบ รวมทั้งการ transform ข้อมูลไปยังรูปแบบต่าง ๆ ที่ต้องการ
หรือจำนวน % ข้อมูลที่จะจัดเก็บได้อีกด้วย
แต่ Logstash นั้นจะใช้ resource เช่น CPU และ Memory เยอะมาก ๆ ต้องใช้อย่างระมัดระวัง
ตัวอย่างที่ 3 Ingest Pipeline
เป็นอีก feature ของ Node ใน Elasticsearch
สามารถเขียน ingest pipeline ได้ หรือ เทียบง่าย ๆ คือ store procedure ใน database นั่นเอง
ซึ่งสามารถเขียนในส่วนของ processor โดยเขียนด้วย Painless script ดังนี้
ดังนั้นแนะนำให้กลับมาดูข้อมูลว่าตอนนี้เป็นอย่างไร
ใช้อะไร ก็เก็บสิ่งนั้น
อะไรไม่ใช้งานก็ควรเอาออกไป
น่าจะเป็นอีกทางเลือกที่น่าสนใจ
เพื่อลดขนาดของข้อมูล
เพื่อลดการใช้ resource ต่าง ๆ ลงไป
ทำให้ดูแลและใช้งานดีขึ้นมาบ้าง