จากบทความของ 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 ต่าง ๆ ลงไป
ทำให้ดูแลและใช้งานดีขึ้นมาบ้าง