Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

บันทึกการ pre-processing ข้อมูลก่อนจัดเก็บใน Elasticsearch

$
0
0

จากบทความของ Elastic เรื่อง Pruning incoming log volumes with Elastic
อธิบายถึงการเก็บข้อมูลใน Elastic stack ว่า
ข้อมูลที่จัดเก็บนั้นมีจำนวนที่เยอะ รูปแบบที่หลากหลาย
ส่งผลให้ระบบมีปัญหาในการจัดเก็บ การประมวลผล หรือ ใช้งาน
ดังนั้น สิ่งหนึ่งที่เราควรทำก่อนคือ
รู้ว่าข้อมูลอะไรบ้างที่ใช้ และ ไม่ใช้งานบ้าง
เพื่อที่จะเก็บเท่าที่ใช้งานเท่านั้น มิใช่เก็บไปเสียทุกอย่าง

ดังนั้นมาดูกับว่าในบทความข้างต้นแนะนำวิธีการอย่างไรบ้าง ?

  • Beats
  • Logstash
  • Elastic Agent
  • Ingest pipeline
  • OpenTelemetry collector

ตัวอย่างที่ 1 Beats

ในส่วนของ processor สามารถทำการ drop หรือลบพวก event และ field/property ต่าง ๆ ได้
เช่น

[gist id="51071b528cb90d66595cd836aad13cba" file="filebeat.yml"]

ตัวอย่างที่ 2 Logstash

ใน Logstash จะมีส่วนการทำงาน filter สำหรับกรองข้อมูลต่าง ๆ
ทั้งเพิ่ม เปลี่ยน และ ลบ รวมทั้งการ transform ข้อมูลไปยังรูปแบบต่าง ๆ ที่ต้องการ
หรือจำนวน % ข้อมูลที่จะจัดเก็บได้อีกด้วย
แต่ Logstash นั้นจะใช้ resource เช่น CPU และ Memory เยอะมาก ๆ ต้องใช้อย่างระมัดระวัง

[gist id="51071b528cb90d66595cd836aad13cba" file="logstash.conf"]

ตัวอย่างที่ 3 Ingest Pipeline

เป็นอีก feature ของ Node ใน Elasticsearch
สามารถเขียน ingest pipeline ได้ หรือ เทียบง่าย ๆ คือ store procedure ใน database นั่นเอง
ซึ่งสามารถเขียนในส่วนของ processor โดยเขียนด้วย Painless script ดังนี้

[gist id="51071b528cb90d66595cd836aad13cba" file="3.txt"]

ดังนั้นแนะนำให้กลับมาดูข้อมูลว่าตอนนี้เป็นอย่างไร
ใช้อะไร ก็เก็บสิ่งนั้น
อะไรไม่ใช้งานก็ควรเอาออกไป
น่าจะเป็นอีกทางเลือกที่น่าสนใจ
เพื่อลดขนาดของข้อมูล
เพื่อลดการใช้ resource ต่าง ๆ ลงไป
ทำให้ดูแลและใช้งานดีขึ้นมาบ้าง


Viewing all articles
Browse latest Browse all 1997

Trending Articles